![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить из какого пункта меню запущена форма? [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;