我这样写错在哪了:
procedure Mainfrm.N1Click(Sender: TObject);
var childfrm1:Tchildfrm1;
begin
if childfrm1.WindowState =Active then //这一行active是我加的,因该如何写
if childfrm1.WindowState =wsMinimized then
ShowWindow(childfrm1.Handle ,SW_SHOWNORMAL)
if (not childfrm1.Visible ) then //打开,但不可见
childfrm1.Visible :=True;
childfrm1.BringToFront;
childfrm1.SetFocus ;
Exit;
end;
else
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show ;
以上代码有问题吗?
9 个解决方案
#1
childfrm1:Tchildfrm1; 声明为全局变量
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
#2
var
form:Tform2;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form=nil then //也可写成if not Assigned(form) then
begin
form:=Tform2.Create(application);
end;
else
begin
if form.WindowState=wsMinimized then
begin
ShowWindow(form.Handle,SW_SHOWNORMAL);
if (not form.Visible ) then //打开,但不可见
begin
form.Visible :=True;
form.BringToFront;
form.SetFocus ;
Exit;
end;
end;
end;
form.Show;
end;
#3
var
form:Tform2;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form=nil then //也可写成if not Assigned(form) then
begin
form:=Tform2.Create(application);
end
else
begin
if form.WindowState=wsMinimized then
begin
ShowWindow(form.Handle,SW_SHOWNORMAL);
if (not form.Visible ) then //打开,但不可见
begin
form.Visible :=True;
form.BringToFront;
form.SetFocus ;
Exit;
end;
end;
end;
form.Show;
end;
#4
#5
if Application.FindComponent('childfrm1') = nil then
childfrm1 := Tchildfrm1.Create(application);
frmUserlogin.show;
childfrm1 := Tchildfrm1.Create(application);
frmUserlogin.show;
#6
上面都有了。。。不过我一般用4L这样的方法。
#7
如果不想声明为全局变量,可以通过窗口的name属性加以判断
procedure TForm1.btn1Click(Sender: TObject);
var
childfrm1:TForm2; //Tchildfrm1
i:Integer;
begin
childfrm1 := nil;
for i:=0 to Form1.MDIChildCount-1 do
if Form1.MDIChildren[i].Name = 'childfrm1' then
begin
childfrm1 := TForm2(Form1.MDIChildren[i]); //指向已经存在的窗体
Break;
end;
if not Assigned(childfrm1) then //不存在,则创建
begin
childfrm1:=TForm2.Create(Self);
childfrm1.Name := 'childfrm1';
end;
childfrm1.WindowState := wsNormal;
childfrm1.Visible := True;
childfrm1.Show;
end;
#8
childfrm1:Tchildfrm1; 声明为全局变量
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
楼上的,
不过我一般
childfrm1:Tchildfrm1; 声明为全局变量
if (childfrm1=nil)then
childfrm1:=TchildFrm.create(nil);
childfrm1.show();
d对了我看好多childfrm1:=TchildFrm.create(nil);
create里面那个参数有application,self
我想问问有什么区别没有???
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
楼上的,
不过我一般
childfrm1:Tchildfrm1; 声明为全局变量
if (childfrm1=nil)then
childfrm1:=TchildFrm.create(nil);
childfrm1.show();
d对了我看好多childfrm1:=TchildFrm.create(nil);
create里面那个参数有application,self
我想问问有什么区别没有???
#9
指針指向問題
#1
childfrm1:Tchildfrm1; 声明为全局变量
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
#2
var
form:Tform2;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form=nil then //也可写成if not Assigned(form) then
begin
form:=Tform2.Create(application);
end;
else
begin
if form.WindowState=wsMinimized then
begin
ShowWindow(form.Handle,SW_SHOWNORMAL);
if (not form.Visible ) then //打开,但不可见
begin
form.Visible :=True;
form.BringToFront;
form.SetFocus ;
Exit;
end;
end;
end;
form.Show;
end;
#3
var
form:Tform2;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form=nil then //也可写成if not Assigned(form) then
begin
form:=Tform2.Create(application);
end
else
begin
if form.WindowState=wsMinimized then
begin
ShowWindow(form.Handle,SW_SHOWNORMAL);
if (not form.Visible ) then //打开,但不可见
begin
form.Visible :=True;
form.BringToFront;
form.SetFocus ;
Exit;
end;
end;
end;
form.Show;
end;
#4
#5
if Application.FindComponent('childfrm1') = nil then
childfrm1 := Tchildfrm1.Create(application);
frmUserlogin.show;
childfrm1 := Tchildfrm1.Create(application);
frmUserlogin.show;
#6
上面都有了。。。不过我一般用4L这样的方法。
#7
如果不想声明为全局变量,可以通过窗口的name属性加以判断
procedure TForm1.btn1Click(Sender: TObject);
var
childfrm1:TForm2; //Tchildfrm1
i:Integer;
begin
childfrm1 := nil;
for i:=0 to Form1.MDIChildCount-1 do
if Form1.MDIChildren[i].Name = 'childfrm1' then
begin
childfrm1 := TForm2(Form1.MDIChildren[i]); //指向已经存在的窗体
Break;
end;
if not Assigned(childfrm1) then //不存在,则创建
begin
childfrm1:=TForm2.Create(Self);
childfrm1.Name := 'childfrm1';
end;
childfrm1.WindowState := wsNormal;
childfrm1.Visible := True;
childfrm1.Show;
end;
#8
childfrm1:Tchildfrm1; 声明为全局变量
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
楼上的,
不过我一般
childfrm1:Tchildfrm1; 声明为全局变量
if (childfrm1=nil)then
childfrm1:=TchildFrm.create(nil);
childfrm1.show();
d对了我看好多childfrm1:=TchildFrm.create(nil);
create里面那个参数有application,self
我想问问有什么区别没有???
if not Assigned(childfrm1) then
childfrm1:=TFm_MDIChild.Create(Self);
childfrm1.Show;
楼上的,
不过我一般
childfrm1:Tchildfrm1; 声明为全局变量
if (childfrm1=nil)then
childfrm1:=TchildFrm.create(nil);
childfrm1.show();
d对了我看好多childfrm1:=TchildFrm.create(nil);
create里面那个参数有application,self
我想问问有什么区别没有???
#9
指針指向問題