gpt4 book ai didi

delphi - 如何更改控件内的鼠标光标?

转载 作者:行者123 更新时间:2023-12-03 18:20:58 25 4
gpt4 key购买 nike

我有一个类似于团队 View 软件的远程访问,我想根据“受控”部分的鼠标图标更改鼠标光标(在“ Controller ”部分,换句话说,服务器端),就像在团队 View 中所做的那样软件。

我的软件正在使用 TPaintBox,因为我需要让其他人使用 TPaintBox 才能正常工作。

TPaintBoxcrDefault 作为默认光标。仅当鼠标位于 TPaintBox 内时,如何更改此设置(在“Controler”部分)?

Here是用于在“受控”部分(客户端)捕获鼠标图标的代码。

这是我到目前为止尝试更改“ Controller ”部分(服务器端)中鼠标图标的代码:

//pbRec is name of TPaintBox used

procedure TForm2.pbRecMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Form2.lblPoint.Caption = 'OCR_NORMAL' then
pbRec.Cursor := crDefault
else if Form2.lblPoint.Caption = 'OCR_HAND' then
pbRec.Cursor := crHandPoint
else if Form2.lblPoint.Caption = 'OCR_IBEAM' then
pbRec.Cursor := crIBeam;
end;

欢迎所有建议。

最佳答案

如果您想更改代码中的光标,以下内容将起作用。

//Context: Timer.Interval = 50; :-)

procedure TForm57.Timer1Timer(Sender: TObject);
var
p: TPoint;
begin
if Ord(PaintBox1.Cursor) < Ord(crSizeAll) then PaintBox1.Cursor:= crArrow
else PaintBox1.Cursor:= Pred(PaintBox1.Cursor);
//Force Windows to change the cursor by sending a WM_SETCURSOR message.
PaintBox1.Parent.Perform(WM_SETCURSOR, PaintBox1.Parent.Handle, MakeLParam(HTCLIENT, WM_MOUSEMOVE));
(** //if you're viewing using a slow remote connection you make need to do this:
//Wiggle the mouse to force cursor change.
GetCursorPos(p);
SetCursorPos(p.x-1, p.y);
Sleep(100); //needed on slow remote connection.
SetCursorPos(p.x, p.y); (**)
end;

如果您要在每次鼠标进入绘画箱时根据某些上下文更改光标,那么在 MouseMove 事件中执行此操作相当浪费。
请在 OnMouseEnter 事件中更改它。

procedure TForm57.PaintBox1MouseEnter(Sender: TObject);
begin
if .... then PaintBox1.Cursor:= crIBeam
else if .....
PaintBox1.Parent.Perform(WM_SETCURSOR, PaintBox1.Parent.Handle, MakeLParam(HTCLIENT, WM_MOUSEMOVE));
end;

如果您使用远程连接,则客户端远程端可能会缓存光标。在这种情况下,您可能需要将其向一侧摆动,Sleep(100),然后将其向后摆动,以便客户端软件检测鼠标移动并强制刷新光标。

如果您只想让 PaintBox 内的光标保持静态,但与应用程序的其余部分不同,那么这就可以了:

enter image description here

关于delphi - 如何更改控件内的鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com