Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2017, 10:21   #1
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
Вопрос TMainMenu.MenuItem.Count

Всем привет,
1) Есть MainMenu в котором созданы 3 MenuItem
а) Во 2 MenuItem созданы 20 MenuItem
? // Как подсчитать кол-во из а)

2) При клике по одному из MenuItem из a) выставить его в Checked=True; а все остальные 19 в Checked=False;

Что пробовал:

Код:
procedure TMaimForm1.MenuItem1Click(Sender: TObject);
var
i : Integer;
...
  if (Sender as TMenuItem).Name = 'MenuItem1' then
    if (Sender as TMenuItem).Checked = True then
    begin
      for i := 0 to (Sender as TMenuItem).Count - 1 do
      begin
        (Sender as TMenuItem).Items[i].Checked := false;
        ShowMessage(IntToStr(i));
      end;
    end;
...
Короче что то я в замешательстве. Есть мысли?
XerSon вне форума Ответить с цитированием
Старый 23.08.2017, 11:28   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если не пользуешься ActionList, то выставь у них RadioItem в True и в OnClick присваивай в Checked True, остальные сами сбросятся
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.08.2017, 12:16   #3
XerSon
Форумчанин
 
Аватар для XerSon
 
Регистрация: 21.01.2008
Сообщений: 211
Хорошо

Аватар,
Про RadioItem в True спасибо, не знал.
А об ActionList можно в примере?
XerSon вне форума Ответить с цитированием
Старый 23.08.2017, 12:23   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Там создаешь тучу TAction с обработчиками событий, на каждый из которых можно неоднократно ссылаться из пунктов меню и кнопок (свойство Action). Для того что хочешь там использовать GroupIndex и Checked, смайлик птичка будет. Пробуй, удобно если какие-то действия дублируются в главном и контекстном меню или в тулбаре например
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.08.2017 в 12:26.
Аватар вне форума Ответить с цитированием
Старый 24.08.2017, 01:36   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от XerSon Посмотреть сообщение
Короче что то я в замешательстве. Есть мысли?
В дополнение к Аватар, непосредственно по коду в топике
Почему у вас цикл
Код:
for i := 0 to (Sender as TMenuItem).Count - 1 do
Это ведь цикл по сабайтемам данного подменю. А вам нужен цикл по айтемам его родителя. Например
Код:
for i := 0 to (Sender as TMenuItem).Parent.Count - 1 do
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить PNG в MenuItem Shouldercannon Общие вопросы Delphi 5 09.01.2016 23:42
Command: menuItem неактивен D][mon WPF, UWP, WinRT, XAML 1 22.01.2014 21:53
Скрытие фокуса у MenuItem Комиссар Катани Общие вопросы Delphi 3 30.12.2012 13:24
Чем отличается ListBox.Count от ListBox.Items.Count bakanaev Общие вопросы Delphi 5 16.08.2012 12:35
Помогите найти компонент MenuItem muravey Помощь студентам 8 02.11.2007 17:06