送一个将窗体显示在Panel中的函数,请教如何调用?(100分)

  • 主题发起人 主题发起人 yczjs
  • 开始时间 开始时间
Y

yczjs

Unregistered / Unconfirmed
GUEST, unregistred user!
前几天看富翁笔记中有人收藏的,但不会调用,请指点,谢谢!
procedure ShowFormAsChild(var AForm: TForm; AFormClass: TClass;
AParent: TWinControl; AlignClient:Boolean = True);
var
acW,acH:Integer;
i:Integer;
begin
if not Assigned(AForm) then
Application.CreateForm(TComponentClass(AFormClass), AForm);
for i := 0 to AParent.ControlCount -1 do
begin
if AParent.Controls is TForm then
TForm(AParent.Controls).Hide;
end;
AForm.Parent := AParent;
AForm.Left := 0;
AForm.Top := 0;
if AlignClient then
AForm.Align := alClient;
acW := AForm.ClientWidth;
acH := AForm.ClientHeight;
AForm.BorderStyle := bsNone;
AForm.Width := acW;
AForm.Height := acH;
AForm.BringToFront;
AForm.Show;
end;
 
比如要把form2 放到panel1里

ShowFormAsChild(form2,Tform2,panel1,true); //最后一个bool为窗体是否alClient
 
你既是看人家的笔记,那上面就一定有一个示例给你下载了,怎么不下回来看一下呢,我都下了呀
 
to app2001
没有看到,如果你有示例发个给我,谢谢
yczjs@yckq.com
to andy263
偶也是这样写的,但不成功
 
直接用TabcFormPanel控件得了,使用很方便
要不我发个自己做的控件。
 
var a: TForm;
begin
a := Form2;
ShowFormAsChild(a, tform, panel1, true);
end;
 
//没有发现什么问题,很正常啊!
var
a: TForm;
begin
a := nil;
ShowFormAsChild(a, tform, panel1, true);
end;
或者
var
a: TForm;
begin
a := TForm.Create(Self);
ShowFormAsChild(a, tform, panel1, true);
end;
 
to jerry529
您的方法还真没有问题,我的用法是这样
另外一个窗体的定义是
type
Tfrm1 = class(TForm)
var
frm1:Tfrm1;
就是这一句ShowFormAsChild(frm1, tfrm1, panel1, true);
提示:
[Error] Unit1.pas(62): Types of actual and formal var parameters must be identical
 
to yostgxf
好啊好啊,发邮箱:yczjs@yckq.com
万分感谢
 
已经发出,请查收
 
有那么麻烦吗? 要将一个TForm显示在一个TPanel中, 只要将Form的Parent指定为Panel就行了.
 
to brightluna
原理是这样,用函数表达一下不是更酷些
可惜偶用不了,郁闷ing
谢谢yostgxf
谁帮我解决了,另送100分,谢谢
 
发给你了,收一下看看吧
 
你没看我写的阿
先定义个tform

var a: TForm;
begin
a := Form2;
ShowFormAsChild(a, tform, panel1, true);
end;
 
谢谢app2001
to andy263
动态定义窗体的确实没问题滴
为什么偶调用另一个窗体不行呢:)
 
用manualdock就好了,为什么要自编个函数啊,
form2.manualdock(panel1,nil,alclient);
 
thanks sql1981
还有更好的方法:)
to app2001
看了一下源码
原来调用的方法是这个样子滴
ShowFormAsChild(TForm(frm1), tfrm1, panel1, true);
app2001来领分
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2460410
谢谢各位
 
后退
顶部