Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

20 Ноябрь 2017, 23:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как узнать состояние радиокнопки на листе? Помогите начинающему  (Прочитано 3294 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Стартовое сообщение: 7 Май 2014, 16:12 »

Для выбора режима работы с листом создал группу с радиокнопками.
Прописываю код:
Код:
  oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
  vForm=oForms.getByName("Форма")
  vButton = vForm.getByName("Группа 1")
А дальше - ступор...  Злой
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 359


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 7 Май 2014, 16:34 »

В свойствах каждой из кнопок, во вкладке Данные, можно задать адрес связанной ячейки и значение индекса для состояния "Включен".
Назначь каждой из радиокнопок уникальное значение (хоть 1-2-3, хоть Правка-Расчет-Просмотр - тексты в качестве значения допустимы) и одну и ту же связанную ячейку.
И в макросе анализируй значение из этой вот ячейки.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #2: 7 Май 2014, 17:12 »

Получилось! А связанную ячейку, чтоб не портила картину, спрятал под радиокнопками.
Спасибо!   Всё хорошо
Записан
dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #3: 7 Май 2014, 17:56 »

А одиночный переключатель никак не сделать? Чтоб по одной единственной кнопке по клику включался и отключался. Пробую - только включается...

Тьху ты, для этого же флажок есть  Смеющийся
« Последнее редактирование: 7 Май 2014, 18:01 от dndn » Записан
dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #4: 13 Июль 2014, 11:43 »

Вопрос тот же, только теперь не в Calc, а в диалоге.
Код:
  DialogLibraries.LoadLibrary( "Standard" )
  oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
  oCheckBox1 = oDialog1.getControl ("CheckBox1")
  state = oCheckBox1.getState()
И при установленном и при снятом флажке возвращает одно и то же значение - то, что установлено по умолчанию.
Что не так?
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 291


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #5: 13 Июль 2014, 13:28 »

Цитата:
И при установленном и при снятом флажке возвращает одно и то же значение - то, что установлено по умолчанию.
Что не так?
Все так и должно быть. Чтобы получить изменившееся значение нужно назначить флажку событие "Состояние изменено". Смотрите пример.

* CheckBox.ods (12.29 Кб - загружено 11 раз.)
« Последнее редактирование: 13 Июль 2014, 14:38 от rami » Записан

dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #6: 13 Июль 2014, 15:53 »

Странно, но Ваш пример абсолютно рабочий, а мой совершенно наоборот... :(

Диалог предназначен для добавления/изменения записей в БД. Перед вызовом в список загружаются уже имещиеся записи.
Стандартно необходимо только добавление данных. В текстовое поле вводится значение для новой записи, по кнопке "Добавить" значение поля добавляется в список и в таблицу БД.

Удаление значений может понадобиться только в отдельных, исключительных случаях, т.к. приведет к неизбежному каскадному удалению большого количества записей в других связанных таблицах. Поэтому решил такую возможность все-таки предусмотреть, но сделать ее изначально недоступной, а доступность кнопки удаления включать этим самым флажком.

Странно, что не срабатывает также включение доступности кнопки удаления:
Код:
 oCommandButton2.setEnable (True)
Т.е. код как бы выполняется, но действия не происходит, так же как и с флажком, кнопка остается недоступной.

Еще что заметил. В диалоге добавил кнопку "Закрыть диалог". По ней диалог нормально закрывается до тех пор, пока хотя бы один раз не изменил состояние флажка. После этого диалог не закрывается, только по нажатию на крестик закрытия.  :(

Перегруз не помог. Ща попробую удалить этот злополучный флажок и на его место поставить новый...

ЗЫ. Использую AOO 4.1. Система Windows 7
За ответ с примером огромнейшая благодарность
« Последнее редактирование: 13 Июль 2014, 15:57 от dndn » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 291


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #7: 13 Июль 2014, 16:17 »

Вы можете выложить документ? Если он "секретный" ,сделайте дубликат, вставьте новый чистый лист и удалите "секретные" листы. Я хочу посмотреть на макросы
Записан

dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #8: 13 Июль 2014, 16:48 »

Спасибо за содействие! В коде обработчика флажка заново создавал объект диалога,
Код:
DialogLibraries.LoadLibrary("Standard")
oDialog1=CreateUnoDialog(DialogLibraries.Standard.Dialog1)
в итоге с каждым нажатием создавался новый объект...  Смеющийся
Поэтому и кнопка "Закрыть" переставала работать...

Еще хотел сделать дополнительный сервис. При массовом групповом добавлении записей, чтобы в список добавлялись данные текстового поля по нажатию "Enter", а не по кнопке "Добавить". Вопрос был в этой теме:
http://forumooo.ru/index.php?PHPSESSID=2d178600ebff53e5a2a8ffd68077c0bd&topic=4287.msg26142#new
« Последнее редактирование: 13 Июль 2014, 17:17 от dndn » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 291


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 13 Июль 2014, 19:21 »

Для клавиши "Enter" нужно создавать отдельный обработчик события. Тоже самое можно сделать проще через клавишу "Tab". Введите слово в текстовое поле (в правом верхнем углу) и нажмите "Tab" , слово добавится в список. Это всего лишь пример добавления в список из текстового поля.

* CheckBox1.ods (12.43 Кб - загружено 6 раз.)
Записан

dndn
Пользователь
**
Offline Offline

Сообщений: 93



WWW
« Ответ #10: 13 Июль 2014, 20:23 »

Точно, как же я не догадался повесить добавления элемента списка на событие потери фокуса текстового поля?  В замешательстве

Я сделал кнопку "Добавить", а порядок перехода по элементам управления сделал так, чтоб после текстового поля шла кнопка, а по событию кнопки добавлял в список. Получалось, что без мыши надо было нажать сначала "Tab", затем "Enter".
Нужно было всего-навсего событие потери фокуса текстового поля направить на тот же обработчик, что и по кнопке  Смеющийся
Спасибо. Жаль, что здесь нет опции "Благодарность за пост". Разве что вот так:  Всё хорошо
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!