![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перебор пунктов меню
Tornado © (2005-01-28 08:54:00)Есть довольно большое меню, 15 элементов. При выборе элемента этот элемент должен стать неактивным, остальные - активные. Так для каждого элемента меню. Как осуществить? А то под каждым элементом писать
SubMenu1.Enabled := False;
SubMenu2.Enabled := True;
SubMenu3.Enabled := True;
...............
SubMenu15.Enabled := True;
как то криво
REA (2005-01-28 09:56:00) [1]3: Не делать меню из 15 пунктов - пользователю будет напряжно. Надо примерно 7-8. Хотя могут быть и исключения.
А так в принципе сделать Action.OnUpdate, запоминать активный, и TAction(Sender).Enabled := (Sender = LastSelectedAction)
Александр Иванов (2005-01-28 09:41:00) [2]Ошибся немного:
procedure ActivateMenu(Root:TMenuItem);
var i:integer;
begin
for i:=0 to Root.Count-1 do
if Root.Items[i].Count>0 then
ActivateMenu(Root.Items[i])
else
Root[i].Enabled:=True;
end;
Александр Иванов (2005-01-28 09:39:00) [3]А куда подробней?
procedure ActivateMenu(Root:TMenuItem);
var i:integer;
begin
for i:=0 to Root.Count-1 do
if Root.Items[i].Items.Count>0 then
ActivateMenu(Root.Items)
else
Root.Items[i].Enabled:=True;
end;
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
ActivateMenu(Form1.MainMenu1.Items);
(Sender as TMenuItem).Enabled:=False;
end;
Tornado (2005-01-28 09:24:00) [4]>> . Написать процедуру активирующую все пункты и дезактивировать Sender
можно чуть подробнее?
Александр Иванов (2005-01-28 09:07:00) [5]1. Написать процедуру активирующую все пункты и дезактивировать Sender
2. Использовать AutoCheck