建立自己的Hint窗口

  • 主题发起人 主题发起人 import
  • 开始时间 开始时间
I

import

Unregistered / Unconfirmed
GUEST, unregistred user!
建立自己的Hint窗口
  当鼠标停留在某个控件上时,如果该控件的ShowHint特性为真则会显示出一个黄色的小窗口,这就是Hint窗口。如果从THintWindow派生一个类,并且将新类型赋值给全局变量HintWindowClass,则Delphi的Hint窗口将使用你所建立的新风格。
  新类可以重载THintWindow的Paint方法来自己绘制Hint信息,例如下面这段代码将用红色填充整个Hint窗口,然后以黄色来显示Hint信息:
procedure TNewHintWindow.Paint;
var
R:TRect;
begin
with Canvas do
begin
Brush.Color:=clRed;
Brush.Style:=csClear;
Rectangle(0,0,Width,Height);
end;
R:=ClentRect;
Inc(R.Top,3);
Inc(R.Left,2);
SetBKMode(Canvas.Handle,TRANSPARENT);
Canvas.Font.Color:=clYellow;
DrawText(Canvas.Handle, PChar(Caption),-1,R,DT_LEFT);
end;
  如果希望Hint窗口是透明的,则可以在新类中加入一个消息捕获过程,使Hint窗口不执行重绘背景的操作:
type
TNewHintWindow=class(THintWindow);
private
procedure WMEraseBKGND(var Message:TMessage); message WM_ERASEBKGND;
. . .
end;
procedure TNewHintWindow.WMEraseBKGND(var Message:TMessage);
begin
Message.Result:=0;
end;
 

Similar threads

S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部