如何让鼠标移动至特定的控件上时,状态栏内显示不同的文字提示?(30分)

  • 主题发起人 主题发起人 *HelloWorld*
  • 开始时间 开始时间
H

*HelloWorld*

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个窗体,上面分别放了Menu/ToolBar/StatusBar,中间主体是ListBox/FileListBox/<br>RichEdit。我想让鼠标移动到后面三者之上时,在状态栏内出现相应的说明文字,一旦鼠标<br>移开(三者之外,比如鼠标跑到菜单上去了),那么状态栏内的文字马上清空。<br><br>我曾想过用三者的OnMouseMove来做,比如:<br>procedure ListBox1.OnMouseMove;<br>begin<br>StatusBar1.panel[0].text:='这是ListBox!';<br>end;<br><br>但是这样做有一点不好,就是鼠标移开三者之后,状态栏内的文字将保留最后一次显示的状态,<br>而不是清空。请问有什么好的办法?
 
给控件添加自己的事件,让他与CM_MOUSEENTER,CM_MOUSELEAVE消息相关
 
请在各自的控件的Hint属性中分别添加信息。<br>并用TApplicationEvents控件的OnHint事件中添加:<br>StatusBar1.panel[0].text :=Application.hint;<br><br>如不用TApplicationEvents控件,也可在主窗口编个过程<br>procedure TMainForm.ShowMyHint(sender : TObject);<br>begin<br>&nbsp; &nbsp; statusbar1.Panels[0].Text :=Application.Hint;<br>end;<br>然后在OnShow或OnActivate中调用ShowMyHint即可。<br>但此种方法在其他窗口调时,需另写些东东才不致于出错!<br>还是用前一种方法好![:)]<br><br><br><br>
 
你在FORM的ONMOUSEMOVE中也加一句StatusBar1.panel[0].text := ''就行了
 
to nbwsj:<br>我是初学者,还没用过TApplicationEvents控件控件呢,您能否说得再详细一点?
 
1、在各自的控件的Hint属性中分别添加信息,设置showhint为True;<br>2、在FROM的CREATE事件中:<br>  Application.onhint:=hinttobar;<br>3、添加如下事件:<br>procedure from1.hinttobar;<br>begin<br>statusbar1.Panels[0].Text :=Application.Hint;<br>end;
 
to zy2000:<br>谢谢,你的方法可行。不过这种方法还有一个问题需要解决:我的状态栏分为两个panel,<br>都要显示不同的东西。而每一个控件的hint属性只能设置一段话。我怎么样才能用这种方法<br>同时控制状态栏的两个panel呢?
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部