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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MainMenu - как работать с элементами ? Включать/выключать пункты. 
:(
    Опции темы
Erazer
Дата 20.6.2008, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть у меня MainMenu,структуры File,Edit,about. В Edit,пунктик paste, так вот, как к нему правильно обратиться чтобы сделать  .Enabled := True/.Enabled := False; ? с popupmenu разобрался эмпирическим путем 
Код

JvPopupMenu1.Items[2].Enabled := True;
, а тут не врублюсь  smile 
PM MAIL   Вверх
Max_Rendel
Дата 20.6.2008, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 24.2.2007
Где: г.Благовещенск

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



Допустим твоё меню состоит из 2-х пунктов: 1)File и 2)Edit. Пункт Edit
 содержит два подпункта: 1)Copy и 2)Paste.
Вот код чтобы выключить подпункт Paste:
Код

MainMenu1.Items.Items[1].Items[1].Enabled := False;

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


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Структура TMainMenu такова:

Сначала идут Items, отвечающие за верхние пункты меню(на рисунке обведено красным). Индексы этого меню начинаются с нуля, то есть к ним надо обращаться так:

Код

MainMenu.Items[0];
MainMenu.Items[1];
MainMenu.Items[2];


И тд.

Дальше идут выпадающие меню, которые появляются по щелчку по пункту в первой полосе. Эти помечены на рисунке зеленым. Индексация у них начинается тоже с нуля. Обращаться к ним надо так:
Код


MainMenu.Items[x].Items[0];
MainMenu.Items[y].Items[0];
MainMenu.Items[x].Items[1];


и тд.

Где x, y - какие-то индексы верхней полосы.

Теперь у каждого пункта выпадающих меню, может быть любой вложенности SubMenu. Индексация всех SubMenuб как впрочем и всех других Items MainMenu начинается с нуля. На рисунке они помечены желтым. Обращаться к ним можно так:

Код

MainMenu.Items[x].Items[0].Items[2].Items[0].Items[z];
MainMenu.Items[y].Items[x].Items[1];
MainMenu.Items[x].Items[x].Items[y].Items[1];



и тому подобное...

Нерусские буквы, как вы уже поняли, являются некими индексами.



Теперь рисунок:

user posted image


Разберемся на примере свойства Caption, каждого Items, какие же индексы имеют элементы меню на рисунке:
Код


procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(MainMenu1.Items[0].Caption);  //&Menu
  ShowMessage(MainMenu1.Items[0].Items[0].Caption); //1
  ShowMessage(MainMenu1.Items[0].Items[1].Caption); //2
  ShowMessage(MainMenu1.Items[0].Items[0].Items[0].Caption); //3
  ShowMessage(MainMenu1.Items[0].Items[0].Items[0].Items[0].Caption); //4
end;



В комментариях показано, то что находится в нашем меню по соответствующим индексам.
PM   Вверх
Erazer
Дата 20.6.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.4.2008
Где: Ташкент

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



Как их находить понятно, спасибо за разъяснение.
А вот мне тут автоматом нужно меню заполнять из названий PageControl'a не подскажите каким образом?
Вот наработки так сказать  smile 
Код

procedure TfmMain.FormCreate(Sender: TObject);
var
  i : integer;
  a,b : string;
begin

  for I := 0 to (PageControl.PageCount) - 1 do
    begin
      a := PageControl.Pages[i].Caption;
      b := PageControl.Pages[i].Name;
      //MainMenu.Items[2].Add(); тут должно быть что-то, но я не въеду что конкретно  :(
      mmFilter.Name := b;
      mmFilter.Caption := a;
    end;
end;

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


Новичок



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

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



Код
var
  item: TMenuItem;
begin
  item := TMenuItem.Create(Self);
  item.Caption := 'My item';
  item.OnClick := MyItemClick;
  MainMenu.Items[2].Add( item );
end;

Только лучше к элементу обращаться по имени (если возможно), а не по индексу.
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.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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