C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Абсолютная позиция Control-a (x,y), Как же ее вычислить ?
Treumer
  Отправлено: 14.06.2005, 17:16


Станционный диспетчер

Группа: Участник
Сообщений: 92



Вот написал процедурку
CODE

void TForm1::GetAbsolutePositionOfControl(TWinControl& Control, long& x, long& y)
{ TWinControl *pParent=&Control;
x=0; y=0;
do {
x+=pParent->Left;
y+=pParent->Top;
pParent=(TWinControl*)pParent->Parent;
}while(pParent!=NULL);
}
...
// потом вызываю:
GetAbsolutePositionOfControl((TWinControl&)UserSectorNumber, cX, cY);


По не ясной причине две проблемы:
1) У самого Control внутри функции GetAbsolutePositionOfControl: Left=13104860, Top=13105408 ohmy.gif
2) Если его не учитывать, а складывать только Left и Top парентов — то значение по Х — получается вроде верное, а вот по Y — слишком большое!

Что бы это могло быть ?!

Отредактировано Treumer — 14/06/2005, 17:17
Guest
Отправлено: 14.06.2005, 17:21


Не зарегистрирован







А методы
TControl::ClientToScreen()
TControl::ScreenToClient
не устраивают?
Treumer
Отправлено: 14.06.2005, 17:30


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Guest @ 14/06/2005, 17:21)
А методы
TControl::ClientToScreen()
TControl::ScreenToClient
не устраивают?

Устраивают! smile.gif
Прекрасно устраивают! wink.gif
Спасибо! biggrin.gif

Находить подходящие процедуры у пронаследованных в 3-4 поколениях контролов — это прям мученье какое-то! ohmy.gif

Отредактировано Treumer — 14/06/2005, 17:33

Вернуться в Вопросы программирования в C++Builder