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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2015, 14:06   #1
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
Вопрос Снять все Checked из пунктов меню

Есть у меня MainMenu. У него есть одно подменю. Все пункты у меня например стоят Checked:=True. Тобишь все галочки установлены. Мне надо по нажатию кнопки на форме убрать галочки со всех пунктов меню и подменю, тоесть установить их в False.
Вариант писать на каждый пункт отдельную строчку неохота, поскольку таких может быть много. Как это реализовать с минимальным кодом?
Заранее благодарю.
atihiy2010 вне форума Ответить с цитированием
Старый 31.03.2015, 14:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Что-то типа:
Код:
With MenuItemТакойТо do begin
 for i:=0 to Count-1 do Items[i].checked:=false;
end;
MenuItemТакойТо - пункт меню, в подменю коего нужно снимать галочки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2015, 14:38   #3
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Спасибо огромное. Работает. Еще вопрос. Я это делал потому что не получилось реализовать радиокнопки в меню. Тоесть если нету подменю, то все работает, а если есть подменю то оно расценивается как отдельное меню, и в подменю и основном меню может быть отмечено по одному пункту, даже если свойство GroupIndex у них одинаковое. Интересно почему так, и как сделать чтобы типа обьеденить подменю и меню. Чтоб если в меню выбрал чето то из подменю убрались точки.
atihiy2010 вне форума Ответить с цитированием
Старый 31.03.2015, 14:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Э-э-э... Т.е. ты хочешь сделать так, чтоб при установке галочки в любом меню и его подменю все остальные галочки во всем-всем меню снимались?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2015, 14:51   #5
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Не совсем, примерно как вы сказали, но только в одном разделе. Тоесть есть разделы
ФАЙЛ
-Новый
-Сохранить
ПРАВКА
-1
-2-21-22
-3

В разделе ПРАВКА все подпункты включая подменю 2 21 22 должны быть радио. Чтоб чтобы я не выбрал 21 или 3 снимались точки со всех остальных но только в ПРАВКЕ.
Вот что у меня получается...

Последний раз редактировалось atihiy2010; 31.03.2015 в 14:55.
atihiy2010 вне форума Ответить с цитированием
Старый 31.03.2015, 14:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А-а-а... Так...
За это по-моему отвечает свойство GroupIndex. Т.е. галочка снимается со всех, у которых GroupIndex равен значению, такому же как и у кликнутого пункта.
Но я давно не использовал, так что ты перепроверь эту версию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.03.2015, 15:02   #7
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

я проверил, знаю что должно быть так, но неработает. У них у всех GroupIndex = 1. А получается такая фигня как на фото...(((

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что-то типа:
Код:
With MenuItemТакойТо do begin
 for i:=0 to Count-1 do Items[i].checked:=false;
end;
MenuItemТакойТо - пункт меню, в подменю коего нужно снимать галочки.
Кстати этот код тоже не снимает галочек с позиций с подменю.

Последний раз редактировалось Вадим Мошев; 14.11.2015 в 12:40.
atihiy2010 вне форума Ответить с цитированием
Старый 31.03.2015, 16:15   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Напиши рекурсивную функцию в таком случае. Проход по меню и подменю.
Код:
procedure DisGalochka(m:TMenuItem); var i:integer;
begin 
 With m do 
  for i:=0 to Count-1 do begin 
   Items[i].checked:=false;
   DisGalochka(Items[i]);
  end;
end;
Других идей нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2015, 14:42   #9
ram555x
Пользователь
 
Регистрация: 08.02.2009
Сообщений: 16
По умолчанию

Тоже столкнулся с такой проблемой как у ТС, когда нужно было объединить подпункты из разных пунктов, решил проблему таким образом, установил нужным пунктам
Код:
AutoCheck:=true;
и когда у пункта checked=true то передаю параметр sender другой процедуре в которой у всех указанных пунктов снимаются галочки, и в конце этой процедуры
Код:
(sender as TMenuItem).Checked:=true;
т.е. откуда вызвана эта процедура по параметру sender определяется нужный пункт и ему ставится галочка.
ram555x вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать меню из 4 пунктов Zzoyberg Помощь студентам 2 28.12.2011 16:27
удаление пунктов меню в админке Nostalgia PHP 1 08.12.2011 01:40
Динамически создаваниемое меню и checked phphel Общие вопросы Delphi 8 05.04.2011 08:47
Копирование пунктов меню Altera Общие вопросы Delphi 4 28.07.2009 07:45
Разработать вертикальное меню из нескольких пунктов Тарон Паскаль, Turbo Pascal, PascalABC.NET 1 20.02.2008 18:56