Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить из какого пункта меню запущена форма? [D5, WinXP]


Shooroop ©   (2005-07-19 17:01:00) 

Мастера! Как мне в приведенном примере отобразить в frmData01.Caption Caption пункта меню, из которого она была вызвана?
Т.е. при клике на Items[0].Items[0][0] отобразить "Линия №14",
на Items[0].Items[0][1] - "Линия №15".
Меню необходимо создавать в рантайме. Спасибо.

procedure AddMenuItem(Owner: TMenuItem; Caption: String);
 var Item: TMenuItem;
begin
 Item := TMenuItem.Create(Owner);
 Item.Caption := Caption;
 Owner.Add(Item);
end;

procedure TfrmMain.ShowData01Form(Sender: TObject);
begin
 frmData01 := TfrmData01.Create(Application);
 // вот здесь frmData01.Caption := ???
 frmData01.ShowModal;
 frmData01.Destroy;
end;

procedure TfrmMain.CloseForm(Sender: TObject);
begin
 Close;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
 var mmnMain: TMainMenu;
begin
 mmnMain := TMainMenu.Create(frmMain);
 with mmnMain do
 begin
   AddMenuItem(Items,'&Данные');
   AddMenuItem(Items,'&Отчеты');
   AddMenuItem(Items,'&Выход');
   AddMenuItem(Items[0],'Линии');
   AddMenuItem(Items[0],'Рабочие места');
   AddMenuItem(Items[0].Items[0],'Линия №14');
   AddMenuItem(Items[0].Items[0],'Линия №15');
   Items[3].OnClick := CloseForm;
   Items[0].Items[0][0].OnClick := ShowData01Form;
   Items[0].Items[0][1].OnClick := ShowData01Form;
 end;
end;


Shooroop   (2005-07-20 12:38:00) [1]

Благодарю, теперь все понятно.


Anatoly Podgoretsky   (2005-07-19 19:55:00) [2]

TMenuItem.AutoHotkeys


Юрий Зотов   (2005-07-19 17:29:00) [3]

> Shooroop   (19.07.05 17:20) [3]

Раз туда автоматически добавляется амперсанд (AutoHotkeys=True), так он там и есть - что ж ему не появляться-то? Он и появляется, никаких чудес.

А вот так он убирается:
frmData01.Caption := StripHotkey((Sender as TMenuItem).Caption);


Shooroop   (2005-07-19 17:20:00) [4]

2Юрий Зотов:
Благодарю, всё работает, только возникает странная ситуация в Caption формы появляется амперсанд: "Линия №1&4".
2Плохиш:
Спасибо за совет, теорией стараюсь не пренебрегать, но практического опыта маловато, сразу не сообразил.


Плохиш   (2005-07-19 17:05:00) [5]


> ShowData01Form( Sender: TObject);

- есть нажатый пункт меню. Учите теорию для начала.


Юрий Зотов   (2005-07-19 17:03:00) [6]

frmData01.Caption := (Sender as TMenuItem).Caption;


Наверх

Титульная страница Поиск, карта сайта Написать письмо