窗口的显示 ( 积分: 50 )

  • 主题发起人 主题发起人 weicheng
  • 开始时间 开始时间
W

weicheng

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把所有要用到的窗口都在一个Form里显示

就是 在这个Form里有一些BOTTON按钮
点击一个按纽后,相应的界面显示在Form界面的一个特定位置,不是有2张界面组成,只有一界面

出现的界面要最大化
 
那很简单啊~~~你只需要在原始的form放一个panel,点不同的button去load不同的form 就ok了啊~~给你段代码参考一下
procedure LoadForm(AForm:TForm;AParentPanel: TRzPanel);
begin
with AForm do
begin
Parent := AParentPanel; //载入时的Parent Panel;
Align := alClient;
Height := AParentPanel.Height;
Width := AParentPanel.Width;
BringToFront;
Show;
SetFocus;
end;
end;
 
在原始的form放一个panel
procedure TMainForm.SetForm(Form: TForm);
begin //显示窗口
if Panel1.ControlCount = 0 then begin
Form.Parent := Panel1;
Form.BorderStyle := bsNone;
Form.WindowState := wsMaximized;
if skindata1.active then
skindata1.AddNestForm(Self, Form);
SkinData1SkinChanged(nil);
Caption := 'xxxxxxx系统-[' + Form.Caption + ']';
Form.Visible := True;
end;
end;
procedure TMainForm.CloseForm;
begin //关闭窗口
if Panel1.ControlCount > 0 then
begin
TForm(Panel1.Controls[0]).Close;
TForm(Panel1.Controls[0]).Destroy;
end;
end;

记得,显示前先关闭窗口,即:
begin
CloseForm;
SetForm(你要显示的窗口名);
end;
 
呵呵。我倒是挺想把别人的程序都在我的窗口中显示出来。。
不管是什么程序,当成一个桌面中的桌面。。。就像游戏中的窗口化功能!
 
为什么不用MDI框架呢??没弄明白。。
 
是不是还有一种比较简单一点方法啊
 
其实上面介绍的方法已经很简单,主要就是3条语句,应该不算复杂了。
Form.Parent := Panel1;
Form.BorderStyle := bsNone;
Form.WindowState := wsMaximized;
 
我已经用你们2个人的思路和方法实现了这个功能了,不过如果3个按钮重复点的话,会提示
"Stack overflow"错误,是不是我实现的思路的管理机制存在问题?
 
多人接受答案了。
 
后退
顶部