Über Optionsfeld Zeilen per Makro einblenden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Über Optionsfeld Zeilen per Makro einblenden

Beitrag von mikeleb »

Hallo,

ein bisschen Geduld ... :)
Dein Codeschnipsel deutet auf MS VBA hin, was unter LO so nicht funktionieren wird.
Anbei mal ein Beispiel mit 5 Optionsfeldern. Je nachdem, welches Optionsfeld angewählt wird, werden die entsprechenden Zeilen ein- bzw. ausgeblendet. Welche Zeilen es betrifft ist im Makro festgelegt.
Dateianhänge
makro_optionsfelder.ods
(9.81 KiB) 249-mal heruntergeladen
Gruß,
mikeleb
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Über Optionsfeld Zeilen per Makro einblenden

Beitrag von mikeleb »

Hallo,

ich habe das Problem mal zum Anlass genommen, mein erstes Python-Makro zu schreiben.

Code: Alles auswählen

def p_einblenden(oevent):
#	Welches Optionsfeld wurde angeklickt?
	sname=oevent.Source.Model.Name
#	Nummer des Optionsfeldes?
	nr=int(sname[-1:])
#	Zugriff auf das Dokument, Tabelle1
	oDoc= XSCRIPTCONTEXT.getDocument()
	oTab=oDoc.Sheets.getByIndex(0)
#	Festlegung der Zeilen, ein Bereich für jedes Optionsfeld, jeweils erste und letzte Zeile oder nur einzelne Zeile
	zeilen=((11,13),(15,17),(19,23),(25,),(30,34))
#	Durchlauf durch alle Bereiche, ein- bzw- ausblenden
	z=0
	for i in zeilen:
		z=z+1
		for k in range(i[0],i[len(i)-1]+1):
			oTab.Rows.getByIndex(k-1).IsVisible=(z==nr)
Wahrscheinlich lässt sich das ein oder andere noch effektiver lösen, aber es funktioniert. Hurra! :D
Dank an preklov und karolus (viewtopic.php?f=18&t=66796)!
Dateianhänge
makro_einblenden_py.ods
(12.19 KiB) 139-mal heruntergeladen
Gruß,
mikeleb
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Über Optionsfeld Zeilen per Makro einblenden

Beitrag von Karolus »

Hallo

Ja, es geht nochwas:

Schreibt ins Feld "Zusatzinfo" der Optionsbuttons entsprechende Addressbereichseinträge
für LO 13:17 →Zeile 13 bis 17
Aoo A13:A17
! auch bei einzelnen Zellen 25:25 mit Doppelpunkt !!

Code: Alles auswählen

def einblenden(event):
    buttons = event.Source.Model.Parent
    doc = buttons.Parent.Parent
    sheet = doc.CurrentSelection.Spreadsheet
    for i in range( buttons.Count):
        button = buttons.getByIndex(i)
        tag = button.Tag
        state = button.State
        sheet.getCellRangeByName(tag).Rows.IsVisible = state
Ps: Ich freue mich riesig wenn ein paar Leute, endlich mal anfangen mit python, lasst euch bitte nicht abschrecken von meinen Verbesserungsvorschlägen.



Ich hatte gehofft über das Ereignis `Status geändert` auch die `for...`-Schleife einzusparen,aber leider wird die Funktion nur bei Statuserhalt ausgeführt nicht jedoch wenn ein Button den Status verliert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Über Optionsfeld Zeilen per Makro einblenden

Beitrag von mikeleb »

Hallo karolus,
von meinen Verbesserungsvorschlägen
Ich bitte ausdrücklich darum! 8)
Gruß,
mikeleb
Antworten