Как управлять списком ComboBox?

Автор Illar, 25 мая 2024, 14:08

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

Illar

Здравствуйте! Вопрос для вас, - скорей всего, - наивный, но оперативно найти нужную информацию я, к сожалению, не смог. Задача у меня такая: в диалоговом окне создано поле со списком ("Значение1", "Значение2",..,"ЗначениеN") и я надеялся в зависимости от выбранного значения запускать выполнение соответствующих макросов ("Макрос1", "Макрос2",..,"МакросN"). Как это реализовать? Разобраться интуитивно не получилось. Прошу совета у вас.

economist

У Комбо есть набор Событий, к которым можно привязать Макрос. Макрос может понять какой Комбо его вызвал (Event) и по нему получить новое значение Комбо, выполнить нужное в Макроса по условию-значению.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

Сначала уточним терминологию.
Комбобокс позволяет ввести произвольное значение с клавиатуры или путем выбора из списка.
Скорее всего, Вы имеете в виду Listbox с выпадающим списком, так как число возможных значений ограничено фиксированным списком. Так?
Владимир.

Illar

Цитата: sokol92 от 25 мая 2024, 14:29Сначала уточним терминологию.
Комбобокс позволяет ввести произвольное значение с клавиатуры или путем выбора из списка.
Скорее всего, Вы имеете в виду Listbox с выпадающим списком, так как число возможных значений ограничено фиксированным списком. Так?
Да, именно так. Выпадающий список с указанным ранее фиксированным количеством значений.

Illar

Цитата: economist от 25 мая 2024, 14:16У Комбо есть набор Событий, к которым можно привязать Макрос. Макрос может понять какой Комбо его вызвал (Event) и по нему получить новое значение Комбо, выполнить нужное в Макроса по условию-значению.
С другими возможностями диалоговых окон так и делалось. Например, с кнопками все оказалось достаточно понятно.

sokol92

См. приложенный файл. В BasicIDE выделите Listbox1 и посмотрите закладку "События".
Запустите макрос ShowDialog.

Sub ShowDialog
  Dim oDialog As Object
  DialogLibraries.LoadLibrary("Standard")
  oDialog=CreateUnoDialog(DialogLibraries.GetByName("Standard").getByName("Dialog1"))
  oDialog.execute
End Sub

Sub ListBoxChanged(oEvent)
   Dim oControl As Object, sName As String, sItem As String
   oControl=oEvent.Source        ' элемент управления
   sName=oControl.Model.Name     ' имя элемента управления
   sItem=oControl.SelectedItem   ' Выбранный элемент списка
   Msgbox sName & ": " & sItem
End Sub
Владимир.

Illar

Цитата: sokol92 от 25 мая 2024, 15:00См. приложенный файл. В BasicIDE выделите Listbox1 и посмотрите закладку "События".
Запустите макрос ShowDialog.

Sub ShowDialog
  Dim oDialog As Object
  DialogLibraries.LoadLibrary("Standard")
  oDialog=CreateUnoDialog(DialogLibraries.GetByName("Standard").getByName("Dialog1"))
  oDialog.execute
End Sub

Sub ListBoxChanged(oEvent)
   Dim oControl As Object, sName As String, sItem As String
   oControl=oEvent.Source        ' элемент управления
   sName=oControl.Model.Name     ' имя элемента управления
   sItem=oControl.SelectedItem   ' Выбранный элемент списка
   Msgbox sName & ": " & sItem
End Sub

Получилось! Теперь надо как-то "прикрутить" свои макросы к каждому выбранному элементу sItem.

sokol92

Не обязательно цитировать сообщение целиком - это мешает просмотру темы. Можно выделить необходимый фрагмент текста и нажать появившуюся кнопку "ЦИТИРОВАТЬ ВЫДЕЛЕННОЕ".
Владимир.

Illar