Über Optionsfeld Zeilen per Makro einblenden

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

Moderator: Moderatoren

mikeleb
*******
Beiträge: 1429
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) 268-mal heruntergeladen
Gruß,
mikeleb
mikeleb
*******
Beiträge: 1429
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) 154-mal heruntergeladen
Gruß,
mikeleb
Karolus
********
Beiträge: 7535
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.
LO25.2… debian 13( trixie ) auf Raspberry5 8GB (ARM64)
LO25.8… flatpak debian 13( trixie ) auf Raspberry5 8GB (ARM64)
mikeleb
*******
Beiträge: 1429
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