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

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

Check в MainMenu и в PopupMenu [D7, WinXP]


Dmitry_04 ©   (2005-02-14 09:40:00) 

Во время запуска программы у меня в MainMenu и в PopupMenu добавляются пункты меню.

var
Item:TMenuItem;
...
repeat
Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:=s;
AutoCheck:=true;
RadioItem:=true;
GroupIndex:=2;
end;
N1.Add(Item);

Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:=s;
AutoCheck:=true;
RadioItem:=true;
GroupIndex:=3;
end;
PopupMenu1.Items.Add(Item);

N1 это пункт в MainMenu в который добавляеются новые пункты... А как мне сделать, чтобы при нажатии в MainMenu на один из этих пунктов в PopupMenu он тоже становился Check и наоборот, при нажатии в PopupMenu на пункт, в MainMenu он тоже становился Check? Помогите пожалуйста, очень нужно...


stone   (2005-02-14 17:20:00) [1]


> А как мне сделать, чтобы при нажатии в MainMenu на один
> из этих пунктов в PopupMenu он тоже становился Check и наоборот,
> при нажатии в PopupMenu на пункт, в MainMenu он тоже становился
> Check?

В этой ситуации лучше создвать TAction, которому присвоить нужный обработчик и свойства.
Далее при создании пунктов меню (любого) достаточно присваивать создаваемому пункту соответствующий TAction. В результате все изменения будут отржаться на всех элементах связанных с данным TAction.

ЗЫ. См. ActionList, ActionManager и примеры работы с ними.


stakan   (2005-02-14 17:17:00) [2]

По моему правильнее делать через ActionList


Fay   (2005-02-14 15:40:00) [3]

var
 i : Integer;
begin
 for i := 0 to PopupMenu1.Items.Count - 1 do
   if PopupMenu1.Items[i].Caption := TMenuItem(Sender).Caption then
   PopupMenu1.Items[i].Checked := TMenuItem(Sender).Checked;


Dmitry_04   (2005-02-14 15:25:00) [4]

Это-то понятно... Но как это присвоить? Как мне определить имя? Т.е.

имя.Cheched:=true;

Имя то я не знаю :(


Fay   (2005-02-14 10:33:00) [5]

2 Dmitry_04   (14.02.05 10:23) [2]
>> как сделать чтобы в PopupMenu пункт с такимже Caption-ом "1" стал Check?
Присвоить соотв. значение свойству Checked


Dmitry_04   (2005-02-14 10:23:00) [6]

Да при нажатии... Я может немного непонятно написал... В MainMenu в пункте N1 пункты такие же как в PopupMenu. Вот например в MainMenu нажали на пункт с каким-то Caption-ом, например "1"(при нажатии он автоматически становится Check), как сделать чтобы в PopupMenu пункт с такимже Caption-ом "1" стал Check?


Cosinus   (2005-02-14 10:04:00) [7]

OnClick???


Наверх

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