请教MDI子窗体在客户区显示位置的问题,以及子窗体个数控制的问题? 在MDI窗体中,我想控制每个子窗体在弹出后出现在客户区的左上角;对于子窗体的个数也有一定的限制,如果达到某个标准,则在打开新的子窗体时,就要关闭已经存在的某个子窗体,维持子窗体在一定的数量范围之内。请问如何控制! 能否给一些代码?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1. 在子窗体创建时:OnCreate中写 top:=0; left:=0;2. MDI主窗体的MdiChildCount就是目前的子窗体数:即MainForm.MdiChildCount 利用它就可以实现你的要求 to oracle_lover 好象不行 我把太理解,是这个意思吗?var Form1: TForm1;const MAXWNDNUM = 3;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin if form1.MDIChildCount < MAXWNDNUM then begin Form2 := TForm2.Create(Application); Form2.Left := 0; Form2.Top := 0; Form2.Show; end else begin Form2.Free; Form2 := TForm2.Create(Application); Form2.Left := 0; Form2.Top := 0; Form2.Show; end;end; //差不多是killlaoli(菜鸟)的意思//如果你的子窗体都是用同一个类TForm2创建的,MDI主窗体是Form1,则如下var Form1: TForm1;const MAXWNDNUM = 3; //子窗体最大数目implementationuses Unit2; //引用包含子窗体类TForm2定义的单元{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var form2:TForm2; //定义变量begin if form1.MDIChildCount < MAXWNDNUM then begin Form2:= TForm2.Create(Application); Form2.Left := 0; Form2.Top := 0; Form2.Show; end else begin //Form2.Free; //这一句有问题,Form2还没创建,怎么释放? //释放最早创建的子窗体,用Form1.MDIChildren[Form1.MDIChildCount-1].free; //释放最晚创建的子窗体,用Form1.MDIChildren[0].free; //释放当前活动子窗体,用Form1.ActiveChild.free; //或者找到符合特定条件的子窗体,并释放 Form2 := TForm2.Create(Application); Form2.Left := 0; Form2.Top := 0; Form2.Show; end;end; to oracle_lover(数据库情人) 呵呵,学习! 如何自动刷新数据 如何监控oracle数据库是否完全启动起来了? 奇怪的现象,有关 Button Click FastReport 的几个小问题 怎样把注册表中的Key及它下面的subKey形成导出文件,再把导出文件导进注册表 DBGrid中的某列能显示图片吗? 快帮忙......... ***英文单词的音标怎么处理****** 开机画面的问题? 难道老大们没有碰到过这样的怪问题(BDE/ACCESS),我.... 好书共享 又散分
top:=0;
left:=0;2. MDI主窗体的MdiChildCount就是目前的子窗体数:即MainForm.MdiChildCount
利用它就可以实现你的要求
好象不行
Form1: TForm1;
const
MAXWNDNUM = 3;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
if form1.MDIChildCount < MAXWNDNUM then
begin
Form2 := TForm2.Create(Application);
Form2.Left := 0;
Form2.Top := 0;
Form2.Show;
end
else
begin
Form2.Free;
Form2 := TForm2.Create(Application);
Form2.Left := 0;
Form2.Top := 0;
Form2.Show;
end;
end;
//如果你的子窗体都是用同一个类TForm2创建的,MDI主窗体是Form1,则如下
var
Form1: TForm1;
const
MAXWNDNUM = 3; //子窗体最大数目implementationuses Unit2; //引用包含子窗体类TForm2定义的单元{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
form2:TForm2; //定义变量
begin
if form1.MDIChildCount < MAXWNDNUM then
begin
Form2:= TForm2.Create(Application);
Form2.Left := 0;
Form2.Top := 0;
Form2.Show;
end
else
begin
//Form2.Free; //这一句有问题,Form2还没创建,怎么释放?
//释放最早创建的子窗体,用Form1.MDIChildren[Form1.MDIChildCount-1].free;
//释放最晚创建的子窗体,用Form1.MDIChildren[0].free;
//释放当前活动子窗体,用Form1.ActiveChild.free;
//或者找到符合特定条件的子窗体,并释放
Form2 := TForm2.Create(Application);
Form2.Left := 0;
Form2.Top := 0;
Form2.Show;
end;
end;
呵呵,学习!