Форум: "Потрепаться";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизКоординаты компонета относительно 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c