Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамическое mainmenu, нужна помощь 
:(
    Опции темы
Timonn
  Дата 13.9.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



призапуске программы нужно сформировать пункты меню, это у меня еще кое-как получилось, но как обратиться к событиям каждого пункта (т.е. присвоить каждому пункту событие) я не знаю...

пологите ПЖАЛУЙСТА!!!!
PM MAIL   Вверх
_hunter
Дата 13.9.2005, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ты справку бы посмотрел...
Цитата
This example demonstrates how to add and delete menu items to a popup menu at runtime and assign an event handler to the OnClick event.

void __fastcall TForm1::AddButtonClick(TObject *Sender)
{
    const int num_items = 4;
    for (int index = 0; index < num_items; ++index)
    {
        TMenuItem *NewItem = new TMenuItem(PopupMenu1); // create the new item
        PopupMenu1->Items->Add(NewItem);// add it to the Popupmenu
        NewItem->Caption = "Menu Item " + IntToStr(index);
        NewItem->Tag = index;
        NewItem->OnClick = PopupMenuItemsClick;// assign it an event handler

    }
}

void __fastcall TForm1::PopupMenuItemsClick(TObject *Sender)
{
    TMenuItem *ClickedItem = dynamic_cast<TMenuItem *>(Sender);
    if (ClickedItem)
    {
        switch (ClickedItem->Tag)
        {
            case 0:
            {
                ShowMessage("first item clicked");
                break;
            }
            case 1:
            {
                ShowMessage("second item clicked");

                break;
            }
            // etc...
        }
    }
}

To edit or destroy an item, grab its pointer via the TMenuItem::Items property.

void __fastcall TForm1::EditButtonClick(TObject *Sender)
{
    const int index = 1;
    TMenuItem *ItemToEdit = PopupMenu->Items->Items[index];
    ItemToEdit->Caption = "Changed Caption";
}

void __fastcall TForm1::DestroyButtonClick(TObject *Sender)
{
    const int index = 2;
    TMenuItem *ItemToDelete = PopupMenu->Items->Items[index];
    delete ItemToDelete;
}



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Timonn
Дата 13.9.2005, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а то же самое но на делфи ?
PM MAIL   Вверх
_hunter
Дата 13.9.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



открой справку делфи...

в принципе все аналогично ( только вместо new TMenuItem() -- TMenuItem.Create() )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 13.9.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



//dbgCustomSelect - TDBGrid, pmColumns2 - TPopupMenu


Код

procedure TfmCustomSelect.MenuItem1Click(Sender: TObject);
begin
  ShowHideColumn((sender as TMenuItem).Caption);
end;



Код

procedure TfmCustomSelect.ShowHideColumn(MenuItemCaption:String);
Var
 i,j:Cardinal;
begin
  with dbgCustomSelect 
  do begin
     For i := 0 to Columns.Count-1
     do begin
       For j := 0 to pmColumns2.Items.Count-1
       do begin
         if Columns[i].Title.Caption = MenuItemCaption//pmColumns.Items[j].Caption
         then Columns[i].Visible := not Columns[i].Visible;//pmColumns.Items[j].Checked;


       end;//if

     end;//for
 end;//with
end;//proc


Код

procedure TfmCustomSelect.pmColumns2Popup(Sender: TObject);
Var
 i:Cardinal;
 MenuItem : TMenuItem;
begin
  with dbgCustomSelect
  do begin
//------------------------------------------------------------------------------
//устанавливаем Caption и видимость меню, соответственно сетке
     pmColumns2.Items.Clear;
     For i := 0 to Columns.Count-1
     do begin
       MenuItem := TMenuItem.Create(pmColumns2);
       MenuItem.Caption := Columns[i].Title.Caption;
       MenuItem.Checked := Columns[i].Visible;

---->       MenuItem.OnClick := MenuItem1Click; <----------

       pmColumns2.Items.Add(MenuItem);
     end;//for
 end;//with
end;


Добавлено @ 17:11
На стадии проектирования меню пустое
PM MAIL   Вверх
Timonn
Дата 14.9.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а есть разница в том, что мне этот алгоритм для MainMenu нужен, а не для PopUpMenu ???
PM MAIL   Вверх
Akella
Дата 14.9.2005, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



нет разницы,
разве у MainMenu нет Items??? smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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