gpt4 book ai didi

delphi - Application.ActivateHint 在 Delphi XE2 上显示错误位置的提示

转载 作者:行者123 更新时间:2023-12-03 15:35:07 26 4
gpt4 key购买 nike

我正在使用Application.ActivateHint(p) ,其中p: TPoint , 在指定位置显示提示。但在 Delphi XE2 上它总是显示在实际的鼠标坐标上。

请查看堆栈:

Main.ApplicationEventsShowHint('Hint String Here...',True,$18FB14)
:5049c644 TCustomApplicationEvents.DoShowHint + $20
:5049d043 TMultiCaster.DoShowHint + $4B
:50454a6b TApplication.ActivateHint + $213
RxDBCtrl.TRxDBGrid.MouseMove([],934,45)

关于RxDBCtrl.TRxDBGrid.MouseMove我调用TApplication.ActivateHint以正确的屏幕坐标作为参数。但在 Main.ApplicationEventsShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo) HintInfo.HintPos 的值与实际鼠标坐标相同。作为参数传递给 TApplication.ActivateHint 的值丢失了。

为什么会发生这种情况?如何在Delphi XE2上显示所需坐标的提示?

非常感谢您的帮助!

最佳答案

我确信有一种方法可以使用默认的提示控件来实现此目的,但您可能想查看 TBalloonHint组件允许您在给定位置显示提示。

这是一个关于如何实现这一目标的非常简单的示例:

var B : TBalloonHint;

procedure TForm1.FormCreate(Sender: TObject);
begin
B := TBalloonHint.Create(Self);
B.Style := bhsStandard;
CustomHint := B;
end;

创建表单后,我们将 BalloonHint 组件分配给主表单,任何具有 parentCustomHint 的组件属性设置为 True 将继承 CustomHint。

之后,您可以简单地在给定的屏幕位置调用提示,如下所示:

B.ShowHint(Point(X,Y)); {Where X & Y are Screen Coordinates}
<小时/>

简单演示:

  1. 创建一个新的空白VCL项目

  2. 整合以下内容:

    type
    TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    private
    { Private declarations }
    public
    { Public declarations }
    end;



    var
    Form1: TForm1;

    implementation

    {$R *.dfm}
    var B : TBalloonHint;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Hint := 'Test';
    ShowHint := True;
    B := TBalloonHint.Create(Self);
    B.Style := bhsStandard;
    CustomHint := B;
    end;

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    var P : TPoint;
    begin
    P := Point(X,Y);
    P := ClientToScreen(P);
    B.ShowHint(P);
    end;

关于delphi - Application.ActivateHint 在 Delphi XE2 上显示错误位置的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495200/

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