请问各位,我做了一个mdi的多文档应用程序,切换子窗口代码如下,为什么切换的过程中界面狂闪呢?抖动。是不是原因不是代码的问题,而是delphi一些设置的问题呢?//打开子窗口,不一定要创建
procedure TfMainWindow.OpenChildForm(FormClass: TFormClass;var AForm;AOwner:TComponent=nil);
var
i: integer;
Child:TForm;
begin
for i := 0 to Application.MainForm.MDIChildCount -1 do
begin
if Application.MainForm.MDIChildren[i].ClassType = FormClass then
begin
Child:=Application.MainForm.MDIChildren[i];
if Child.WindowState <> wsMaximized then
Child.WindowState:=wsMaximized;
Child.BringToFront;
Child.Setfocus;
Child.WindowState := wsMaximized;
TForm(AForm):=Child;
exit;
end;
end;
Child:=TForm(FormClass.NewInstance);
TForm(AForm):=Child;
Child.Create(nil);
Child.WindowState := wsMaximized;
Child.Show;
end;
procedure TfMainWindow.OpenChildForm(FormClass: TFormClass;var AForm;AOwner:TComponent=nil);
var
i: integer;
Child:TForm;
begin
for i := 0 to Application.MainForm.MDIChildCount -1 do
begin
if Application.MainForm.MDIChildren[i].ClassType = FormClass then
begin
Child:=Application.MainForm.MDIChildren[i];
if Child.WindowState <> wsMaximized then
Child.WindowState:=wsMaximized;
Child.BringToFront;
Child.Setfocus;
Child.WindowState := wsMaximized;
TForm(AForm):=Child;
exit;
end;
end;
Child:=TForm(FormClass.NewInstance);
TForm(AForm):=Child;
Child.Create(nil);
Child.WindowState := wsMaximized;
Child.Show;
end;
你应该知道MDI任何一个窗口最大化,其他子窗口都会自动最大化的.你的问题就在于最大化.
to crownsoft(希望) :修改那一行代码,是什么意思?
for i := 0 to Application.MainForm.MDIChildCount -1 do
begin
if Application.MainForm.MDIChildren[i].ClassType = FormClass then
begin
Child:=Application.MainForm.MDIChildren[i];
if Child.WindowState = wsMinimized then
Child.WindowState:=wsMaximized;
Child.BringToFront;
Child.Setfocus;
// Child.WindowState := wsMaximized;
TForm(AForm):=Child;
exit;
end;
end;
Child:=TForm(FormClass.NewInstance);
TForm(AForm):=Child;
Child.Create(nil);
if Application.MainForm.MDIChildCount = 1 then
Child.WindowState := wsMaximized;
Child.Show;
1.修改\Borland\Delphi5\Source\Vcl下的Forms文件:
注释掉CMShowingChanged过程的SendMessage(Application.MainForm.ClientHandle, WM_MDIRESTORE, Handle, 0); 这一句2.在Delphi设置Library path,加入\Borland\Delphi5\Source\Vcl路径,并放在第一条位置。3.子窗的WindowState属性设为wsNormal4.在了窗的OnCreate()事件加一句 WindowState:=wsMaximized;我的程式就是这样写的,非常好!