Nur kann ich meinen Button zwar jetzt mit "getByName" finden, aber er wird im Sheet nicht angezeigt. Ich schätze ich übersehe da irgendwas bezüglich Model/View. Kann mir jemand helfen?
Function CreatePoint(xPos, YPos) as New com.sun.star.awt.Point
Dim oPoint as New com.sun.star.awt.Point
oPoint.X = xPos
oPoint.Y = yPos
CreatePoint() = oPoint
End Function
Function CreateSize(iWidth, iHeight) As New com.sun.star.awt.Size
Dim oSize As New com.sun.star.awt.Size
oSize.Width = iWidth
oSize.Height = iHeight
CreateSize() = oSize
End Function
Der Teil funktioniert nun ganz gut.
Allerdings habe ich jetzt ein anderes Problem. Wie verlinke ich eine Methode auf den Button.
Ich schätze das läuft mittels eines Eventlisteners, aber ich habe weder eine Ahnung, wie der Aussehen muss, noch bin ich bisher fündig geworden.
Es geht also darum dem so erstellten Button zu sagen, er solle die sub "Test" ausführen.
Tictac hat geschrieben:Ich schätze das läuft mittels eines Eventlisteners, aber ich habe weder eine Ahnung, wie der Aussehen muss, noch bin ich bisher fündig geworden.
Die Onlinehilfe F1 beschreibt ziemlich gut die Erzeugung von Listener.
Sub Button
Dim btnControl as Object
Dim btnShape as Object
Dim oEvents(0) As New com.sun.star.script.ScriptEventDescriptor
'buttonContolsAnlegen
btnControl = CreateUnoService("com.sun.star.form.component.CommandButton")
btnControl.Label = "Test"
btnControl.Name = "Test"
'EventListenerErstellen
oEvents(0).ListenerType = "XActionListener"
oEvents(0).EventMethod = "actionPerformed"
oEvents(0).AddListenerParam = ""
oEvents(0).ScriptType = "StarBasic"
oEvents(0).ScriptCode = "document:Standard.ButtonNeu.btnTestMethode"
'EventListenerHinzufügen
btnControl.addEventListener(oEvents(0))
'Button auf Shape legen und ausgeben
btnShape = ThisComponent.CreateInstance("com.sun.star.drawing.ControlShape")
btnShape.Size = createSize(2200,800)'Größe Kontrollfeld 2,2x0,8 cm
btnShape.Position = createPoint(1500, 3000) 'Position Kontrollfeld bei x=1,5 cm, y=3cm
btnShape.control = btnControl
ThisComponent.Sheets(0).DrawPage.Add(btnShape)
End Sub
Allerdings bekomme ich beim EventlistenerHinzufügen einen Fehler (Illegal Argument: cannot coerce argument type during corereflection call!)
Ich habe keine Ahnung was ich da falsch mache und damit ist alles andere auch nicht hilfreich.