拜请高人指点,感激涕淋!!!

HolloMonkey 2008-02-15 02:04:47
在解决fsMDIChild窗口"闪"的问题后,又出现主窗口镂空(锁定过程中)的问题
应该是函数 Perform()引起的,如果在App.CreateForm(fForm,mForm);
后加个showmessage();就很明显地看到这个问题了

解决"闪"的过程如下:
procedure MDIChildshow(FrmName: string;Frmmain: TForm; mForm: TForm;fForm: TFormClass;App: TApplication);
begin
Frmmain.Perform(WM_SETREDRAW,0,0);
if Application.FindComponent(FrmName)=nil then
try
App.CreateForm(fForm,mForm);
showmessage(FrmName+'创建成功!');
except
showmessage(FrmName+'创建不成功!');
end;
mForm.Show;
Frmmain.Perform(WM_SETREDRAW,1,0);
RedrawWindow(Frmmain.Handle,nil,0,RDW_FRAME+RDW_INVALIDATE+RDW_ALLCHILDREN+RDW_NOINTERNALPAINT);
end;
拜请高人指点,感激涕淋!!!
...全文
155 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhxjtoa 2008-02-26
  • 打赏
  • 举报
回复
是不是利用了时钟控件?不然怎么会闪?
lqwxfdwj 2008-02-23
  • 打赏
  • 举报
回复
//可以用下面这段代码;
//使用LockWindowUpdate()函数,可以减少窗体打开的闪烁现象;

begin
if not Assigned(ChildForm) then
begin
LockWindowUpdate(Handle);
if not MDIEnable then CloseWindows; //关闭其它可能打开着的窗口
ChildForm:= TChildForm.Create(Application);
LockWindowUpdate(0);
end
else ChildForm.Show;
end;
HolloMonkey 2008-02-23
  • 打赏
  • 举报
回复

使用fsMDIChild 属性的窗体 创建时会在 主窗体中“闪”

获得焦点 创建窗体 再放大 等有几个过程 象动画一样
gjw310 2008-02-22
  • 打赏
  • 举报
回复
不懂,学习
flexitime 2008-02-21
  • 打赏
  • 举报
回复
关注一下,不明白楼主想干些什么?
huzhangyou 2008-02-17
  • 打赏
  • 举报
回复
非常抱歉,对这些知之甚少
开发比较倾向服务器开发 网络开发相关
可以参考我的博客

邦定
HolloMonkey 2008-02-15
  • 打赏
  • 举报
回复
使用SendMessage()和ClientHandle参数可以解决
sendmessage(ClientHandle,WM_SETREDRAW,0,0);
...
sendmessage(ClientHandle,wm_setredraw,1, 0);
RedrawWindow(ClientHandle,nil,0,RDW_FRAME+RDW_INVALIDATE);
ydlchina 2008-02-15
  • 打赏
  • 举报
回复
帮顶

5,929

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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