在Delphi中有哪些情况会导致OnPaint事件的发生呢?

jackeyqiu 2007-06-26 10:42:26
在Delphi中有哪些情况会导致OnPaint事件的发生呢?
...全文
566 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
火龙岛主 2010-03-09
  • 打赏
  • 举报
回复
例如:TForm;
Paint事件触发;
procedure TCustomForm.Paint;
begin
if Assigned(FOnPaint) then FOnPaint(Self);
end;

Paint由PaintWindow事件触发
procedure TCustomForm.PaintWindow(DC: HDC);
begin
FCanvas.Lock;
try
FCanvas.Handle := DC;
try
if FDesigner <> nil then FDesigner.PaintGrid else Paint;
finally
FCanvas.Handle := 0;
end;
finally
FCanvas.Unlock;
end;
end;

PaintWindow由PaintHandler触发
最终由
procedure WMPaint(var Message: TWMPaint); message WM_PAINT; 消息触发;
也就是说只要放生了WM_PAIN消息并且OnPaint也赋值了,那么就会触发OnPaint;

InceptKnowledge 2010-03-09
  • 打赏
  • 举报
回复
最直接的,就是最大化,最小化,
byteh 2010-03-09
  • 打赏
  • 举报
回复
几乎可以这么说,只要你的界面处于可视状态就会触发!
www_OK2002_com 2010-03-09
  • 打赏
  • 举报
回复
~~~我也正在找呢...
SQLDebug_Fan 2010-03-09
  • 打赏
  • 举报
回复
Windows产生WM_PAIN消息会重画,你用Invalidate也会导致重画
何鲁青 2007-06-26
  • 打赏
  • 举报
回复
show
refresh
updata
unactive
active
and ...
cnzzlp 2007-06-26
  • 打赏
  • 举报
回复
可以在onPaint事件写个

OutputDebugString(Pchar('Paint'));

可以在EventLog窗口看出输出信息
cnzzlp 2007-06-26
  • 打赏
  • 举报
回复
resize,窗体部分被遮住又重新显示,从不可见到可见...
楼下补充...

5,392

社区成员

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

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