Rus |
Отправлено: 06.02.2005, 15:45 |
|
Не зарегистрирован
|
3. Можно ли для определенного Itema PopupMenu вызвать свое PopupMenu? Как это сделать?
|
|
AVC |
Отправлено: 07.02.2005, 09:42 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Легко. Впрочем как и для чего угодно. Пример "ручного" запуска PopUp
CODE |
void __fastcall T???::Запуск_Popup (void)
{
public_переменная для приема_значенния = пустое_значение;
if (нет_условий для вызова);
else if (доступна_только_одна_позиция)
public_переменная для приема_значенния = единственное_значение;
else // запустить вторичный PopUp
{ int x;
int y;
// определить координаты верхнего левого угла
// (правила для моей формы)
if (this->ActiveControl == Grd_Main)
{ TPoint point = Grd_Main->ClientOrigin;
TRect rect = Grd_Main->ActiveCellRect();
x = point.x + rect.left;
y = point.y + rect.bottom + 4;
}
else
{ TPoint tpoi = TB_GoToM->ClientOrigin;
x = tpoi.x;
y = tpoi.y + TB_GoToM->Height + 4;
}
PPM_???->Popup(x, y);
Application->ProcessMessages();
}
// анализ_ответа
if (пустое_значение) ...
...
}
// У PopUp все кликы настроены на эту функцию
// (я храню дополнительные сведения
// для каждого popup в hint этого popup
// он не показывается на экране
// значение Hint и есть основание для анализа ответа)
//---------------------------------------------------------------------------
void __fastcall T???::PPMGT_Click (TObject *Sender)
{
TMenuItem *mni = dynamic_cast<TMenuItem*>(Sender);
if (!mni) return;
public_переменная для приема_значенния = mni->Hint.Trim().UpperCase();
}
|
|
|