Можно организовать GroupBox или RadioGroup в меню

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Можно организовать GroupBox или RadioGroup в меню

Сообщение BamsikPotapov » 17.03.2012 21:21:59

Мне нужно создать в меню пункт "точность" в нем 10 пунктов работа которых аналогична GroupBox или RadioGroup. А то самому лень писать в каждом событии нажатия мышки отмену выделения предыдущего элемента, так или иначе приходится в каждом событии писать по 9 дополнительных строк, итого 10х9=90 дополнительных строк на программу. Со свойствами покапался но нашел только как использовать галочку или точку.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли

Re: Можно организовать GroupBox или RadioGroup в меню

Сообщение sign » 18.03.2012 06:56:32

Заведите переменную, которая будет указывать на текущий выделенный элемент - CurrentItemMenuChecked.
Соответственно, при выделении очередного элемента, будете снимать выделение с элемента CurrentItemMenuChecked.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Можно организовать GroupBox или RadioGroup в меню

Сообщение v-t-l » 18.03.2012 10:02:25

Можно использовать свойства элементов меню: RadioItem, GroupIndex, Checked, AutoCheck, Caption, Tag. Ну и отдельную переменную типа TMenuItem.
v-t-l
энтузиаст
 
Сообщения: 742
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Можно организовать GroupBox или RadioGroup в меню

Сообщение haword » 18.03.2012 11:59:17

ну как обычно, хочу чтобы все было и мне за этого ничего не было :) надо головой работать. то есть обрабатываешь все события нажатий меню в одном месте, запоминаешь нажатый пункт, пробегаешь циклом по всем пунктам меню и снимаешь галку а ставишь только там где нужно, и все.
haword
постоялец
 
Сообщения: 301
Зарегистрирован: 02.03.2006 11:34:40

Re: Можно организовать GroupBox или RadioGroup в меню

Сообщение v-t-l » 18.03.2012 13:14:33

Не надо пробегаться по всем элементам. Если использовать GroupIndex и AutoCheck, то метка выбранного пункта будет перемещаться сама (между пунктами с одинаковым GroupIndex), а узнать, какой выбирается пункт, можно в общем (для всех пунктов группы) обработчике OnClick через параметр Sender:
Код: Выделить всё
var1 := (Sender as TMenuItem).Tag;
или
var2 := (Sender as TMenuItem).Caption;


Добавлено спустя 14 минут 19 секунд:
Код: Выделить всё
    object MenuItem2: TMenuItem
      AutoCheck = True
      Caption = 'New Item2'
      Checked = True
      GroupIndex = 1
      RadioItem = True
      OnClick = MenuItem2Click
    end
    object MenuItem3: TMenuItem
      AutoCheck = True
      Caption = 'New Item3'
      GroupIndex = 1
      RadioItem = True
      OnClick = MenuItem2Click
    end
    object MenuItem4: TMenuItem
      AutoCheck = True
      Caption = 'New Item4'
      GroupIndex = 1
      RadioItem = True
      OnClick = MenuItem2Click
    end
v-t-l
энтузиаст
 
Сообщения: 742
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Можно организовать GroupBox или RadioGroup в меню

Сообщение BamsikPotapov » 18.03.2012 14:41:36

GroupIndex и AutoCheck не могу никак престроить. галочка ставится, при нажатии на другой пункт устанавливается в нём и не снимается с другого.
В меню пункт есть "Кол-во знаков после запятой" в нём 10 пунктов с именами от "1" до ""10" всем этим пунктам присвоено GroupIndex 1.
Потом я поступил так:
1. присвоил одному из них AutoCheck не помогло
2. присвоил всем AutoCheck не помогло
3. присвоил пункту "Кол-во знаков после запятой" AutoCheck не помогло
Скажи точнее как у тебя получилось

Добавлено спустя 12 минут 11 секунд:
Простите заработало. Но я AutoCheck не трогал, но написал событие на каждый пункт и указал что этот пункт Checked:=true; и использовал свойство RadioItem=true и метка начала перемещаться.
А когда события не было то она не снималась.
Спасибо всем кто помогал.
Аватара пользователя
BamsikPotapov
новенький
 
Сообщения: 54
Зарегистрирован: 31.12.2011 19:30:39
Откуда: Меня в капусте нашли


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 235

Рейтинг@Mail.ru