如何获得当前焦点控件的名称.

auqfiudh 2009-01-10 10:52:35
Rt
鼠标点击, 使用 TAB 键 两种
...全文
293 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
金卯刀 2009-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 auqfiudh 的回复:]
With ActiveControl.Name Do
引发 : Record,object or class type required

换成单个控件名就行. 如果定义一个变量,放到变量里 ,那么要定义成什么类型的呢?
[/Quote]
ActiveControl.Name 你得到的是字串,而不是对象!
直接 with activecontrol do即可
zoujianqing 2009-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhao_yong 的回复:]
Delphi(Pascal) code
FocusHook:=SetWindowsHookEx(WH_CBT,@FocusHookProc,HInstance,0);

function FocusHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
var
MainH:HWND;
begin
if nCode<0 then
Result:= CallNextHookEx(FocusHook,nCode,WParam,LParam)
else
begin
if nCode=HCBT_SETFOCUS then
begin
//取得焦點。
end;
Result:= CallNextHook…
[/Quote]
呵呵
auqfiudh 2009-01-10
  • 打赏
  • 举报
回复
上面的 刚刚听说
下面的试试过了.
如果 应用 T... 的多了.
感觉显得代码 好傻...
starluck 2009-01-10
  • 打赏
  • 举报
回复


嘗試用 typinfo.pas 中的RTTL的方法解決 。

或者嘗試:



if acticeControl is Tmemo then
begin
Tmemo(ActiveControl).left := xx;
end;
auqfiudh 2009-01-10
  • 打赏
  • 举报
回复
With ActiveControl.Name Do
引发 : Record,object or class type required

换成单个控件名就行. 如果定义一个变量,放到变量里 ,那么要定义成什么类型的呢?
starluck 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 auqfiudh 的回复:]
做一个用键盘控制 某控件的 位置. 取它的坐标. 给自定义报表的 Label /Edit用

为什么 我用 KEYdown 事件里 无法移动呢
{
VK_LEFT 25 37 Left Arrow键
VK_UP 26 38 Up Arrow键
VK_RIGHT 27 39 Right Arrow键
VK_DOWN 28 40 Down Arrow键
}
if KEY=#38 then
begin
With ActiveControl.Name Do
begin
Top := Top+10;
//left := Top+10;

[/Quote]

確定在:Keydown 的時候:執行了位置調整了嗎? keyPreview := True; 打開沒有?
auqfiudh 2009-01-10
  • 打赏
  • 举报
回复
做一个用键盘控制 某控件的 位置. 取它的坐标. 给自定义报表的 Label /Edit用

为什么 我用 KEYdown 事件里 无法移动呢
{
VK_LEFT 25 37 Left Arrow键
VK_UP 26 38 Up Arrow键
VK_RIGHT 27 39 Right Arrow键
VK_DOWN 28 40 Down Arrow键
}
if KEY=#38 then
begin
With ActiveControl.Name Do
begin
Top := Top+10;
//left := Top+10;
end;
end;
zhao_yong 2009-01-10
  • 打赏
  • 举报
回复

FocusHook:=SetWindowsHookEx(WH_CBT,@FocusHookProc,HInstance,0);

function FocusHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
var
MainH:HWND;
begin
if nCode<0 then
Result:= CallNextHookEx(FocusHook,nCode,WParam,LParam)
else
begin
if nCode=HCBT_SETFOCUS then
begin
//取得焦點。
end;
Result:= CallNextHookEx(FocusHook,nCode,WParam,LParam)
end;
end;
starluck 2009-01-10
  • 打赏
  • 举报
回复
ActiveControl.Name

但不知道你是什麼的情況下觸發去取這個東西。
auqfiudh 2009-01-10
  • 打赏
  • 举报
回复
嘗試用 typinfo.pas 中的RTTL的方法解決 。
谁 能说明下 ....



明天 加分....大家快来啊

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧