Druckvorgang bei Verwendung eines Makros abbrechen

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

Moderator: Moderatoren

uroveits
**
Beiträge: 47
Registriert: So, 23.05.2010 12:11

Druckvorgang bei Verwendung eines Makros abbrechen

Beitrag von uroveits »

Hallo!

Ich habe das Problem, dass ich einen in OOoCalc angestossenen, aber noch nicht ausgeführten Druckvorgang bei Verwendung eines Makros abbrechen möchte.

Verwendete OOo-Version: 3.2.1.
OS: Windows 7 (64bit)

Folgende Grundeinstellung besteht (bitte nachstellen, damit Problem nachvollzogen werden kann):
Extras -> Anpassung -> Ereignisse -> Ereignis "Dokument" -> Zugewiesene Aktion ist ein Makro mit dem Namen "Druckerpruefung"

Inhalt des Makros "Druckerpruefung":

Code: Alles auswählen

Sub Druckerpruefung
   oDoc = ThisComponent
   aPrinterProperties = oDoc.getPrinter()
   oPrinterName = aPrinterProperties(0)
   If IsNull( oPrinterName ) Then
      MsgBox( "Kein Drucker gefunden" )
   Else
      if MsgBox( "Der aktuelle Drucker ist: " & oPrinterName.Value, 1,"Hinweis") = 2 then
			exit sub
		else
			rem Aufruf des Druckvorgangs
			dim aPrintOps(0) as new com.sun.star.beans.PropertyValue
			oDoc = ThisComponent
			oViewCursor = oDoc.CurrentController.getViewCursor()
			aPrintOps(0).Name = "Pages"
			aPrintOps(0).Value = trim(str(oViewCursor.getPage()))
			oDoc.print(aPrintOps())
		endif
	EndIf
end sub

Schilderung des Problems:
Beim Anstoßen des Druckvorganges (z.B. über Datei -> Drucker) wird das o.g. Makro aufgerufen bzw. läuft korrekt ab, d.h. es erscheint die Abfrage, ob gedruckt werden oder abgebrochen werden soll ("o.k." oder "Abbrechen").
Das Problem ist nun, dass beim Anklicken von "Abbrechen" der Druckvorgang durchgeführt, obwohl an dieser Stelle der Druckvorgang abgebrochen werden soll.

Frage:
Wie kann das Fortlaufen des Druckvorgang unterbunden werden, d.h. wie kann der Druckvorgang abgebrochen werden?

Gruß

Jochen
Windows 7 Professional (64 Bit)
LibreOffice 3.3.3; OOO330m19 (Build:301); tag libreoffice-3.3.3.1
Firefox 5.0
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Druckvorgang bei Verwendung eines Makros abbrechen

Beitrag von komma4 »

uroveits hat geschrieben:Wie kann das Fortlaufen des Druckvorgang unterbunden werden, d.h. wie kann der Druckvorgang abgebrochen werden?
Ändere von SUB in FUNCTION.
Im Falle des gewünschten Abbruchs muss FALSE zurück gegeben werden

Code: Alles auswählen

Function Druckerpruefung
' [...]
If MsgBox( "Der aktuelle Drucker ist: " & oPrinterName.Value, 1,"Hinweis") = 2 Then
   Druckerpruefung = FALSE
Else
'[...]
End Function

Hinweis: ist bei allen Extras>Anpassen...>Ereignisse so, dass ein Rückgabewert FALSE die Aktion abbricht.


Funktioniert das auch bei Dir?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
uroveits
**
Beiträge: 47
Registriert: So, 23.05.2010 12:11

Re: Druckvorgang bei Verwendung eines Makros abbrechen

Beitrag von uroveits »

Hallo Winfried,

vielen Dank für Deinen Tipp. Leider funktioniert dieser bei mir nicht.
Ich sollte vielleicht noch anmerken, dass mein (zuerst genanntes) Makro bei OOoCalc nicht funktioniert, aber bei OOoWriter funktioniert.

Ehrlicher gesagt verstehe ich auch nicht, warum "FALSE" zu einem Abbruch des eingeleiteten Druckauftrages führen soll. Du hast zwar eine Begründung genannt. Diese nehme ich jetzt einfach mal so als Erfahrungswert hin. Aber verstehen tue ich es im Rahmen der Anwendung des o.g. Makros trotzdem nicht. Ich glaube, dass der eingeleitete Druckauftrag auf einer anderen Ebene gestoppt werden muss. Kennst Du vielleicht noch eine andere Möglichkeit?

Gruß

Jochen
Windows 7 Professional (64 Bit)
LibreOffice 3.3.3; OOO330m19 (Build:301); tag libreoffice-3.3.3.1
Firefox 5.0
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Druckvorgang bei Verwendung eines Makros abbrechen

Beitrag von komma4 »

uroveits hat geschrieben:Ich sollte vielleicht noch anmerken, dass mein (zuerst genanntes) Makro bei OOoCalc nicht funktioniert, aber bei OOoWriter funktioniert.
Leider - habe im falschen Ordner kontrolliert (test mit "Ausdruck in Datei", anstelle Ausgabe aus einem Drucker): weder die Makro-Variante, noch die FUNCTION-Variante funktionieren hier wie gewünscht.

uroveits hat geschrieben:Ehrlicher gesagt verstehe ich auch nicht, warum "FALSE" zu einem Abbruch des eingeleiteten Druckauftrages führen soll. Du hast zwar eine
Ja, das ist eine Erfahrung, die ich mit anderen event Makros gemacht habe. Die Ereignisse sollten ansich darauf reagieren und die weitere Bearbeitung abbrechen. Anscheinend ist das Ereigniss "Dokument drucken" aber schon abgeschlossen (also nicht: "Ereignis vor Dokument drucken") - man kann nur noch eine Nachbearbeitung starten, der Druckauftrag ist bereits abgeschickt.
Blöd, nicht wahr?!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten