❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Parameter via Button an Sub übergeben

Alles zur Programmierung im LibreOffice.
Antworten
Burning
Beiträge: 3
Registriert: Mo 15. Sep 2014, 17:28

[Gelöst] Parameter via Button an Sub übergeben

Beitrag von Burning » Mo 15. Sep 2014, 17:43

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 :evil: ) 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
Zuletzt geändert von Burning am Mo 15. Sep 2014, 18:54, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2580
Registriert: Fr 10. Dez 2010, 10:01

Re: Parameter via Button an Sub übergeben

Beitrag von karolus » Mo 15. Sep 2014, 18:05

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
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Burning
Beiträge: 3
Registriert: Mo 15. Sep 2014, 17:28

Re: Parameter via Button an Sub übergeben

Beitrag von Burning » Mo 15. Sep 2014, 18:16

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?
karolus hat geschrieben: siehe dazu http://www.libreoffice-forum.de/viewtop ... 876#p30235
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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Parameter via Button an Sub übergeben

Beitrag von F3K Total » Mo 15. Sep 2014, 18:38

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
Windows 11: AOO, LO Linux Mint: AOO, LO

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2580
Registriert: Fr 10. Dez 2010, 10:01

Re: Parameter via Button an Sub übergeben

Beitrag von karolus » Mo 15. Sep 2014, 18:48

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.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Burning
Beiträge: 3
Registriert: Mo 15. Sep 2014, 17:28

Re: Parameter via Button an Sub übergeben

Beitrag von Burning » Mo 15. Sep 2014, 18:50

Wow, vielen Dank für Mühe! :D

Ich hab's verstanden.

Wie kann man das Thema als gelöst markieren?

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Parameter via Button an Sub übergeben

Beitrag von F3K Total » Mo 15. Sep 2014, 18:54

Du editierst deinen ersten Beitrag, und schreibst z.B. [gelöst] vor die Überschrift.
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten