Использования диалога

Пример 1

Описание:
В данном примере:
- создадим диалог;
- с помощью макроса Basic напишем функционал для диалога, который берет из ячейки A1 данные + данные из диалога и выводит в MessageBox;
Реализация:
1) откроем AlterOffice ACell -> сохраним документ с названием example_1.ods
2) переходим в "Сервис" -> "Макросы" -> "Редактировать макрос..."
3) переходим в "Диалог" -> "Управление диалогами..."
4) в открывшимся окне "Управление макросами Basic" -> переходим во вкладку "Диалоги" -> выбираем наш сохраненный файл "example_1.ods" -> выбираем "Standart" -> нажимаем "Создать..."

5) в открывшимся окне "Новый диалог" -> введем название "test_dialog" -> "Ок"

6) окно "Управление макросами Basic" закрываем

7) переходим в созданный диалог "test_dialog"

8) создадим "Текстовое поле" и "Кнопку"

9) Сохраним (Ctrl + S) и закроем "example_1.odsStandart - AlterOffice Basic"
10) Создадим макрос Basic: "Сервис" -> "Макросы" -> "Управление макросами" -> "Basic"
11) в открывшимся окне "Макрос Basic" -> в поле "Макрос из" выбираем "example_1.ods" -> Standart -> "Создать"

12) в новом диалоговом окне "Новый модуль" -> в поле "Имя" введем имя модуля, в данном случае "test_macros" -> нажимаем "Ок"

13) напишем макрос Basic и сохраним (полный код во вложении):

Sub Dialog1Show
   DialogLibraries.LoadLibrary("Standard") -- загружает стандартную библиотеку диалогов
   oDialog1 = CreateUnoDialog( DialogLibraries.Standard.test_dialog ) -- cоздает диалоговое окно с именем oDialog1, используя шаблон test_dialog из стандартной библиотеки
   oDialog1.Execute() -- отображает созданное ранее диалоговое окно
End Sub

Sub read_dialog
Dim cell_val
ot_1 = oDialog1.GetControl("TextField1") -- получает элемент управления с именем TextField1 из диалогового окна oDialog1 и присваивает его ot_1
cell_val = ThisComponent.Sheets(0).getCellByPosition(0, 0) -- получает значение ячейки, расположенной в строке = 0 и столбце = 0, из первого листа текущего документа и присваивает его значению cell_val
msgbox cell_val.String & chr(13) & "Что то: " & ot_1.Text -- отображает окно сообщения со значением cell_val, разрывом строки (chr(13)), текстом "Что то: " и текст, введенный в элемент управления TextField1
End Sub

14) теперь необходимо привязать макрос к диалогу (кнопкам), переходим к диалогу

15) выбираем кнопку -> переходим во вкладку "События"

16) находим "Выполнить действие" -> нажимаем на "..."

17) выбираем "Назначенное действие" -> "Макрос..."

18) выбираем "test_macros" -> "read_dialog" -> "Ок"

19) в окне "Назначить действие" появился макрос -> "Ок"

20) сохраняем "Ctrl + S" и закрываем редактор
21) запишем любые данные в ячейку А1

22) запустим макрос "Сервис" -> "Макросы" -> "Выполнить макрос..."
23) запускаем "Dialog1Show"

24) заполним поле (1) и нажмем на кнопку (2)

25) результат

Пример 2

Описание:
В данном примере:
- создадим диалог;
- с помощью макроса Basic напишем функционал для диалога, при нажатии кнопки, в окне диалога, счетчик отсчитывает числа
Реализация:
Необходимо выполнить шаги как в примере 1, с 1 - 12.
13) напишем макрос Basic и сохраним (полный код во вложении):

Sub Dialog_Show
   DialogLibraries.LoadLibrary("Standard") -- загружает стандартную библиотеку диалогов
   oDialog1 = CreateUnoDialog( DialogLibraries.Standard.test_dialog ) -- cоздает диалоговое окно с именем oDialog1, используя шаблон test_dialog из стандартной библиотеки
   oDialog1.Execute() -- отображает созданное ранее диалоговое окно
End Sub

Sub Add_Data_Dialog
  Dim iCount as integer
  ot_1 = Dialog_1.GetControl("ListBox1") -- извлекает элемент управления с именем "ListBox1" из Dialog_1 и присваивает его ot_1
  iCount = ot_1.ItemCount -- получает количество элементов в ListBox и присваивает его iCount
  ot_1.additem("Счетчик: " & iCount,0) -- добавляет в ListBox новый элемент с меткой "Счетчик: ", за которой следует значение iCount с индексом 0
End Sub

Далее, выполним шаги, как в примере 1, с 14 по 22.
23) запускаем "Dialog_Show"

24) результат

Прикреплённые файлы
example_1.bas
404kb
example_2.BAS
404kb