
procedure TForm1Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
xx,yy:Double;
begin
Chart1Series[0]GetCursorValues(xx,yy);
Label1Caption:=floattostr(xx);
Label2Caption:=floattostr(yy);
end;
应该可以在StringGrid的消息响应OnSelectCell中得到,ACol,ARow即为相应的坐标,可以通过设置全局变量来得到这两个值,但是不清楚你要用它们来做什么。如果不清楚可以继续讨论。
在窗体的OnMouseMove时间中写入下列代码,就可以随时监控鼠标坐标了:
var
P
:
TPoint;
GetCursorPos(P);//得到鼠标坐标
label1Caption
:=
inttostr(pX)
+
'
,'
+
inttostr(pY);//label控件显示鼠标坐标
在Delphi中要通过曲线的x轴取y轴的值,可以使用Interpolate函数来实现。Interpolate函数接收多个参数,第一个参数是要查询的x轴坐标值,剩下的参数依次是x轴坐标对应的y轴坐标值,最后返回查询到的y轴坐标值。
用以下函数实现^_^(虽然是C++定义写法,但是Delphi定义与之相同)
VOID mouse_event( DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
参数说明一下:)
dwFlags 指定鼠标的动作,移动或者点击,可有以下参数
MOUSEEVENTF_ABSOLUTE 指定其后参数dx,dy为绝对坐标,否则为相对坐标
MOUSEEVENTF_MOVE 指定移动鼠标
MOUSEEVENTF_LEFTDOWN 指定鼠标左键按下
MOUSEEVENTF_LEFTUP 指定鼠标左键d起
dx,dy 指定了鼠标的坐标,如果第一个参数有MOUSEEVENTF_ABSOLUTE 则为绝对坐标,否则为相对坐标。
最后两个参数一般设为0,具体解释请参考MSDN或Delphi帮助。
如果需要程序运行时自动点击窗体中某个点,首先需要获取该点的绝对坐标(相对于整个屏幕),一般是将窗体的坐标+上窗体内的坐标。如(50,50)的绝对坐标可能是(Form1Left+50,Form1Top+50),此值不一定准确,需要自己修正。
mouse_event(MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_ABSOLUTE,Form1Left+50,Form1Top+50,0,0);
mouse_event(MOUSEEVENTF_LEFTUP or MOUSEEVENTF_ABSOLUTE,Form1Left+50,Form1Top+50,0,0);
这样就可以实现模拟鼠标点击的效果。
写在OnMouseDown事件上,不要写在OnClick上。代码如下(窗体名为Form1,编辑框为Edit1)
procedure
TForm1FormMouseDown(Sender:
TObject;
Button:
TMouseButton;
Shift:
TShiftState;
X,
Y:
Integer);
begin
Edit1Text
:=
'X:'
+
IntToStr(X)
+
'
Y:'
+
IntToStr(Y);
end;
其实你需要写的只是begin和end之间那句。
clienttoscreen 是将控件相对窗体的坐标转换成 屏幕坐标
比如说 btn1left := 8;form1left:=200;
那么btn1left用clienttoscreen 后就是208了
不知道你说的是不是这个意思
以上就是关于Delphi 用的Char控件 添加FastLine 显示曲线,想实现鼠标点击 取横竖坐标,如何实现,请高手指点非常感全部的内容,包括:Delphi 用的Char控件 添加FastLine 显示曲线,想实现鼠标点击 取横竖坐标,如何实现,请高手指点非常感、Delphi7 怎样获得StringGrid中单元格坐标、delphi 怎么检测鼠标坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)