在MDI中,有几个子窗体,怎么让某一个显示在最前面?我的子窗体是动态创建的,BringToFront好像都没有用。 (33分)

Form2.Show;
 
form2.bringtofront
 
form.bringtofront;
 
因为你的子窗体是动态生成的,所有你的系统中可能根本就不存form2之类的子窗体
(虽然你设计时有 form2:tform2之类的定义,但事实可能没有创建)
如果需要将某个窗口(应该是某个类的窗口)提到前面,可以用循环语句在所有子窗口中
将你要的窗口找出来,再用bringtofront提前。
var i:integer;
frm:tform;
begin
frm:=nil;
for i:=0 to mainform.MDIChildCount-1do
if mainform.MDIChildren is tform2 then
begin
frm:=mainform.MDIChildren;
break;
end;

if frm<>nil then

frm.bringtofront;
end;


 
我想不是没有用,可能是你没有“找到”想置前的窗体吧
下面是我的一段代码,
if tempform00=nil then
//无则创建
begin
tempform00:=formclass.Create(self);
tempform00.Caption:=fieldbyname('dname').AsString;
//
tempform00.name:=sName;
end
else
//有则置前
tempform00.BringToFront;
 
谢谢Admy。问题解决。也谢谢雪中漫步
procedure TMainF.Button5Click(Sender: TObject);
var
OperatorFF:TForm;
i:integer;
begin
OperatorFF:=nil;
for i:=0 to mainF.MDIChildCount-1do
if mainF.MDIChildren is TOperatorF then
begin
OperatorFF:=mainf.MDIChildren;
break;
end;
if OperatorFf<>nil then
OperatorFF.bringtofront;
if signOperator then
begin
OperatorF := TOperatorF.Create(Self);
signOperator:=false;
end;
end;
 
TO :Admy
我想把这个定义为过程,可是不能编译能过。
procedure TMainF.showForm(var TvForm,VForm:TForm);
var
i:integer;
begin
VForm:=nil;
for i:=0 to mainF.MDIChildCount-1do
if mainF.MDIChildren is TVForm then
//这里。我不知道TVForm怎么定义。
begin
VForm:=mainf.MDIChildren;
break;
end;
if VForm<>nil then
VForm.bringtofront;
end;
 
type
formclass:class of tform;
procedure TMainF.showForm(TvForm:formclass;VForm:TForm);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
921
DelphiTeacher的专栏
D
顶部