如何激活Mdi子窗口(100分)

  • 主题发起人 主题发起人 天外客
  • 开始时间 开始时间
我用Setfocus或postmessage(self.handle,wm_mdiactive,mdichildren.handle,0)都没有用.
 
SendMessage(PreActiveForm,WM_ACTIVATE,WA_ACTIVE,(long)PreActiveForm);
 
用show方法!如form2为mdichild则激活form2的方法为
form2.show;
如果佛form2在project 中没有建立则用
form2:=tform2.Create(application)
form2.show;
 
用.show方法是可以,但是当窗口最大化时,不同子窗口在切换时闪硕现象比较严重,怎么决解
 
用Bringtofront来做!
 
我给你两个函数:
---------------------------------------------
Function FindChild(FormName: string): TForm;
var
i: integer;
begin
for i:=0 to MDIChildCount-1 do
if MDIChildren.Name=FormName then
begin
result:=MDIChildren;
Exit;
end;
result:=nil;
end;
-------------------------------------------------------
Function OpenForm(ModualName, FormName: string;
FormClass: TFormClass): TForm;
var
Form: TForm;
begin
Form:=FindChild(FormName) as TForm;
if Form<>nil then
begin
Form.BringToFront;
result:=Form;
Exit;
end;
Form:=FormClass.Create(Self) as TForm;
if Form<>nil then
begin
Form.Name:=FormName;
Form.FModualName:=ModualName;
Form.Show;
result:=Form;
Exit;
end;
result:=nil;
end;
-----------------------------------------------
 
bringtofront和show方法用起来差不多,但是还是有闪搜现象
是不是用richedit 控件的原因呢?
 
我找到了闪搜的原因了原来是子窗口在切换时,是从不是最大化再变到最大化,这样一来就闪了.
怎么解决?
 
多人接受答案了。
 
后退
顶部