Вниз
Скачать: CL | DM;

Динамически создаваемое меню   Найти похожие ветки 

 
SHS   (2003-04-15 12:25) [0]

В ходе выполнения программы, динамически создаю меню. Проблема в том, что при повторном щелчке на отмеченном пункте пометка снимается, а должен быть выбран какой-то один пункт. Как обработать это событие в процедуре MyClick чтобы не допустить снятия пометки, если повторный щелчок произошел по помеченному пункту? Заранее благодарю за внимание. Меню создаю (количество пунктов меню может быть различным) такой процедурой:

procedure TForm1.FormCreate(Sender: TObject);
var
mnuNewItem: TMenuItem;
i: integer;
begin
for i := 0 to 5 do
begin
mnuNewItem := TMenuItem.Create(PopupMenu1);
Menu.Add(mnuNewItem);
mnuNewItem.RadioItem := True;
mnuNewItem.AutoCheck := True;
mnuNewItem.Name := "Subitem_" + IntToStr(i);
mnuNewItem.Caption := mnuNewItem.Name;
mnuNewItem.OnClick := MyClick;
end;
end;

procedure TForm1.MyClick(Sender: TObject);
begin
//?
end;


 
Dms   (2003-04-15 12:30) [1]

используй свойство GroupIndex и RadioItem. В OnClick выставляй

(Sender as TMenuItem).Checked:=not (Sender as TMenuItem).Checked;


 
SHS   (2003-04-15 12:42) [2]

Спасибо Dms, сделал всё как ты сказал, но так не выбирается не
один пункт меню :-(


 
Dms   (2003-04-15 12:55) [3]

странно ...
1. Усановить всем пунктам группы один и тотже GroupIndex
2. Установить RadioItem := True
3. Обработать OnClick


 
Mystic ©   (2003-04-15 12:58) [4]

procedure TForm1.FormCreate(Sender: TObject);
var
mnuNewItem: TMenuItem;
i: integer;
begin
for i := 0 to 5 do
begin
mnuNewItem := TMenuItem.Create(PopupMenu1); // <- почему ты добавляешь в Menu, а родителя устанавливаешь в PoputMenu1 ?
mnuNewItem.RadioItem := True;
mnuNewItem.AutoCheck := True;
mnuNewItem.GroupIndex := 1; // <- вставить mnuNewItem.Name := "Subitem_" + IntToStr(i);
mnuNewItem.Caption := mnuNewItem.Name;
mnuNewItem.OnClick := MyClick;
Menu.Add(mnuNewItem);
end;
end;


 
SHS   (2003-04-15 13:25) [5]

Спасибо ВСЕМ ОГРОМНОЕ, все прекрасно работает. Честное слово,
не знаю что бы без вас делал. Ещё раз СПАСИБО!!!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-91283
Анатолий.
2003-04-16 18:19
2003.04.28
Как перетянуть с помощью Drag and Drop обьект в другое приложение


1-91398
BBCHa
2003-04-16 14:36
2003.04.28
странное поведение функции из DLL


1-91366
Oleg1
2003-04-15 14:29
2003.04.28
Free Report 3.2


7-91569
Soft
2003-03-11 02:26
2003.04.28
Как получить сообщение о том, что Com порт выдал данный


7-91576
blabla
2003-03-10 08:26
2003.04.28
system




   Наверх