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
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
не устраивают? |
Устраивают!
Прекрасно устраивают!
Спасибо!
Находить подходящие процедуры у пронаследованных в 3-4 поколениях контролов — это прям мученье какое-то!
Отредактировано Treumer — 14/06/2005, 17:33 |
|