请问控件的Hits怎么触发(100分)

  • 主题发起人 主题发起人 nathanlee
  • 开始时间 开始时间
N

nathanlee

Unregistered / Unconfirmed
GUEST, unregistred user!
在应用软件中,当鼠标移动到某一个控件上就会出现一个相关的提示,一会儿就消失,这个
功能变成怎么控制,就是说鼠标不用动都可以显示出提示
 
>>就是说鼠标不用动都可以显示出提示
是不是用人的主观意识控制Hint事件的触发,没听懂!
 
for example :
form1上有Button1;
button1: hint:‘您好’;
button1:showhint:false;
if Sender is button1 then
showmessage(button1.hint);
 
第一位,我得意思是,不用东鼠标也要可以弹出提示的信息
的二位,你这个是SHOWMESSAGE方法,我想要的是鼠标那样的提示效果,要不影响操作的
 
这个message我看看,看一看
procedure CMHintShow(var Message: TMessage); message CM_HINTSHOW;
procedure CMHitTest(var Message: TCMHitTest); message CM_HITTEST;
 
这样的问题没有实际价值,毫无用处,纯粹是在虐待自己。
我想是不是可通过传递消息来解决
 
hint引入的目的是为了在不执行指定功能的同时,给使用者提供这个功能的概述性信息,
如果你要一直显示他的内容,可以在附近添加一个lable控件,用以显示提示的hint,那种
提示效果你可以用一个窗体去做,让它dock在按钮或者其他控件的附近
 
我觉得还是很有用的,比如在录入数据时可以不断的给出其他相关数据的提示。希望各位
再给点建议
 
var
Form1: TForm1;
x:THintWindow;
implementation

{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
var
rect :TRect;
p :Pointer;
begin
rect := x.CalcHintRect(100,button1.hint,p);
// rect.Left :=
x.Color := clWhite;
x.ActivateHint(rect,Button1.Hint);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x := THintWindow.Create(self);
end;
可以调整x的font和color等属性。
就这些了,我没时间去研究hintwindow的源代码。
 
可以看看delphi的vcl源代码中是怎么处理的。我想可能是截获消息
 
用Hint控件
http://delphi.mychangshu.com/dispdoc.asp?id=662
 
yfdciom,那个控件怎么用的?我用了怎么一点反应都没有??
 
这个问题没必要深入讨论,建议你合理安排程序布局,界面设计标准化。
 
to nathanlee:
>我觉得还是很有用的,比如在录入数据时可以不断的给出其他相关数据的提示。希望各位
>再给点建议

如果是这样,你还不如把要显示的信息写的状态栏中。
 
我试了bubble的方法,完全可以,不过需补充代码完善。(以显示label标签提示为例)具体代码为:
var
Form1: TForm1;
x:THintWindow;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
label1.ShowHint:=true;
label1.Hint:='successlabel';
x:=THintWindow.Create(self);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
rect :TRect;
p :Pointer;
MaxWidth,width,height:Integer;
point:TPoint;
begin
rect := x.CalcHintRect(MaxWidth,label1.hint,p);
width:=rect.Bottom-rect.Top;
height:=rect.Right-rect.Left;

point.x:=label1.Left+label1.Width;
point.y:=label1.Top+label1.Height;
Point:=ClientToScreen(Point);

rect.Left:=point.x;
rect.Top:=point.y;

rect.Right:=point.x+height;
rect.Bottom:=point.y+width;

x.Color := clWhite;
x.ActivateHint(rect,label1.Hint);
end;

 
多人接受答案了。
 
后退
顶部