Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-44744
Pentium 5
2003-07-01 12:51
2003.07.14
TExcelApplication, завершение процесса EXCEL.EXE


14-44881
LinOS
2003-06-27 08:01
2003.07.14
управление другой программой


7-44913
Brain Force
2003-04-28 19:21
2003.07.14
Перезагрузка Виндов


3-44608
pasha676
2003-06-21 16:07
2003.07.14
Колонки в QReport


14-44901
nick-from
2003-06-27 00:05
2003.07.14
конкурс: Лучший 19 ЭЛТ монитор (если можно с комментами)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский