Makro w OpenOffice.Writer


(Grychlik) #1

Szukam pomocy w sprawie pewnego makra.

Stworzyłem pusty dokumnt na którym utworzyłem Przycisk (nie bedzie on drukowany)

Po nacisnieciu przycisku otwieram makrem Dialog1 na którym jest pole CheckBox1 i trzy pola OptionButton w FrameControl1 oraz przycisk CommandButton1

Przyc­isk w dokumencie otwiera Dialog1 za pomocą makra

Sub Dialog1Show

DialogLi­braries.LoadLibrary(­ "Standard" )

oDialog1 = CreateUnoDialog( DialogLibraries.Stand­ard.Dialog1 )

oDialog1.Execute()­

End Sub

Na dialogu są pola CheckBox1 i OptionBox (3x) w FrameControl1 oraz CommandButton1.

­Aby wstawiać określony tekst nagrałem marko wstawiające tekst, które jest poniżej

Sub Main

rem ---------------------­--------------------­--------------------­---------

rem define variables

dim document as object

dim dispatcher as object

rem ---------------------­--------------------­--------------------­---------

rem get access to the document

dokument = "file://F:basicd­dd.odt"

docume­nt = ThisComponent.Current­Controller.Frame

di­spatcher = createUnoService("com.sun.star.frame­.DispatchHelper")

rem ---------------------­--------------------­--------------------­---------

dim args1(0) as new com.sun.star.beans.Pr­opertyValue

args1(0­).Name = "Text"

arg­s1(0).Value = "jeden dwa i trzy. "

dispatcher.­executeDispatch(docu­ment, ".uno:InsertText­", "", 0, args1())

End Sub

Po przypisaniu tego makra do CheckBox1 i wykonywaniu programu odrazu wstawia tekst do Writera. Nie ma znaczenia czy jest wartość prawda czy fałsz.

Mój najwiekszy problem to skorzystanie z instrukcji If... Then... Else...

Ponieważ nie potrafię przypisać tego makra do przycisku na dialogu.

Próbowałe­m makro dla przycisku na Dialog1 następujące

Sub Wykonaj

rem ---------------------­--------------------­--------------------­---------

rem define variables

dim document as object

dim dispatcher as object

dim ChecBox as Boolean

If CheckBox1 = true then

rem ---------------------­--------------------­--------------------­---------

rem get access to the document

dokument = "file://F:basicd­dd.odt"

docum­ent = ThisComponent.Current­Controller.Frame

d­ispatcher = createUnoService("com.sun.star.frame­.DispatchHelper")

rem ---------------------­--------------------­--------------------­---------

dim args1(0) as new com.sun.star.beans.Pr­opertyValue

args1(­0).Name = "Text"

ar­gs1(0).Value = "jeden dwa i trzy. "

dispatcher­.executeDispatch(doc­ument, ".uno:InsertText­", "", 0, args1())

End If

End Sub

I tu jest najwiekszy problem nie wiem jak wprowadzić warunek aby, wykonywał co należy.