==========一直没能琢磨明白的问题(会者不难)==================(100分)

  • 主题发起人 主题发起人 LEEMA
  • 开始时间 开始时间
L

LEEMA

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何在程序运行期间,在任何时候都能响应键盘某个按键,比如F1键? &nbsp;50分<br>2、如何知道当前的焦点在哪个控件上? &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;50分<br>希望能给出代码。多谢了!
 
1、使用ActionList或者注册系统热键,推荐使用前者。<br>2、使用ActiveControl,如:<br>procedure TForm1.Timer1Timer(Sender: TObject);<br>begin<br>&nbsp; //ActiveControl.Handle<br>&nbsp; memo1.Lines.Add(ActiveControl.ClassName);<br>end;<br>
 
1。讲窗体的keypreview的属性设为true;<br>2。设置一个全局变量,每个控件在enter发生时,就改变这个全局变量
 
&nbsp; 如果是想在整个系统有效<br>1。用键盘钩子 : http://www.delphibbs.com/delphibbs/DispQ.asp?LID=627190 &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;http://www.delphibbs.com/delphibbs/dispq.asp?lid=2577410<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>2。用一个API就可以搞定 &nbsp;getfocus<br><br>如果感兴趣,可以看看我的一个小程序<br>&nbsp;http://www.2ccc.com/article.asp?articleid=942
 
1::::::<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=335821<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1637034<br>2:::::::::<br>function GetSysFocus: Integer;<br>var<br>hFgWin, FgThreadID, hFocusWin: Integer;<br>begin<br>hFgWin := GetForegroundWindow;<br>FgThreadID := GetWindowThreadProcessID(hFgWin, nil);<br>if AttachThreadInput(GetCurrentThreadID, FgThreadID, True) then<br>begin<br>hFocusWin := GetFocus;<br>Result := GetFocus;<br>AttachThreadInput(GetCurrentThreadID, FgThreadID, False);<br>end<br>else<br>Result := GetFocus;<br>end; <br>///<br>procedure TForm1.Timer1Timer(Sender: TObject);<br>begin<br>listbox1.items.add(intToStr(GetSysFocus()));<br>end;
 
多人接受答案了。
 
第一个问题已解决,第二个问题还不行。<br>我需要的是:<br>当鼠标移到某个控件上的时候,我就可以知道该控件的Name, Tag等属性值。<br><br>有些控件有OnMouseEnter事件,而有些控件没有这一事件,所以通过OnMouseEnter事件只能判断一部分的控件。<br><br>ActiveControl对某些控件不起作用, 比如Label。<br>GetFocus对活动窗口起作用。<br>谁还有更好的办法?
 
我另外开贴给分。
 
后退
顶部