Программирование
Материал из Forumooo wiki
(Различия между версиями)
Clio (Обсуждение | вклад) (Новая страница: «==Как добавить интернет-ссылку в диалог Basic== Образец кода на Basic. <source lang="oobas"> Sub Dialog() oDlg = Create...») |
Clio (Обсуждение | вклад) (Использование диспетчера) |
||
Строка 37: | Строка 37: | ||
End Function | End Function | ||
</source> | </source> | ||
+ | |||
+ | ==Использование диспетчера== | ||
+ | Для использования диспетчера вам необходимо будет получить два объекта API OOo — создать сервис com.sun.star.frame.DispatchHelper и получить доступ к фрейму (носителю GUI) целевого объекта. Далее нужно будет вызвать executeDispatch указав ему целевой фрейм и команду которую необходимо отправить указанному фрейму. | ||
+ | Следующий код демонстрирует вставку из буфера обмена в позицию курсора: | ||
+ | |||
+ | <source lang="oobas">Sub PasteFromDispatcher | ||
+ | ' Вставка данных из буфера обмена | ||
+ | Dim oFrame As Object | ||
+ | Dim oDispath As Object | ||
+ | ' Получаем фрейм документа | ||
+ | oFrame = ThisComponent.CurrentController.Frame | ||
+ | ' Создаём диспетчер | ||
+ | oDispath = createUnoService("com.sun.star.frame.DispatchHelper") | ||
+ | ' Выполняем действие | ||
+ | oDispath.executeDispatch(oFrame, ".uno:Paste", "", 0, Array()) | ||
+ | End Sub</source> | ||
+ | |||
+ | Для использования некоторых команд вам также придётся создать массив содержащий аргументы команды — массив структур com.sun.star.beans.PropertyValue. | ||
+ | В следующем коде, выполняющем вставку формулы в текущую (активную) ячейку Calc, как раз используется команда диспетчера требующая аргументов: | ||
+ | |||
+ | <source lang="oobas">Sub EnterFormulaFromDispatcher | ||
+ | ' Ввод формулы в текущую ячейку листа Calc | ||
+ | Dim oFrame As Object | ||
+ | Dim oDispath As Object | ||
+ | ' Получаем фрейм документа | ||
+ | oFrame = ThisComponent.CurrentController.Frame | ||
+ | ' Создаём диспетчер | ||
+ | oDispath = createUnoService("com.sun.star.frame.DispatchHelper") | ||
+ | ' Создаём массив аргументов | ||
+ | Dim Args(0) As New com.sun.star.beans.PropertyValue | ||
+ | Args(0).Name = "StringName" | ||
+ | Args(0).Value = "=A1+A2" | ||
+ | ' Выполняем действие | ||
+ | oDispath.executeDispatch(oFrame, ".uno:EnterString", "", 0, Args()) | ||
+ | End Sub</source> | ||
+ | |||
+ | В прикреплённом файле приведён полный перечень команд диспетчеру. |
Версия 20:21, 18 октября 2010
Как добавить интернет-ссылку в диалог Basic
Образец кода на Basic.
Sub Dialog() oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1) A = CreateCtrWithProp("FixedHyperlink", MkRk(30,30,100,20), Array(), Array()) A.Text="кц.рф" A.URL="http://кц.рф" oDlg.addControl("A1",A) oDlg.Execute() End Sub Function CreateCtrWithProp( CtrType, aPosSize, aPropNames, aPropValues ) Dim oCtr As Object, oCtrModel As Object oCtr = createUnoService("com.sun.star.awt.UnoControl" & CtrType ) oCtrModel = createUnoService("com.sun.star.awt.UnoControl" & CtrType & "Model" ) oCtrModel.setPropertyValues( aPropNames, aPropValues ) With oCtr .setModel(oCtrModel) .setPosSize( aPosSize.X, aPosSize.Y, aPosSize.Width, aPosSize.Height, _ com.sun.star.awt.PosSize.POSSIZE ) End With CreateCtrWithProp() = oCtr End Function Function MkRk( nX As Long, nY As Long, nWidth As Long, nHeight As Long ) As com.sun.star.awt.Rectangle Dim Rk As Object Rk = createUnoStruct("com.sun.star.awt.Rectangle") With Rk .X = nX .Y = nY .Width = nWidth .Height = nHeight End With MkRk() = Rk End Function
Использование диспетчера
Для использования диспетчера вам необходимо будет получить два объекта API OOo — создать сервис com.sun.star.frame.DispatchHelper и получить доступ к фрейму (носителю GUI) целевого объекта. Далее нужно будет вызвать executeDispatch указав ему целевой фрейм и команду которую необходимо отправить указанному фрейму.
Следующий код демонстрирует вставку из буфера обмена в позицию курсора:
Sub PasteFromDispatcher ' Вставка данных из буфера обмена Dim oFrame As Object Dim oDispath As Object ' Получаем фрейм документа oFrame = ThisComponent.CurrentController.Frame ' Создаём диспетчер oDispath = createUnoService("com.sun.star.frame.DispatchHelper") ' Выполняем действие oDispath.executeDispatch(oFrame, ".uno:Paste", "", 0, Array()) End Sub
Для использования некоторых команд вам также придётся создать массив содержащий аргументы команды — массив структур com.sun.star.beans.PropertyValue. В следующем коде, выполняющем вставку формулы в текущую (активную) ячейку Calc, как раз используется команда диспетчера требующая аргументов:
Sub EnterFormulaFromDispatcher ' Ввод формулы в текущую ячейку листа Calc Dim oFrame As Object Dim oDispath As Object ' Получаем фрейм документа oFrame = ThisComponent.CurrentController.Frame ' Создаём диспетчер oDispath = createUnoService("com.sun.star.frame.DispatchHelper") ' Создаём массив аргументов Dim Args(0) As New com.sun.star.beans.PropertyValue Args(0).Name = "StringName" Args(0).Value = "=A1+A2" ' Выполняем действие oDispath.executeDispatch(oFrame, ".uno:EnterString", "", 0, Args()) End Sub
В прикреплённом файле приведён полный перечень команд диспетчеру.