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

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

6 Март 2021, 18:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 61


« Стартовое сообщение: 23 Октябрь 2019, 16:30 »

На ЛО переехал недавно, сильно не ругайте.
Интересует следующее:
1. Наполнение списка с другого листа (по условию).
2. Событие выбора элемента списка.
3. Узнать выбранное значение
4. Очистка списка.

Если можно, пример по одной строчке.
« Последнее редактирование: 23 Октябрь 2019, 16:39 от ali_vlad » Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 396


« Ответ #1: 23 Октябрь 2019, 17:05 »

1. Наполнение списка с другого листа (по условию).
С листа эл. таблицы Calc (ods/xls)?
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #2: 23 Октябрь 2019, 17:06 »

Конечно же ods
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 396


« Ответ #3: 23 Октябрь 2019, 17:10 »

Все это есть в книгах Эндрю Питоньяка и кое-что в книге Александра Бейна, на русском, гуглится влет.

Можно просто в свойствах контрола List/ComboBox указать Source и LinkedCell (ячейки, диапазоны) и напрямую макросом их читать/обновлять/стирать, если не хочется нырять в методы списков Add/Remove итд.
« Последнее редактирование: 23 Октябрь 2019, 17:15 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #4: 23 Октябрь 2019, 17:14 »

Пипец, ну и ответ, даже ссылки нет. Гугл выдаёт всяких художников и композиторов.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #5: 23 Октябрь 2019, 17:17 »

Поищи по форуму на питоньяка ссылка была точно
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Bigor
Мастер
*****
Offline Offline

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


« Ответ #6: 23 Октябрь 2019, 20:18 »

Вот что выдал поиск по спискам в разделе Basic. По ссылке лежит файлик со списком, ниже еще несколько.
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #7: 23 Октябрь 2019, 21:40 »

Вот что выдал поиск по спискам в разделе Basic. По ссылке лежит файлик со списком, ниже еще несколько.
Да уж, после VBA тут придётся начинать изучение с самого начала. Контекстной помощи при вводе нет, справки нет. Обращение к элементам вообще темный лес.
Подскажите литературу по basic'у для чайника.
Записан
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #8: 24 Октябрь 2019, 23:03 »

Мне надо, чтобы в поле со списком добавились значения ячеек (не диапазон) А1, А2, А3, А4, А5. Можно через массив.
Ошибка вылезает, я так и не понял почему.

* Список.ods (9.17 Кб - загружено 8 раз.)
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 396


« Ответ #9: 25 Октябрь 2019, 08:09 »

В файле 2 способа, оба без макросов.

А макросом можно собрать значения и по одному добавить их в контрол. Но нужно писать обработчики событий, продумывать логику итп. Calc эту грязную работу может делать прекрасно сам (вложение).

Списки "на формулах" (Данные - Проверка) - могут быть саморасширяемыми и динамическими, зависящими от выбранных значений в других списках. При этом без макросов вообще. И работать будут быстрее чем макрос, даже на сотнях-тысячах строк (на десятках тыс. будут тупить любые способы кроме баз данных, где поддерживается понятие RowSet и курсор).

* Список.ods (11.33 Кб - загружено 5 раз.)
« Последнее редактирование: 25 Октябрь 2019, 08:17 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #10: 25 Октябрь 2019, 08:19 »

Ошибка вылезает, я так и не понял почему.
Элемент "Поле со списком" находится в форме, вы пытаетесь вставлять данные прямо в форму, а не в список.
Код:
Sub Main
Dim vData, oForm, oCombo, i%
vData=ThisComponent.sheets(0).getCellRangeByPosition(0, 0, 0, 5).DataArray  'A1:A6
oForm=ThisComponent.DrawPages(0).Forms.getByName("fOborud")    'форма
oCombo=oForm.getByName("sOborud")           'комбобокс
For i=0 To UBound(vData)
oCombo.insertItemText(i, vData(i)(0))       'вставка данных в комбобокс
Next
End Sub
Записан

ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #11: 25 Октябрь 2019, 08:43 »

К сожалению, ни эксель, ни калк не смогут формулами сделать то, что мне нужно. Конечно, более подходящий для этого способо - БД, но sql я не знаю вообще. Может когда нибудь доросту до БД, но не сейчас.
Мне нужны выборки с разных листов многлуровневыми связанными списками. В старбейсике я хоть что-то понимаю. За пример спасибо, буду осмысливать.
Продолжение следует.
Записан
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #12: 25 Октябрь 2019, 10:38 »

Ошибка вылезает, я так и не понял почему.
Элемент "Поле со списком" находится в форме, вы пытаетесь вставлять данные прямо в форму, а не в список.
Код:
Sub Main
Dim vData, oForm, oCombo, i%
vData=ThisComponent.sheets(0).getCellRangeByPosition(0, 0, 0, 5).DataArray  'A1:A6
oForm=ThisComponent.DrawPages(0).Forms.getByName("fOborud")    'форма
oCombo=oForm.getByName("sOborud")           'комбобокс
For i=0 To UBound(vData)
oCombo.insertItemText(i, vData(i)(0))       'вставка данных в комбобокс
Next
End Sub
Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал.
Кстати, как очистить список полностью?
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 049


« Ответ #13: 25 Октябрь 2019, 10:41 »

Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал.
Честно хотел ответить. В google.com вбил "документация", открыл первую ссылку, поискал .additem ... ЧЯДНТ? Подмигивающий
Записан

С уважением,
Михаил Каганский
ali_vlad
Форумчанин
***
Offline Offline

Сообщений: 61


« Ответ #14: 25 Октябрь 2019, 10:44 »

Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал.
Честно хотел ответить. В google.com вбил "документация", открыл первую ссылку, поискал .additem ... ЧЯДНТ? Подмигивающий
Читать умеем? Нет? А почему?
НЕ РАБОТАЕТ
НЕ РАБОТАЕТ
Так понятно?
Записан
Страниц: 1 2 3 4 »   Вверх
  Печать  
 
Перейти в:  

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