Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.14;
Скачать: CL | DM;

Вниз

Координаты компонета относительно Owner   Найти похожие ветки 

 
FormCoord   (2003-06-27 13:34) [0]

Казалось бы простая задача:

Есть единственная форма приложения - Form. На форме панель – Panel. На панели – кнопка -Button. (Form – Panel - Button)

Как узнать смещение кнопки в точках от левого и верхнего края формы?

Left и Top измеряются от начала ClientRect, поэтому простым суммированием не получится. В вопросе – частный случай, может быть (Form – Panel – Panel - Button) итд.
Спасибо.


 
vuk ©   (2003-06-27 13:39) [1]

ClientToParent


 
FormCoord   (2003-06-27 13:46) [2]

ClientToScreen?
ClientToParent не нашел...
Нельзя пример?
Спасибо.


 
vuk ©   (2003-06-27 13:50) [3]

Версия Delphi поди ниже 6? Тогда да.
Реализовано оно так:

function TControl.ClientToParent(const Point: TPoint; AParent: TWinControl): TPoint;
var
LParent: TWinControl;
begin
if AParent = nil then
AParent := Parent;
if AParent = nil then
raise EInvalidOperation.CreateFmt(SParentRequired, [Name]);
Result := Point;
Inc(Result.X, Left);
Inc(Result.Y, Top);
LParent := Parent;
while LParent <> nil do
begin
if LParent.Parent <> nil then
begin
Inc(Result.X, LParent.Left);
Inc(Result.Y, LParent.Top);
end;
if LParent = AParent then
Break
else
LParent := LParent.Parent;
end;
if LParent = nil then
raise EInvalidOperation.CreateFmt(SParentGivenNotAParent, [Name]);
end;


 
Calm ©   (2003-06-27 13:52) [4]

А чего в "Потрепаться"?


 
FormCoord   (2003-06-27 13:54) [5]

Да, D5. Спасибо большое.


 
KSergey ©   (2003-06-27 14:22) [6]

Я по простоте своей делал так:

pt := Control1.ClientToScreen (pt);
pt := Control2.ScreenToClient (pt);

Control1 - тот, в координатах которого задана интересующая координата точки pt, Control2 - тот, в координатах которого надо интересующую точку получить



Страницы: 1 вся ветка

Текущий архив: 2003.07.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
14-44839
Карелин Артем
2003-06-26 13:01
2003.07.14
Как вам такой код? По-моему ужасно.


11-44618
Bomberman
2002-11-04 22:43
2003.07.14
SpinEdit


3-44544
div
2003-06-19 13:55
2003.07.14
Вылетает


14-44826
Nick-From
2003-06-26 11:34
2003.07.14
Некоторые вопросы по сети


1-44668
denis24
2003-07-01 18:31
2003.07.14
как обращаться к закладкам в вордовом докум?