BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

[Gelöst]checkbox abfragen und drucken

Alles zur Programmierung im OpenOffice.org
Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Mi 10. Feb 2021, 20:08

nur das aktuelle, bei tabellenauswahl soll schon immer alles der gewählten tabelle gedruckt werden.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: checkbox abfragen und drucken

Beitrag von mikele » Mi 10. Feb 2021, 20:28

Hallo,
ok - dann wäre folgende Variante möglich

Code: Alles auswählen

Sub Main
	Dim args() as New com.sun.star.beans.PropertyValue
	oDoc=ThisComponent
	oCtrl=oDoc.CurrentController
	'Tabellennamen der zu druckenden Tabellen
	aTabellen=array("Tabelle1", "Tabelle3")
	'jede Tabelle zur aktuellen machen und dann drucken
	for i=0 to ubound(aTabellen)
		oTab=odoc.sheets.getbyname(aTabellen(i))
		oCtrl.setActiveSheet(oTab)
		ThisComponent.Print(args())
	next
End Sub
Es werden nacheinander alle in dem Array aufgelisteten Tabellen gedruckt. Alternativ könnte man sie auch über ihre Nummer ansprechen.
Nun müssen noch die Checkboxen besetzt und ausgelesen werden. Vorschlag folgt.
Gruß,
mikele

Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Mi 10. Feb 2021, 20:34

vielen, vielen Dank erstmal, da kann ich wieder ein bisschen herumbasteln.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: checkbox abfragen und drucken

Beitrag von mikele » Mi 10. Feb 2021, 20:47

und nun mit beispeilhaften Checkboxen

Code: Alles auswählen

Sub Main

	Dim args() as New com.sun.star.beans.PropertyValue
	Dim aTabellen()
	oDoc=ThisComponent
	
	oCtrl=oDoc.CurrentController
	'aktuelle Tabelle merken
	oTabDruck=oCtrl.ActiveSheet
	'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
	oForm=oTabDruck.Drawpage.Forms(0)
	n=0	'Anzahl gewählter Tabellen
	for i=o to oForm.count-1
		obox=oForm.getbyindex(i)
		if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
			if obox.state=1 then
				ReDim Preserve aTabellen(n)
				aTabellen(n)=obox.label
				n=n+1
			end if
		end if
	
	next
	'jede Tabelle zur aktuellen machen und dann drucken
	for i=0 to ubound(aTabellen)
		oTab=odoc.sheets.getbyname(aTabellen(i))
		oCtrl.setActiveSheet(oTab)
		ThisComponent.Print(args())
		
	next
	oCtrl.setActiveSheet(oTabDruck)
	
End Sub
Dateianhänge
tabellen drucken per checkbox.ods
(10.29 KiB) 159-mal heruntergeladen
Gruß,
mikele

Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Mi 10. Feb 2021, 21:10

druck1.jpg
druck1.jpg (115.02 KiB) 2972 mal betrachtet


was mach ich falsch, die Meldung erscheint wenn ich Checkbox1 aktiviere, wenn nicht, passiert nichts.

Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Mi 10. Feb 2021, 21:48

mir ist nicht klar wo abgefragt wird , wenn Checkbox1 = true Print Tabelle1, oder Checkbox2 = true Print Tabelle2 usw. :?:
oder muss ich in der jeweiligen Box etwas eingeben was passieren soll wenn sie abgefragt wird.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: checkbox abfragen und drucken

Beitrag von mikele » Do 11. Feb 2021, 13:31

Hallo,
ja ich vergaß noch zu erklären, wie die Dinge zusammengehören.
Die Checkboxen müssen als Bezeichnung den gewünschten Tabellennamen tragen. Bei dir also z. B. "woh7b2"
Im Makro werden in der ersten Schleife

Code: Alles auswählen

	'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
	oForm=oTabDruck.Drawpage.Forms(0)
	n=0	'Anzahl gewählter Tabellen
	for i=o to oForm.count-1
		obox=oForm.getbyindex(i)
		if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
			if obox.state=1 then
				ReDim Preserve aTabellen(n)
				aTabellen(n)=obox.label
				n=n+1
			end if
		end if
	
	next
zunächst alle Formularelemente der aktuellen Seite (da ist die wo sich die Checkboxen und die auslösende Schaltfläche befinden) durchlaufen.
Wenn es eine Checkbox ist (.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel")) wird deren Status ausgelesen und wenn der 1 ist (als die Checkbox angewählt), dann wird die Bezeichung der Checkbox (.label) im Array der zu druckenden Tabellennamen abgelegt.
Danach erfolgt der Druck aller Tabellen, deren Namen abgelegt sind. Existiert ein abgelegter Tabellenname nicht, kommt es zu der Fehlermeldung, die du erlebt hast.
Man könnte es natürlich auch in einer Schleife realisieren. Das sähe dann so aus, was durchaus hübscher ist:

Code: Alles auswählen

Sub Main

	Dim args() as New com.sun.star.beans.PropertyValue
	oDoc=ThisComponent
	
	oCtrl=oDoc.CurrentController
	'aktuelle Tabelle merken
	oTabDruck=oCtrl.ActiveSheet
	'Checkboxen auslesen und zu druckende Tabellennamen in Array schreiben
	oForm=oTabDruck.Drawpage.Forms(0)
	for i=o to oForm.count-1
		obox=oForm.getbyindex(i)
		if obox.supportsservice("com.sun.star.awt.UnoControlCheckBoxModel") then
			if obox.state=1 then
				oTab=odoc.sheets.getbyname(obox.label)
				oCtrl.setActiveSheet(oTab)
				ThisComponent.Print(args())
			end if
		end if
	
	next
	oCtrl.setActiveSheet(oTabDruck)
	
End Sub
Gruß,
mikele

Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Do 11. Feb 2021, 14:27

Hallo, also es druckt jetzt, aber immer nur die erste Seite , also die auf der alle Boxen sind , wenn ich 3 verschiedene auswähle druckt es 3 Seiten, wenn eine dann nur eine, aber immer die gleiche.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: checkbox abfragen und drucken

Beitrag von mikele » Do 11. Feb 2021, 14:39

Hallo,
da war der Fehlerteufel aber so was von aktiv. :oops:
Anstelle von

Code: Alles auswählen

for i=o to oForm.count-1
muss es natürlich

Code: Alles auswählen

for i=0 to oForm.count-1
sein.
Gruß,
mikele

Luftikus
Beiträge: 17
Registriert: Di 9. Feb 2021, 19:58

Re: checkbox abfragen und drucken

Beitrag von Luftikus » Do 11. Feb 2021, 14:43

Ich trau es mich kaum zu schreiben aber keine Änderung zu bemerken.

Antworten