Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PopupMenu, динамически 
:(
    Опции темы
_pussbb
Дата 7.8.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



создаю динамически PopupMenu
Код

    TMenuItem *item=new TMenuItem(PopupMenu1);
 или так item=NewItem("caption",NULL, false,true,execute,0,"bb");

  /* или так
     item->Caption="jhj";
      item->Tag=0;
    
 */

все нормально работает но мне надо как то вставить функцию обормотки событий execute для того чтобы можно было использовать не один элемент  несколько с разными параметрами в зависимости от передаваемого значения в обработчик или хотя бы взять имя элемента и по его имени уже сделать то что нужно 
PM MAIL WWW   Вверх
mrbrooks
Дата 7.8.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(_pussbb @ 7.8.2008,  12:40)
но мне надо как то вставить функцию обормотки событий execute для того чтобы можно было использовать не один элемент  несколько с разными параметрами в зависимости от передаваемого значения в обработчик или хотя бы взять имя элемента и по его имени уже сделать то что нужно

поясни че написал? хоть какие нибудь запятые и точки поставил бы.

тебе что нужно - написать свои обработчики событий что ли?
PM MAIL   Вверх
_pussbb
Дата 7.8.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



что-то вроде того 
PM MAIL WWW   Вверх
mrbrooks
Дата 7.8.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Код

// эти переменные опиши в классе формы
const int N = 5;
TPopupMenu *pm;
TMenuItem *mi[N];

//при создании формы вставь этот код
pm = new TPopupMenu(this);
for (int i = 0; i < N; i++)
{
   mi[i] = TMenuItem(pm);
   mi[i]->Caption = "поле " + IntToStr(i);
   pm->Items->Add(mi[i]);
}
//допустим меню будет к форме
PopupMenu = pm;
mi[0]->OnClick = mi1Click; // для остальных кнопок событие будет по аналогии

//-------------------------
void __fastcall TForm::mi1Click(TObject *Sender) // описание функции вставь в класс формы.
{
ShowMessage(mi[1]->Caption);
}



PM MAIL   Вверх
_pussbb
Дата 9.8.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



 mrbrooks  насколько я понял по коду ты написал кучу кода заместь этой строки что я дал

NewItem("caption" // название пункта
,NULL, false,true, // всякая фигня типа родиобокс или нет, по умолчанию или нет
execute // сам обработчик нажатия на елементе

,0,
"bb" // а это название елемента к оторому потом можно обращаться 
)
это все есть в с++ 2007 help.
а мне надо чтобы несколько елементов обрабатывались в одной функцией но я знал кокой елемент был выбран. и в зависимости от скажем имени я делал свои операции. 

PM MAIL WWW   Вверх
Stavsandro
Дата 9.8.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.8.2008

Репутация: нет
Всего: нет



Можно сделать так:

Код
//Здесь мы создаем новый пункт меню
TMenuItem *NewItem = new TMenuItem(PopupMenu);
NewItem->Caption = "Caption";
NewItem->Tag = 1; //А вообще подставь свое значение... по нему ты будешь различать пункты...
NewItem->OnClick = MenuTestClick;
PopupMenu->Add(NewItem);

//Функция - обработчик события OnClick для пункта меню
void __fastcall TForm1::MenuTestClick(TObject *Sender)
{
   //Получаешь указатель на пункт меню, на котором был сделан щелчок
   TMenuItem *ClickedItem = dynamic_cast<TMenuItem *>(Sender);
   if(ClickedItem)
   {
      //Смотришь, на каком пункте щелкнули
      int Value = ClickedItem->Tag;
       //Твои действия
   }
}


Вообще, в таком духе можно запрограммировать любое событие...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1191 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.