Как узнать выбранную радиокнопку из сгруппированных

Автор Ириминаге, 24 августа 2022, 11:23

0 Пользователи и 1 гость просматривают эту тему.

Ириминаге

Здравствуйте! Есть несколько радиокнопок, объединенных по имени. Как узнать, какая кнопка была выбрана? Через события не предлагать: состояние считывается после всех выборов/действий, по нажатию кнопки.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

economist

MVC-парадигма в OpenOffice|LibreOffice приводит к тому что нек-е объекты приходится искать перебором всех объектов. В комплекте с LO есть библиотека Tools и в ней есть методы, которые помогут найти всё:
getControlView
getControlModel
getControlShape

Зачем контролы имеют одинаковые имена? Проще дать разные, а "синхронность выкл/вкл" - реализовать кодом. Определить какой "нажатый" контрол запустил конкретный макрос - легко:   
Sub Macro(ev)
msgbox ev.Source.model.name
msgbox ev.Source.model.text ' или др. допустимое св-во этого контрола
End Sub
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

#2
Свойство State.

Кстати, когда вопрос касается элементов управления, полезно сразу пояснить,  идет ли речь о формах или диалогах. В данной теме можно догадаться, что речь идет о радиокнопках, относящихся к форме, поскольку они сгруппированы по имени (в диалогах это не так). Раздел темы, мне кажется, должен быть Base (так как это актуально не только для Basic).
Владимир.

Ириминаге

Честно говоря, я понадеялся, что если у элементов одно имя, то можно как-то по оному к нему обращаться и считывать/устанавливать значение. Однако, такой возможности я не нашел, но нашел "имя группы". Это то, что объединяет радиокнопки, оставляя им нормальные имена. И тут при помощи кирки, молотка и какой-то матери можно организовать работу с группой. Только возникает вопрос: зачем нужно было огород городить? Берешь элемент "Группа", запускаемый Мастер позволяет тебе добавить радиокнопки, а дальше что? Разгруппировать и переименовывать? Логика не прослеживается никак.

economist Мастер по умолчанию всем дает одинаковое имя. То бишь, по идее, как-то должно это использоваться без коньяка и инвективной лексики?
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

Ириминаге

То sokol92: виноват, но я сам путаюсь: с одной стороны это вроде как Base, а с другой стороны - Basic. Что до актуальности, так глубоко не копаю, но есть такое нехорошее чувство, что Вы правы.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

sokol92

Радиокнопки в форме групппируются следующим образом:
  • если заполнено (в свойствах элемента управления) поле "Имя группы" (GroupName), то группировка производится по этому имени.
  • если поле "Имя группы" не заполнено, то группировка произодится по одинаковым значения поля "Имя" (Name).

Для радиокнопок в диалоге правила группировки приводятся в книге А.Питоньяка OOME_4_0.odt.
Владимир.

Ириминаге

Цитата: sokol92 от 24 августа 2022, 16:54Радиокнопки в форме групппируются следующим образом:
  • если заполнено (в свойствах элемента управления) поле "Имя группы" (GroupName), то группировка производится по этому имени.
  • если поле "Имя группы" не заполнено, то группировка произодится по одинаковым значения поля "Имя" (Name).

Для радиокнопок в диалоге правила группировки приводятся в книге А.Питоньяка OOME_4_0.odt.
Посмотрел. Интересное решение перебирать имена радиокнопок через массив. Но нет объяснения, как обращаться к сгруппированным по имени радиокнопкам.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

sokol92

Цитата: Ириминаге от 25 августа 2022, 08:25Но нет объяснения, как обращаться к сгруппированным по имени радиокнопкам.
Вы сами конструктор собственной судьбы.
Объедините радиокнопки в форме в группу (по GroupName), дайти им понятные Вам имена (Name) и обращайтесь по имени (oForm.getByName).
Владимир.

Ириминаге

Цитата: sokol92 от 25 августа 2022, 13:50
Цитата: Ириминаге от 25 августа 2022, 08:25Но нет объяснения, как обращаться к сгруппированным по имени радиокнопкам.
Вы сами конструктор собственной судьбы.
Объедините радиокнопки в форме в группу (по GroupName), дайти им понятные Вам имена (Name) и обращайтесь по имени (oForm.getByName).
Как-то военный врач с дежурным сержантом проверяли в лагере запасы воды.
В: - Какие меры вы принимаете для профилактики инфекции?
С: - Сначала мы кипятим воду.
В: - Хорошо. А потом?
С: - Мы её фильтруем.
В: - Отлично. А что вы с ней делаете дальше?
С: - А дальше, чтоб не рисковать, мы пьём пиво...

Вот такое у меня ощущение от ответа. Как обращаться по разным именам я давно понял. Я не понял как обращаться, если имя одною А оно одно, если добавлять радиокнопки через объект Группа.
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

mikekaganski

Для начала неплохо бы понять, что значит "узнать". Вы именно так сформулировали вопрос, но если все кнопки одинаково названы, то что именно Вы ожидаете получить в коде? Ссылку на объект? или имя (которое не уникально)? Или индекс в массиве?
С уважением,
Михаил Каганский

mikekaganski

Цитата: Ириминаге от 25 августа 2022, 14:22А оно одно, если добавлять радиокнопки через объект Группа

Необязательно - достаточно зайти внутрь сгруппированного объекта и поменять.
С уважением,
Михаил Каганский

mikekaganski

#11
Цитата: economist от 24 августа 2022, 12:19В комплекте с LO есть библиотека Tools и в ней есть методы, которые помогут найти всё:
getControlView
getControlModel
getControlShape

... GetControlGroupModel

В частности, для одинаково названных элементов в группе:

arrControls = GetControlGroupModel(thisComponent, "RadioGroup1")
С уважением,
Михаил Каганский

Ириминаге

Михаил, спасибо за ответ! В первом посте задача сформулирована предельно ясно, разве что я не указал где используется эта группа.
Разумеется, если имя не уникально, то должно быть что-то уникальное у выбранного элемента: индекс или отображаемое имя.
"Зайти внутрь и поменять"... а зачем? Лучше сразу брать рамку и кнопки. Настроить и сгруппировать. Если объект сделан, значит у него должны быть методы работы с функционалом. А тут получается: рамка ни при делах, а с кнопками сам крутись как хочешь.
Последнее сообщение похоже на правду, спасибо!

По двору бегает лысая девочка с бантиком
- Девочка, как же у тебя бантик на голове держится?!
- Как прибили так и держится!
Он верил в Мир и Здравый Смысл,
В себя, в людей, в любовь, в науку!
Но кто-то Кафку положил,
В его протянутую руку...

mikekaganski

#13
Цитата: Ириминаге от 25 августа 2022, 16:30В первом посте задача сформулирована предельно ясно

А, ок. Стандартный текст типа "я лучше вас знаю, что вам нужно для ответа". Больше не буду беспокоить, простите.
С уважением,
Михаил Каганский