Hallo Jörg,
danke für die Antwort, aber die Frage war, wie das mit einem Makro
realisiert wird, Also per Makro Schaltflächen einfügen und mit einem
Makro verbinden.
Dazu habe ich inzwischen schon zwei Anleitungen gefunden und auch
inzwischen eine soweit ans Laufen bekommen, dass ich den Knopf erzeugen
und auch ein Makro zuordnen kann.
Momentan hakt es noch an dem Punkt, dass ich dem Makro keinen Parameter
mitgeben kann. Also
meinMakro ("NurEinBeispiel")
kann ich nicht aufrufen, nur meinMakro().
Allerdings kann mich mich mit dem Parameter tag behelfen, den ich
zuordnen und über einen Umweg auch auslesen kann. Das reicht für meine
Anwendung, ist aber nicht genau das, was ich wollte.
Horst
Für alle die es interessiert, hier der Code dazu:
REM ***** BASIC *****
REM BEispiel um einen Button einzubauen in ein Calc-sheet
REM Der Code ist kopiert und umgeschrieben. So ganz verstehe ich das nicht.
*_REM Eigentlich sollte das Makro direkt mit einem Parameter aufgerufen
werden, doch das geht nicht_**_
_**_REM AddListenerParam scheint nicht zu funktionieren_*
Sub Main
sname="knopf5"
stag="Haooloho"
CreateButton (sname, stag)
End Sub
sub hallo(Event)
xray Event
stext=S_read_tag(Event)
msgbox stext
end sub
Sub CreateButton (sname, stag as string)
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByIndex(0)
oDrawPage = oSheet.DrawPage 'Was oDrawPage = oDoc.getDrawPage()
sScriptURL =
"vnd.sun.star.script:Standard.Module1.hallo?language=Basic&location=document"
oButtonModel = AddNewButton(sname, sname, oDoc, oDrawPage,stag)
oForm = oDrawPage.getForms().getByIndex(0)
' find index inside the form container
nIndex = GetIndex(oButtonModel, oForm)
AssignAction(nIndex, sScriptURL, oForm)
' kontrolfeldfarbe(sname,&Hc889c8,"Moin") 'eigenes makro
thiscomponent.currentcontroller.setformdesignmode(false)
End Sub
' assign sScriptURL event as css.awt.XActionListener::actionPerformed.
' event is assigned to the control described by the nIndex in the
oForm container
Sub AssignAction(nIndex As Integer, sScriptURL As String, oForm As
Object)
aEvent =
CreateUnoStruct("com.sun.star.script.ScriptEventDescriptor")
With aEvent
.AddListenerParam = "Hallo Welt"
.EventMethod = "actionPerformed"
.ListenerType = "XActionListener"
.ScriptCode = sScriptURL
.ScriptType = "Script"
End With
oForm.registerScriptEvent(nIndex, aEvent)
End Sub
function S_read_tag(Event)
oButton = Event.source.model
Stag = oButton.tag
S_read_tag=stag
end function
Function AddNewButton(sName As String, sLabel As String, oDoc As
Object, oDrawPage As Object, stag as string) As Object
oControlShape =
oDoc.createInstance("com.sun.star.drawing.ControlShape")
aPoint = CreateUnoStruct("com.sun.star.awt.Point")
aSize = CreateUnoStruct("com.sun.star.awt.Size")
aPoint.X = 1000
aPoint.Y = 1000
aSize.Width = 3000
aSize.Height = 1000
oControlShape.setPosition(aPoint)
oControlShape.setSize(aSize)
oButtonModel =
CreateUnoService("com.sun.star.form.component.CommandButton")
oButtonModel.Name = sName
oButtonModel.Label = sLabel
oButtonModel.tag = stag
oControlShape.setControl(oButtonModel)
oDrawPage.add(oControlShape)
AddNewButton = oButtonModel
End Function
Function GetIndex(oControl As Object, oForm As Object) As Integer
Dim nIndex As Integer
nIndex = -1
For i = 0 To oForm.getCount() - 1 step 1
If EqualUnoObjects(oControl, oForm.getByIndex(i)) Then
nIndex = i
Exit For
End If
Next
GetIndex = nIndex
End Function
Am 16.10.2015 um 10:58 schrieb Jörg Schmidt:
From: technik [mailto:[email protected]]
ich habe ein Calc Dokument und eine darin eine Tabelle
Apfel
Birne
Banana
...
Jetzt möchte ich gerne mit einem Makro in die Tabelle(!)
Schaltflächen
hinzufügen (und formatieren)
Dabei soll in einer parallelen Tabelle die Schaltflächen mit
den Namen
angezeigt werden und bei Klicken einen Wert in eine bestimmte Zelle
eintragen.
und zwar sollen so viele Schaltflächen wie Einträge in der
Liste sein.
Hier also drei. Kommen Melonen noch hinzu müssen es vier
sein. Aber das
dürfte kein Problem sein. Auf eine bestehende Schaltfläche kann ich
zugreifen, nur weiß ich nicht wie ich eine neue anlegen kann.
Z.B. Siehe:
https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=66707
Die Schaltfläche soll mit einem Makro verbunden sein. Ist es
möglich dem
Makro einen Parameter mitzugeben, z.B. den Namen der
Schaltfläche?
Ja
Wenn
ja, wie?
Indem man den gewünschten Parameter definiert:
Sub meinMakro (meinParameter As String)
Und das Makro entsprechend aufruft:
meinMakro ("NurEinBeispiel")
Gruß
Jörg
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]