H
hnzqw
Unregistered / Unconfirmed
GUEST, unregistred user!
主窗体为MAINFORM,两个子窗体FORM1、FORM2
在主窗体中的菜单中我用如下分法来打开子窗体:
procedure TMainForm.N3Click(Sender: TObject);
//打开FORM1的菜单,打开FORM2的菜单类同。
var
form1:tform1;
begin
form1:=tform1.create(self);
form1.show;
end;
[?] 当点上菜单先打开FORM1时再打开FORM2时,FORM2将在FORM1上。当再点菜单打开FORM1时,
[?] 判断FORM1是否已有一个实例打开,如没有则建立FORM1窗口,如有则将FORM1从FORM2后面
提到最前面。
我用如下代码替换上面的代码:
var
form1:tform1;
i,frmcount:integer;
begin
frmcount:=0;
with mainFormdo
for I := MDIChildCount-1do
wnto 0do
begin
if MDIChildren.Classname='TFORM1' then
frmcount:=frmcount+1
end;
if frmcount=0 then
begin
form1:=tform1.create(self);
//建立子窗体FORM1
form1.show;
end
else
//当FORM1有实例时,以下代码将FORM1提到其它窗口前面
begin
// SetForegroundWindow(Form1.Handle) ;
//这句出错
sendmessage(Form1.Handle,WM_ACTIVATE,0,0);
//换成这句也出错。
end;
以上是我的思路和代码。虽然可作到让窗体的一个实例运行,但可能不是好方法,
请告诉一个简单的方法;将已生成的窗体实例提前的两句为何出错呢?请赐教?
在主窗体中的菜单中我用如下分法来打开子窗体:
procedure TMainForm.N3Click(Sender: TObject);
//打开FORM1的菜单,打开FORM2的菜单类同。
var
form1:tform1;
begin
form1:=tform1.create(self);
form1.show;
end;
[?] 当点上菜单先打开FORM1时再打开FORM2时,FORM2将在FORM1上。当再点菜单打开FORM1时,
[?] 判断FORM1是否已有一个实例打开,如没有则建立FORM1窗口,如有则将FORM1从FORM2后面
提到最前面。
我用如下代码替换上面的代码:
var
form1:tform1;
i,frmcount:integer;
begin
frmcount:=0;
with mainFormdo
for I := MDIChildCount-1do
wnto 0do
begin
if MDIChildren.Classname='TFORM1' then
frmcount:=frmcount+1
end;
if frmcount=0 then
begin
form1:=tform1.create(self);
//建立子窗体FORM1
form1.show;
end
else
//当FORM1有实例时,以下代码将FORM1提到其它窗口前面
begin
// SetForegroundWindow(Form1.Handle) ;
//这句出错
sendmessage(Form1.Handle,WM_ACTIVATE,0,0);
//换成这句也出错。
end;
以上是我的思路和代码。虽然可作到让窗体的一个实例运行,但可能不是好方法,
请告诉一个简单的方法;将已生成的窗体实例提前的两句为何出错呢?请赐教?