2013-05-25 18 views
0

我工作的项目有一个演示模式,向用户显示的一些功能与setcursorpos不同的控制移动鼠标。 setcursorpos函数需要该控件的位置。如何找到这些用于色带控制中的选项卡和按钮?如何查找Delphi XE2功能区控件中按钮的顶部和左侧?

+0

你实际上需要[CBT](http://en.wikipedia.org/wiki/Computer-based_training),不要重新发明轮子 – OnTheFly

+0

我遵循Uwe的建议并使用以下内容。 var btnpos:tpoint; ... btnpos:= RibbonGroup2.ActionControls [0] .ClientOrigin; setcursorpos(btnpos.x,btnpos.y); .. 它完美的作品。您不需要将clienttoscreen应用于tpoint值。如果窗口调整大小,直到功能区组合折叠为止,Clientorigin会为X值返回负值(-32703)。如果我得到的值小于零,我可以最大化窗口,要求用户最大化屏幕或中止演示。 谢谢Uwe Raabe和大家的帮助。 – Ali

+1

@ user539484,该项目和演示太小,不能保证单独的CBT解决方案。将鼠标移动到按钮并用信息弹出中心的气球更容易。 :) – Ali

回答

3

AFAIK SetCursorPos需要为鼠标位置的屏幕坐标有关。假设目标控制是名为Button1你左上角的屏幕坐标与Button1.ClientOrigin;

更新:虽然没有直接问,可能不清楚如何拿到手就代表该按钮的控件实例。让我从XE2示例文件夹中获取RibbonDemo。剪贴板部分的删除按钮(索引3)可以通过rgHomeClipboard.ActionControls [3]访问;

+0

是否带状控制窗口? –

+0

@David:只是好奇:在Delphi 2009中,'TRibbon'控件完全在VCL代码中实现;它不是本地Windows控件。 XE2有改变吗? –

+0

@Andreas我不知道。 Windows功能区是迄今为止最好的选择,但它不是VCL,可能很难编码。我没有想到纽扣有像TControl那样的装饰。 –

相关问题