建立自己的Hint窗口

字体大小: 中小 标准 ->行高大小: 标准
建立自己的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;

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68149.html