Форум: "Основная";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизПолучить координаты компонента на экране Найти похожие ветки
← →
DelphiN! © (2006-02-08 08:15) [0]Как получить координаты компонента (x,y) на экране(Screen), а не на родителе
← →
MBo © (2006-02-08 08:20) [1]ClientToScreen
← →
DelphiN! © (2006-02-08 08:37) [2]
> [1] MBo © (08.02.06 08:20)
И как ей пользоваться? Я конечно могу получить координаты для отдельного компонента так x := Form1.Left+Parent.Left+Button1.Left. Но не хотелось бы складывать все Leftы всех родителей компонента "вручную", хотелось бы написать функцию вида function GetScreenComponentPos(Component: TObject): TPoint;
← →
evvcom © (2006-02-08 08:45) [3]
> Но не хотелось бы складывать все Leftы всех родителей компонента
> "вручную"
ClientToParent, только зачем? Вызывай ClientToScreen с координатами 0,0 метод своего компонента, а не родителя и не формы.
← →
DelphiN! © (2006-02-08 08:46) [4]Все, уже сам разобрался, оказалось все легко, просто не проснулся еще, не думается :)
function TForm1.GetComponentClientPos(Comp: TWinControl): TPoint;
var
Parent: TWinControl;
begin
Result.X := Comp.Left;
Result.Y := Comp.Top;
Parent := Comp.Parent;
while Parent <> nil do
begin
Result.X := Result.X+Parent.Left;
Result.Y := Result.Y+Parent.Top;
Parent := Parent.Parent;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
p: TPoint;
begin
p := GetComponentClientPos(Button1);
showmessage(inttostr(p.X)+#13#10+inttostr(p.Y));
end;
← →
TUser © (2006-02-08 09:45) [5]Mouse.CursorPos
← →
MBo © (2006-02-08 10:01) [6]>DelphiN! © (08.02.06 08:37) [2]
>И как ей пользоваться?procedure TForm20.Button1Click(Sender: TObject);
var
P: TPoint;
begin
P := Button1.ClientToScreen(Point(0,0));
Caption := Format("My screen coords: %d: %d", [P.X, P.Y]);
end;
← →
DelphiN! © (2006-02-08 10:16) [7]
> [6] MBo © (08.02.06 10:01)
Ну вот, вечно я уще трудности :) Зато мой вариант тоже работает :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c