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

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

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

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: создать элемент управления  (Прочитано 3692 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rmnpop66
Новичок
*
Offline Offline

Сообщений: 4


« Стартовое сообщение: 3 Февраль 2014, 08:52 »

Помогите, пожалуйста, кто знает. Требуется написать макрос, создающий в электронной таблице Calc элемент управления "список", привязанный к ячейке. Не могу: 1)установить привязку к ячейке - нашел только свойство Anchor в com.sun.star.sheet.shape, но оно readonly. 2)назначить связанную ячейку и сказать, чтоб хранила номер выбранного элемента в списке (то что вручную делается в свойствах элемента управления, вкладка "данные") - вообще ничего похожего не нашел. Заранее благодарен.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 3 Февраль 2014, 11:59 »

Добро пожаловать на форум!

Anchor - привязка элемента управления (к листу целиком или к конкретной ячейке) - только поведение контрола при изменении размера колонки/строки: оставаться на месте или переползать следом за верхним левым углом "своей" ячейки.

А привязка данных делается так:
Связанная ячейка - oControl.getValueBinding().BoundCell - CellAddress структура из трех целых чисел - лист, колонка и строка
Исходный диапазон ячеек - oControl.getListEntrySource().CellRange - CellRangeAddress структура из пяти целых чисел - лист, левая/правая колонки и верхняя/нижние строки диапазона

Поставь себе расширение MRI - эти названия я отыскал с его помощью буквально за три минуты.
Записан

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

Сообщений: 4


« Ответ #2: 3 Февраль 2014, 16:50 »

Anchor - привязка элемента управления (к листу целиком или к конкретной ячейке) - только поведение контрола при изменении размера колонки/строки

Да, я спрашивал и о привязке и о связанной ячейке. Нужно и то, и то. Список должен быть виден в определенной ячейке, и при ее перемещении соответственно перемещаться. За getValueBinding огромное спасибо - буду знать, где копаться. MRI есть для LibreOffice?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #3: 3 Февраль 2014, 17:49 »

MRI есть для LibreOffice?
Вообще-то есть, но там его выкладывают с небольшим опозданием.  Это не страшно, офисы настолько мало различаются, что MRI прекрасно работает под любым из них (вот только что проверил под LibreOffice 4.2.0.4 - работает)
Записан

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

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


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


WWW
« Ответ #4: 3 Февраль 2014, 18:32 »

Ах да, чуть не забыл! Попытки программно ткнуть носом ListBox в номер выбранного элемента обречены, нет в API доступа к этому свойству. Поэтому народ обычно берет значение и обрабатывает его MATCH'ем или VLOOKUP'ом. См. здесь
Записан

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

Сообщений: 4


« Ответ #5: 4 Февраль 2014, 20:16 »

Спасибо за участие к моей проблеме. Прошу прощения, что не описал задачу подробнее. Надо сделать некий расчет. Для полусотни входных параметров и десятка выходных нужен выбор единиц измерения. Хочется, чтобы для каждого такого параметра список выбора единиц измерения и формулы пересчета в Си или обратно добавлял макрос. Основные расчетные формулы будут потом вводиться вручную. Данные тоже вручную, так что программный доступ к контролу пока не актуален.
Связанная ячейка - oControl.getValueBinding().BoundCell
Здесь печаль. BoundCell только для чтения. Метод setValueBinding, как я понял, предназначен для установки ЗНАЧЕНИЯ связанной ячейки. И не более того.
Попытки программно ткнуть носом ListBox в номер выбранного элемента обречены
Не совсем понял. Надо получить выбранный элемент по его номеру? Или номер выбранного элемента? Или что-то другое? Туплю вечером.
Записан
rmnpop66
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #6: 5 Февраль 2014, 07:35 »

Попытки программно ткнуть носом ListBox в номер выбранного элемента обречены
А, кажется понял (действительно тупил!). В тексте макроса по Вашей ссылке пытаются установить выбранный элемент списка. У меня были какие-то подозрения, что напрямую нельзя, потому что иначе вся эта канитель с изменением выбранного элемента при установке значения связанной ячейки не имеет особого смысла. Получается, что основной способ программно выбрать элемент списка - setValueBinding? И держать в голове то, что выбранный элемент списка изменится не сразу, а только после того, как изменение связанной ячейки поймает обработчик? Как-то не по фэн-шую. Спасибо за ссылку, обязательно посмотрю как делает народ, сейчас со временем большие проблемы.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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