openoffice-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From technik <technik_...@jrsch.de>
Subject Re: Schaltfläche per Makro erzeugen
Date Sat, 17 Oct 2015 08:36:40 GMT
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:technik_div@jrsch.de]
>> 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: users-de-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: users-de-help@openoffice.apache.org
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message