Seite 1 von 1
[Gelöst] Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 17:43
von Burning
Liebes Forum!
Wenn ich Dokumenten (Calc, Base) Formularelemte hinzufüge, dann kann ich über deren Eventhandler Subs starten. Soweit so einfach. Nur manchmal möchte ich nicht die 100ste Variante einer Prozedur anlegen, sondern der Prozedur beim Start einfach einen Parameter übergeben und das kriege ich nicht hin.
Beispiel:
"Button 1" ruft die Prozedur "KomplexeOperation" auf. "KomplexeOperation" schreibt ihr Ergebnis in Zelle A1. "Button 2" ruft die Prozedur "KomplexeOperationZwei" auf. Die macht genau das gleiche wie "KomplexeOperation" schreibt aber ihr Ergebnis in Zelle C3. Warum (zur Hölle

) kann ich, wenn ich die Eventhandler zuordne nicht einen Parameter mitgeben? Also im Prinzip "Standard.Module1.KomplexeOperation("0,0")" für "Button 1" und "Standard.Module1.KomplexeOperation("2,2")" für "Button 2". Stattdessen geht nur "Standard.Module1.KomplexeOperation (document, Basic)" und "Standard.Module1.KomplexeOperationZwei (document, Basic)". Bin ich zu blöd?
Ich hoffe man konnte verstehen, was ich machen will, vielen Dank für Eure Mühe,
Herzlicher Gruß
Oliver
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:05
von karolus
Hallo
Jede Sub|Prozedur die
über einen Button aufgerufen wird, bekommt das "aufrufende Event" als Argument mitgeliefert.
Code: Alles auswählen
sub blah( event )
buttonobject = event.Source.Model
'mach was in Abhängigkeit vom buttonobject'
end sub
siehe dazu
http://www.libreoffice-forum.de/viewtop ... 876#p30235
Karolus
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:16
von Burning
Hallo karolus!
Vielen Dank für die schnelle Antwort!
karolus hat geschrieben:Jede Sub|Prozedur die über einen Button aufgerufen wird, bekommt das "aufrufende Event" als Argument mitgeliefert.
Das war mir bekannt und nutze ich in Base oft, um Zugriff auf das aufrufende Formular zu bekommen. Aber wie könnte ich das ausnutzen, um einen Parameter (im konkreten Fall die Koordinaten einer Tabellenzelle) zu übergeben?
Den Zusammenhang zwischen diesem Thema (Sortieraufgabe, bei der die Zugriffsparameter als globale Variablen (quasi Umgebungsvariablen) definiert sind) und meinem Problem, bei dem sich quasi je nach Button die Umgebungsvariablen ändern, den habe ich noch nicht verstanden.
Herzlicher Gruß
Oliver
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:38
von F3K Total
Hi,
Ich empfehle Dir die Verwendung eines Introspection-Tools wie
MRI oder
Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten. z.B. mit
Code: Alles auswählen
sub blah( event )
buttonobject = event.Source.Model
'mach was in Abhängigkeit vom buttonobject'
xray buttonobject
end sub
erscheinen dir die Eigenschaften des Makro-auslösenden-Buttons.
Da findest du z.B. unter .label die Beschriftung oder unter .tag die Zusatzinformation des Button. Beide kannst du auf dem Reiter Allgemein der Kontrollfeldeigenschaften eingeben. z.B Zusatzinformation
C3
Dann:
Code: Alles auswählen
sub blah( event )
osheet = Thiscomponent.Sheets.getbyname("Tabelle1")
buttonobject = event.Source.Model
sCellname = buttonobject.tag'Zusatzinformation auslesen
oCell = osheet.getcellrangebyname(sCellname)
'...komplexe Operation bringt die Zahl "Schreibrein"
oCell.value = Schreibrein
end sub
So wird das Ergebnis in die Zelle geschrieben (hier z.B. C3), die du dem Button per Zusatzinformation mitgegeben hast.
Es ist zu beachten, dass die Zusatzinformation ein String ist, willst Du Zahlen auslesen, müssen sie im Makro auf das richtige Format gebracht werden.
HTH R
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:48
von karolus
Hallo
Den Zusammenhang zwischen diesem Thema (Sortieraufgabe, bei der die Zugriffsparameter als globale Variablen (quasi Umgebungsvariablen) definiert sind) und meinem Problem, bei dem sich quasi je nach Button die Umgebungsvariablen ändern, den habe ich noch nicht verstanden.
Die Variablen sind definiert in der Funktion, welche Variable
benutzt wird als Sortierschlüssel wird aber gesteuert über den Namen des Optionsbuttons.
Du könntest beispielsweise verschiedene Parameter als Text im Feld →Allgemein→Zusatzinformation des Buttons eintragen, und in einer Prozedur auswerten.
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:50
von Burning
Wow, vielen Dank für Mühe!
Ich hab's verstanden.
Wie kann man das Thema als gelöst markieren?
Re: Parameter via Button an Sub übergeben
Verfasst: Mo 15. Sep 2014, 18:54
von F3K Total
Du editierst deinen ersten Beitrag, und schreibst z.B. [gelöst] vor die Überschrift.