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

 
PopupMenu для Itema PopupMenu
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();
}


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