You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@openoffice.apache.org by technik <te...@jrsch.de> on 2015/10/15 17:09:16 UTC
Schaltfläche per Makro erzeugen
Hallo,
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.
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? Wenn
ja, wie?
Zugreifen kann ich hiermit. (Irgendwo geklaut)
...
bgc=&Hc9c9c8
feld="Schaltfläche 1"
odoc=thisComponent
oSheet= oDoc.Sheets().getByName("KT auszug")
odraw1=oSheet.drawpage
form1=odraw1.forms.getbyIndex(0)
oContr=form1.getbyname(sfeld)
ocontr.backgroundcolor=bgc
...
Horst
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Schaltfläche per Makro erzeugen
Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
Hallo,
> From: technik [mailto:technik_div@jrsch.de]
> aber die Frage war, wie das mit einem Makro
> realisiert wird
und genau dazu gibt der von mir gepostete Link Auskunft, siehe also:
https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=66707
> Also
> meinMakro ("NurEinBeispiel")
> kann ich nicht aufrufen, nur meinMakro().
ich habe leider nicht die geringste Ahnung warum, denn zum Aufruf mit Parameter ist eigentlich nicht mehr zu sagen als ich schon schrieb.
Vielleicht muss ich das nochmal genauer so formulieren:
um ein Makro mit Parameter aufzurufen braucht es ein entsprechendes Makro:
Sub meinMakro (meinParameter As String)
'...
End Sub
und zum eigentlichen Aufruf dieses Makros ein (Hilfs-)Makro das den Aufruf bewerkstelligt, also:
Sub mein_aufrufmakro()
meinMakro ("einParameter")
End Sub
dieses letzte Makro (Sub mein_aufrufmakro()) ist dann der Schaltfläche zuzuordnen.
> Allerdings kann mich mich mit dem Parameter tag behelfen
das ist kein Behelf sondern ein anderer Weg _für einen anderen Zweck_ und das das Deine Absicht war war aus Deiner ursprünglichen Email für mich nicht zu entnehmen.
Gruß
Jörg
---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org
Re: Schaltfläche per Makro erzeugen
Posted by technik <te...@jrsch.de>.
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
>
Re: Schaltfläche per Makro erzeugen
Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
> 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