窗体闪烁

那城 2010-01-04 07:16:47
procedure showMDIForm( var AForm: TForm; AFormClass: TFormClass; AParent: TComponent);
var
I:Integer;
CurrForm : TForm;
begin
try

for i:= 0 to MainForm.MDIChildCount - 1 do
begin
CurrForm := MainForm.MDIChildren[i];
if CurrForm <> nil then
begin
CurrForm.Close;
CurrForm.Free;
end;
end;
//screen.Cursor := crHourGlass;
//lockwindowupdate(MainForm.handle);

aform:=nil;
try
LockWindowUpdate(GetDeskTopWindow);//锁定屏幕
aform:=aFormClass.Create(AParent);
// aform.FormStyle := fsNormal ;
//AForm.Visible := False;
//AForm.Position:=poMainFormCenter;
//LockWindowUpdate(AForm.Handle);
//SendMessage(AForm.Handle,WM_SETREDRAW,0,0);
finally
Screen.Cursor:=crDefault;
end;
try
LockWindowUpdate(GetDeskTopWindow);//
aform.WindowState :=wsMaximized;
//SendMessage(AForm.Handle,WM_SETREDRAW,1,0);
//RedrawWindow(AForm.Handle, nil, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
finally
LockWindowUpdate(0);//
end;
AForm.DoubleBuffered := True;
aform.show;
//MainForm.pnl1.Visible:=False;


//screen.Cursor := crDefault;
// LockWindowUpdate(0);
except

end;
end;
...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
那城 2010-01-13
  • 打赏
  • 举报
回复
问题自己已经解决用了窗体重画
现在就不会闪烁了
hjkto 2010-01-13
  • 打赏
  • 举报
回复
jf
dd_zhouqian 2010-01-04
  • 打赏
  • 举报
回复
楼主也可以在form create 里加上双缓冲开启

self.DoubleBuffered := True;
dd_zhouqian 2010-01-04
  • 打赏
  • 举报
回复
RedrawWindow这个函数貌似用过,明天找找看
kfcoffe 2010-01-04
  • 打赏
  • 举报
回复
mark
hjkto 2010-01-04
  • 打赏
  • 举报
回复
mark

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧