Delphi TBalloonHint

var
  pt: TPoint;
    BalloonHint1.Title := '';
    BalloonHint1.Description := '名称不能包括: ' + GetIgnoreChars();
    pt.X := edtName.Width div 2;
    pt.Y := 0;
    BalloonHint1.HideAfter := 5000;
    BalloonHint1.ShowHint(edtName.ClientToScreen(pt)); //坐标end;
end;
BalloonHint1.Delay :
= 0; procedure TfrmReleateGQAccount.ShowHint(Hint: string; Control: TControl); begin if not Assigned(Control) then Exit; BalloonHint1.Description := Hint; BalloonHint1.ShowHint(Control); end;

万一 老师 http://www.cnblogs.com/del/archive/2008/08/14/1267834.html

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.CustomHint := BalloonHint1;
  Edit1.CustomHint := BalloonHint1;

  BalloonHint1.Images := ImageList1;

  Button1.ShowHint := True;
  Edit1.ShowHint := True;

  Button1.Hint := '提示:|这是 Button1 的 Hint|0';  {标题|内容|ImageList 中的图像序号}
  Edit1.Hint := '敬告:|这是 Edit1 的 Hint|1';  
end;

http://blog.csdn.net/ppayun/article/details/6766801

需要说明的时ShowHint有4个重载的方法:

1. 不带参数:         这个完全没有用,默认显示在屏幕的最左上角
2. TPoint参数:     定点弹出,问题在于弹出的方向,如果点坐标在屏幕上半部,会向下弹出,否则向上弹出,有时会遮蔽对应的组件
3. TRect参数:      这个是最实用的了,气泡会在根据矩形在屏幕的上下位置,在矩形的上边缘中央向上弹出或者矩形的下边缘中央向下弹出,保证不会遮蔽矩形区域
4. TControl参数: 这个和TPoint有点类似,默认是在Control的下边缘中央,问题是不能控制弹出方向,可能会遮蔽Control

如图所示,矩形代表TRect参数区域,红色箭头代表弹出点和方向:

当然还有一种做法是自定义弹出的窗口,TBallonHint有一个PaintHint的方法,可以指定窗口,必须从TCustomHintWindow继承,有意思的是TCustomHintWindow有个PopAbove属性可以指定弹出方向的。

posted @ 2016-05-30 16:52  海蓝7  阅读(1174)  评论(0)    收藏  举报