首页  编辑  

建立自己的Hint窗口

Tags: /超级猛料/VCL/Form,窗体/   Date Created:
建立自己的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;