如何获得光标所在的控件!

pingshx 2003-01-23 11:05:02
我用别人提供的ocx,里面有一保存按钮,利用消息触发这一按钮后,
弹出一保存对话框(标准的),如何在光标所在的地方对文件命名!
(做的绝呀,ocx没有提供相应的接口函数),快到春节了,大家忙
着过年,我却为了这个问题折腾了一个多星期了,公司里压下来的(没人性呀),
各位大侠快救救我呀!
说明几点:这里的光标不是鼠标,所以用windfrompoint不能解决!
用findwind可以捕捉到文件保存对话框,但接下来的捕捉光标所在的
控件就做不到啦!
救救我吧!我的email:pingshx@hotmail.com

...全文
225 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
naughtyboy 2003-01-23
  • 打赏
  • 举报
回复
var
p: TPoint;
h: hwnd;
begin
GetCursorPos(p);
h := WindowFromPoint(p);
FindControl(h);
end;
//你自己补充一下,应该能够实现你要的功能
pingshx 2003-01-23
  • 打赏
  • 举报
回复
重命名通过代码命名,不是人工操作!
控件没有源代码!!!!!所以不能更改!
这个ocx就是用activeform! 隐藏里面的细节!
idilent 2003-01-23
  • 打赏
  • 举报
回复
不太懂你的问题,如果是标准的文件保存对话框,应该可以对文件命名,为什么一定要在光标的位置命名?光标在哪里?
另外有俩个解决方法:
1.不使用这个button
2.如果这个控件有源代码,可以改掉代码。
pingshx 2003-01-23
  • 打赏
  • 举报
回复
那datetimepicker呢,对于combobox是好办一些, 好多书上列出了combobox的消息,但datetimepicker没有,对datetimepicker发送tab键,只有年位置获得焦点,月、日没有,
不知怎么办?
naughtyboy 2003-01-23
  • 打赏
  • 举报
回复
combobox
procedure TForm1.Button2Click(Sender: TObject);
var
c: integer;
begin
c:= SendMessage(combobox1.Handle,CB_GETCOUNT,0,0);
showmessage(inttostr(c));
end;
combobox的处理cb_xxxx
pingshx 2003-01-23
  • 打赏
  • 举报
回复
combobox, datetimepicker都在由activeform编译成的ocx上,没有相应的接口,做的真绝呀!兄弟们帮忙!先谢过!
pingshx 2003-01-23
  • 打赏
  • 举报
回复
谢谢大家帮忙,对于控制对话框我用这个函数解决啦,现与大家分享:
function GetFocusedWindowFromParent(ParentWnd:HWnd):HWnd;
var
OtherThread,
Buffer : DWord;
idCurrThread: DWord;
begin
OtherThread := GetWindowThreadProcessID(ParentWnd, @Buffer);
idCurrThread := GetCurrentThreadID;
if AttachThreadInput(idCurrThread, OtherThread, true) then
begin
Result := GetFocus;
AttachThreadInput(idCurrThread, OtherThread, false);
end
else
Result:= GetFocus;
end;
现在又遇到问题的是如何向datetimepicker发送消息?得到自己相要的曰期!
同样如何向combobox发送消息:控制combobox? 即如何控制datetimepicker和
combobox!
谢谢大家参与!
pingshx 2003-01-23
  • 打赏
  • 举报
回复
naughtboy:thank you!
我试试,同样ocx上的combobox, datetimepicker 又如何控制呀!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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