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]


Antwort per Email an