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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Программируемый Диалог  (Прочитано 4423 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #54861: 11 Июнь 2020, 07:25 »

Может быть, .dispose(), но куда его определить?
.dispose() уничтожает диалог, а не закрывает, потом вы ещё что-то хотите делать с уже не существующим диалогом.

Закрывать диалог нужно методом oDlg.endExecute(), а чтобы переменная oDlg была видна в других макросах этого модуля, нужно объявлять её в модуле, а не в макросе.
Код:
Dim oDlg                          'эта переменная видна всем макросам этого модуля
Sub Dlg_Button()
Dim oDlgModel, oModel, oLis, i%   'эти переменные видны только в этом макросе
oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDlgModel.setPropertyValue("PositionX", 333) : oDlgModel.setPropertyValue("PositionY", 185)
oDlgModel.setPropertyValue("Width", 160) : oDlgModel.setPropertyValue("Height", 60)
oDlgModel.setPropertyValue("Title", "Кнопки в диалоге")
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setModel(oDlgModel)
oLis = CreateUnoListener("Button_", "com.sun.star.awt.XActionListener")
For i = 1 to 2
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
oModel.setPropertyValue("PositionX", Clng(70*i-50)) : oModel.setPropertyValue("PositionY", 20)
oModel.setPropertyValue("Width", 50) : oModel.setPropertyValue("Height", 20)
oModel.setPropertyValue("PushButtonType", 0) : oModel.setPropertyValue("Label", "Кнопка № "&i)
oDlgModel.insertByName("ComButton" & i, oModel)
oDlg.getControl("ComButton"&i).addActionListener(oLis)
Next
oDlg.createPeer(CreateUnoService("com.sun.star.awt.Toolkit"), null)
If oDlg.execute() = 0 Then Print "Выход без кнопки!" : Exit Sub
Print "Нажата какая-то кнопка!"
End Sub


Sub Button_actionPerformed(ActionEvent)
    Print "Нажата кнопка: "  & ActionEvent.Source.Model.Label
    oDlg.endExecute()
End Sub
Записан

Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

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