mdiform窗体图片显示问题

zhangyong 2003-08-23 10:26:09
mdiform窗体上有菜单,最左放了treeview1,spliter1,image1占了客户区,程序运行后图片上有印迹,如何解决?
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdsimon 2003-08-25
  • 打赏
  • 举报
回复
这需要重载子表单的constructor create()方法,覆盖loaded()和createparams()方法:
下面代码演示了一子窗体再主窗体上的一PANEL上显示:
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls,ExtCtrls,Menus;

type
TForm2 = class(TForm)
Image1: TImage;
private
FTempParent:TWinControl; //保存子窗体的父;
procedure loaded;override;
procedure CreateParams(var Params: TCreateParams); override;
{ Private declarations }
public
constructor create(AOwner:TComponent;AParent:TWinControl);reintroduce;//override;
//function GetFormMenu:TMainMenu;virtual;abstract;如果要或得窗体菜单,可覆盖该方法。
//function CanChange:Boolean;virtual;
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}


constructor TForm2.create(AOwner: TComponent; AParent: TWinControl);
begin //赋予子窗体的父,继承FORM2的构造方法;
FTempParent:=AParent;
inherited Create(Owner);
end;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=params.Style or WS_CHILD; //设置窗体的style
end;

procedure TForm2.loaded;
begin
inherited; //设置子窗体属性;
align:=alclient;
BorderStyle:=bsNone;
BorderIcons:=[];
Parent:=FTempParent;
Position:=poDefault;
end;

end.

然后在主窗提的USES中包含子窗体单元
在创建子窗体的事件中这样写:
procedure TForm1.Button1Click(Sender: TObject);
var
form2:tform;
begin
if assigned(form2) then
begin
form2:=tform2.create(self,panel1);
form2.Show;
end;
end;
wdsimon 2003-08-23
  • 打赏
  • 举报
回复
什么样的印迹啊?
你的放图片的客户区不用放一个PANEL的吗?这样的话你向右拉动时图片不会被遮住了吗?
zhangyong 2003-08-23
  • 打赏
  • 举报
回复
mdiform窗体上有菜单,最左放了treeview1,spliter1,image1占了客户区,程序运行后图片上有印迹,如何解决?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧