菜鸟的MDI窗口编程控制子窗口位置求救(100分)

  • 主题发起人 主题发起人 天空还下着沙
  • 开始时间 开始时间

天空还下着沙

Unregistered / Unconfirmed
GUEST, unregistred user!
Application.CreateForm(TFormChild_1, FormChild_1);
with FormChild_1 do
begin
Top := 0;
Left := 0;
Width := Frm_main.ClientWidth - 4;
Height := Frm_main.ClientHeight - Frm_main.CoolBar_Top.Height - 4;
Show;
end;

为了控制子窗口最大化,我需要在所有菜单单击事件里添加如上代码。
但不知怎么写成一个过程,然后只需传入两个参数,像第一行一样传入类名和实例名,即可。
求哪位高手指点。请写详细些,所有积分只给一位大侠,见谅。
 
FormChild_1.WindowState := wsMaximized 就可以最大化了吧
 
为什么不建立一个基类如TYourForm,包含这段代码,然后继承他呢?
 
procedure max_and_show(FormClass: TFormClass;
var Reference);
begin
Application.CreateForm(Reference, FormClass);
with Reference do
begin
Top := 0;
Left := 0;
Width := Frm_main.ClientWidth - 4;
Height := Frm_main.ClientHeight - Frm_main.CoolBar_Top.Height - 4;
Show;
end;
end;
 
to: pipi哥
procedure max_and_show(FormClass: TFormClass;
var Reference);
第二个参数没错吗?好像还不行耶
运行到这行就出错了
with Reference do
 
哦,反了
Application.CreateForm(FormClass,Reference);
 
555555555555555555,还是不行呀。
procedure max_and_show(FormClass: TFormClass;
var Reference);
//这第二个参数没有数据类型呀
begin
Application.CreateForm(FormClass, Reference);
with Reference do
//这行通不过
begin
Top := 0;
Left := 0;
Width := Frm_main.ClientWidth - 4;
Height := Frm_main.ClientHeight - Frm_main.CoolBar_Top.Height - 4;
Show;
end;
end;

编译信息:record, object or class type required.
 
這樣看看:
type zxbform=^tform;
procedure max_and_show(FormClass: TFormClass;
Reference:zxbform);
begin
Application.CreateForm(FormClass, Reference^);
with Reference^ do
begin
Top := 0;
Left := 0;
Width := Frm_main.ClientWidth - 4;
Height := Frm_main.ClientHeight - Frm_main.CoolBar_Top.Height - 4;
Show;
end;
end;

注意:因為引用了窗口指針,調用時得,假設調用窗體名為form1.
則:max_and_show(Tform1,@form1);
//在窗體名前不要少了@.
 
to zxb200:
我没有试您的代码,我已经做好了。是做了一个基类,其它的窗口都从这个基类派生的。
to All:
谢谢。
分数不多,各位前辈不要嫌弃
 
with Reference as TForm do

或者
with TForm(Reference) do

 
多人接受答案了。
 
后退
顶部