Описание.
Диалоги используются для создания пользовательского интерфейса с помощью Basic. Библиотека состоит из скриптов и диалогов. Скрипты сгруппированы в модули.
Создание диалога с помощью GUI-интерфейса.
1) для создания диалога необходимо открыть AlterOffice ACell -> сохранить документ, в данном случае документ называется: "5445545454.ods".
2) перейти в "Сервис" -> "Макросы" -> "Редактировать макросы..."
3) откроется диалоговое окно "Мои макросы и диалоги. Standard - AlterOffice Basic" -> переходим в "Диалог" -> "Управление диалогами..."
4) откроется диалоговое окно "Управление макросами Basic" -> в "Диалоги" выбираем сохраненный файл: "5445545454.ods" -> "Standard" -> "Создать..."
5) появится новое окно "Новый диалог" -> в "Имя:", для примера назовем диалог "dialog_test" -> "Ок"
6) теперь в окне "Управление макросами Basic" появится наш созданный диалог "dialog_test" -> нажимаем "Закрыть"
7) после создания диалога, появится панель управления диалогом и сам диалог в окне
Создание диалога с помощью Basic.
1) в этом примере с помощью Basic создадим простой диалог, который выводит диалоговое окно с полем для ввода данных и двумя кнопками: "Ок" и "Cancel"
2) после ввода данных и нажатия "Ок" появится "MessageBox" с введенным текстом
3) ниже представлен код, который создает диалог с окно ввода и выводит данные в MsgBox (вложение - create_dialog_Basic.BAS):
oDialogModel = createUnoService( "com.sun.star.awt.UnoControlDialogModel" -- создание модели диалога
oDialogModel.Title = "Тестовый диалог" -- создание заголовока
oDialogControl = createUnoService( "com.sun.star.awt.UnoControlDialog" ) -- создание элемента управления диалогом
oDialogControl.setModel( oDialogModel ) -- создание элемента управления диалогом
oDialogControl.setPosSize( 50, 50, 250, 150, com.sun.star.awt.PosSize.POSSIZE) -- устанавливаем положение и размер
Следующие несколько строк создают модель текстового поля, вставляют ее в модель диалогового окна, устанавливают ее положение и размер и устанавливают фокус на текстовое поле.
oFieldModel = oDialogModel.createInstance( "com.sun.star.awt.UnoControlEditModel" )
oDialogModel.insertByName( "TextField1", oFieldModel )
oFieldControl = oDialogControl.getControl("TextField1")
oFieldControl.setPosSize(100, 50, 100, 20, com.sun.star.awt.PosSize.POSSIZE)
oFieldControl.setFocus
Затем создаются две модели кнопок: "ОК" и "Cancel". Они вставляются в диалоговую модель, помечаются и размещаются.
oButtonModel = oDialogModel.createInstance( "com.sun.star.awt.UnoControlButtonModel" )
oButtonModel.PushButtonType = com.sun.star.awt.PushButtonType.OK
oDialogModel.insertByName( "OKButton", oButtonModel )
oButtonModel.Label = "OK"
oButtonControl = oDialogControl.getControl("OKButton")
oButtonControl.setPosSize(50, 100, 50, 30, com.sun.star.awt.PosSize.POSSIZE)
oButtonModel = oDialogModel.createInstance( "com.sun.star.awt.UnoControlButtonModel" )
oButtonModel.PushButtonType = com.sun.star.awt.PushButtonType.CANCEL
oDialogModel.insertByName( "CancelButton", oButtonModel )
oButtonModel.Label = "Cancel"
oButtonControl = oDialogControl.getControl("CancelButton")
oButtonControl.setPosSize(150, 100, 50, 30, com.sun.star.awt.PosSize.POSSIZE)
После этого диалоговое окно управления становится видимым и пользователю разрешается взаимодействовать с ним и нажимать кнопку «ОК» или «Cancel». В зависимости от нажатия кнопки отображается окно сообщения (MessageBox), в котором отображается либо текст, введенный в текстовое поле, либо сообщение о закрытии диалогового окна.
oDialogControl.setVisible( True )
nButtonClicked = oDialogControl.execute
sText = oFieldControl.Text
If nButtonClicked = 1 Then
MsgBox "Текст: " & sText
Else
MsgBox "Диалог закрыт!"
End If