Как получить глобальные координаты компонента?
Раздел: FastReport VCL
Здравствуйте, я хочу открыть диалоговое окно рядом с компонентом (который находится в окне предпросмотра).
Как получить глобальные координаты (в пикселях) этого компонента?
P.S. Пробовал через ClientToScreen, не получилось.
Комментарии
Может, это поможет
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, Types, ExtCtrls;
type
TForm1 = class(TForm)
frxReport1: TfrxReport;
Timer1: TTimer;
procedure frxReport1MouseOverObject(Sender: TfrxView);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
h: THintWindow;
p, p_new: TPoint;
implementation
{$R *.dfm}
procedure TForm1.frxReport1MouseOverObject(Sender: TfrxView);
begin
Timer1.Enabled:=False;
if Sender.Name = 'Memo1' then
begin
GetCursorPos(p);
h.Hide;
h.ActivateHint(Rect(p.x+10,p.y+10,p.x+110,p.y+30),sender.Description);
Timer1.Enabled:=True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
h:=THintWindow.Create(Owner);
frxReport1.ShowReport;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
GetCursorPos(p_new);
if (p.x<>p_new.x) or (p.y<>p_new.y) then
h.ReleaseHandle
else
Timer1.Enabled:=True;
end;
end.
Это не совсем то что нужно, я ведь не могу мышку по всем объектам водить.
У компонентов (например, TfrxCellularText) есть скрытые свойства FX и FY, они точно показывают координаты компонента относительно окна предпросмотра. Если бы разработчики смогли сделать это свойство публичным, то это решило бы вопрос.
Пока решил этот вопрос через переопределение класса с публичными параметрами:
TMyCellularText = class(TfrxCellularText)
public
property GlobalX: Integer read FX;
property GlobalY: Integer read FY;
end;