1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

Tmainmenu определение пункта по клику

Тема в разделе "С и С++", создана пользователем monsters, 27 фев 2011.

  1. monsters

    monsters Гость

    Репутация:
    0
    В компоненте TMainMenu нужно по клику определить название или номер пункта по которому он и производился. Создавать для каждого пункта функцию не подходет так как создаются пункты динамически, и все ссылаются на одну и туже функцию.
     
  2. dreamer

    dreamer Гость

    Репутация:
    0
    ЕМНИП, у TMenuItem должно быть свойство Tag. Можно его определять для каждого из элементов меню, а обработчик нажатия для них навесить общий.
     
  3. monsters

    monsters Гость

    Репутация:
    0
    Код:
    							i=0;
    while (row = mysql_fetch_row(result))
    {
    
    TMenuItem *NewItem = new TMenuItem(MainMenu1);
    zapros=row[0];
    NewItem->Caption=zapros;
    NewItem->OnClick=sklad;
    NewItem->Tag=i;
    MainMenu1->Items->Items[2]->Add(NewItem);
    i++;
    }
    Вот например создаю я в цикле и назначаю для каждого элемента меню Tag. Все меню ссылаются на функцию sklad. Как мне узнать какой именно Tag был выбран(по какому из них кликнули)?
     
  4. dreamer

    dreamer Гость

    Репутация:
    0
    У любого обработчика события UI есть параметр Sender:*Object (ну или не Sender - в зависимости от того, как назовёте), который принимает значение указателя на тот контрол, который отправил сообщение. Т.е. теоретически (я с C++ Builder никогда не работал) нужно привести тип Object к TMenuItem и забрать Tag. Т.е. это будет выглядеть так:
    Код:
    ((*TMenuItem)Sender)->Tag
     
  5. monsters

    monsters Гость

    Репутация:
    0
    Звучит обнадеживающе, но я ничего не понял. Можете привести пример? Хотябы на делфи, с ним мне приходилось работать раньше.
     
  6. dreamer

    dreamer Гость

    Репутация:
    0
  7. monsters

    monsters Гость

    Репутация:
    0
    Все, разобрался!
    Код:
    (TMenuItem*)Sender)->Tag
    Тоесть знак звездочки в другую строну от TMenuItem нужно было поставить )
    Но мне не сколько даже индекс нужен был, сколько имя кнопочки поэтому сделал так
    Код:
    (TMenuItem*)Sender)->Caption
    dreamer
    Большое спасиба! В начале не очень понял =)
     
Загрузка...

Поделиться этой страницей