画在Panel上的文字怎么才不让擦除?(50分)

  • 主题发起人 主题发起人 Leehawk
  • 开始时间 开始时间
L

Leehawk

Unregistered / Unconfirmed
GUEST, unregistred user!
如果是直接画在Form上的线条或文字,在OnPaint里再重新调用一下就可以重画。但画在Panel上的呢。我试过在Form.OnPaint里重新调用,写上的文字还是被擦除了。
type
tpnl=class(TPanel)
end;
.........

procedure TForm1.btn1Click(Sender: TObject);
begin
tpnl(pnl1).Canvas.Pen.Color:= clRed;
tpnl(pnl1).Canvas.TextOut(0, 0, 'sss');
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
btn1Click(Self);
end;

如果这样不行,还有什么方法?
 
在panel的onpaint事件中写就不会消失。
 
panel没见着onpaint事件。
 
重画的同时连文字一起画上
 
截获PAINT消息
 
anyway:
我这样写:
procedure TForm1.msg(var amsg: TMessage);
begin
if amsg.msg=wm_paint then
btn1click(self);
end;
这样是对的么?怎么像是死循环呢?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2729846
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1104545
 
在panel里要自己拦截wm_paint消息,才行。拦截form的wm_paint是没用的。form和panel是两个窗口,有各自独立的消息队列。
 
同意 rururu 说的
 
接受答案了.
 
分错分了。。。。。[:(]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
848
SUNSTONE的Delphi笔记
S
I
回复
0
查看
753
import
I
I
回复
0
查看
712
import
I
后退
顶部