Как с первого раза открыть диалоговое окно?

Автор cyberbob, 27 ноября 2020, 20:08

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

cyberbob

Всем добрый день

LibreOffice 4.2.4.2 Calc.
В модуле Standard документа doc1.ods есть диалоговое окно FormFind. На листе этого документа есть кнопка BtnFind, к которой привязан несложный макрос BtnFind_Click:


Dim fDialog As Object

Sub BtnFind_Click()
  BasicLibraries.LoadLibrary(Standard)
  fDialog = CreateUnoDialog(DialogLibraries.Standard.FormFind)
  fDialog.Execute()
End Sub


Если после открытия документа нажать на кнопку BtnFind, то возникает ошибка:
com.sun.star.script.LibraryNotLodedException

При повторном нажатии на кнопку, диалоговое окно открывается и всё работает. Что не хватает?? Может быть какую-нибудь библиотеку нужно загружать?

eeigor

#1
Может, кавычки нарисовать?
И модуль самого документа надо загружать?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

cyberbob

Прошу прощения. С экрана переписывал код - забыл кавычки. Но дело не в них. С кавычками тоже не работает.

cyberbob

Вот так заработало:

Sub ShowDialog()
Dim oLib As Object, oModule As Object, oDlg As Object
DialogLibraries.loadLibrary("MyDlgLib")
oLib = DialogLibraries.getByName("MyDlgLib")
oModule = oLib.getByName("MyDlg")
oDlg = CreateUnoDialog(oModule)
'InitializeDlg() 'code to initialize the dialog contents
If oDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
Then
'FinalizeDlg() 'code to do something with the user's input
End If
oDlg.dispose
End Sub



Спасибо за ответ!

rami

Какое отношение ваш последний код имеет к коду в первом вопросе?


Должно работать так:
Dim fDialog As Object

Sub BtnFind_Click()
'    BasicLibraries.LoadLibrary("Standard")
    DialogLibraries.LoadLibrary("Standard")      'нужно загружатъ DialogLibraries
    fDialog = CreateUnoDialog(DialogLibraries.Standard.FormFind)
    fDialog.Execute()
End Sub

cyberbob

Так тоже работает! Большое спасибо  :)

ЦитироватьКакое отношение ваш последний код имеет к коду в первом вопросе?
Код взят из LibOBasic-6-Dialogs-Flat-A4-EN-v103.pdf - я вообще говорю о принципе действия - имена переменных и макросов у меня свои. Долго, просто, перетаскивать каждый раз реальный код. LibreOffice у меня под виртуалкой на AstraLinux, а в форум я пишу из Windows.