Domino 9 und frühere Versionen > ND8: Entwicklung

verschiedene Drucker mehrfach auswählen

(1/5) > >>

Alexander W:
Hallo,

Wir haben hier eine Anwendung seit nun inzwischen 10 Jahren laufen, die ich immer wieder ein Stückchen weiter entwickle, einstmals für Version 5 geschrieben wurde und nun inzwischen auch weiter erfolgreich auf Version 8.5. Nun haben wir einen zentralen Farbdrucker angeschafft, der allerdings aus Kostengründen nicht immer alles in Farbe drucken soll.

Das übliche Drucken in der Anwendung war für die Mitarbeiter so gestaltet, dass sie in ihrer Maske (zum Briefeschreiben) einen Knopf hatten, mit dem dann als Aktion die folgenden Befehle aufgerufen wurden:

@Command([FileSave]);
@If(@DialogBox("Druckauswahl"; [AutoHorzFit] : [AutoVertFit])=1;@Do(
@Command([FilePrint];"1";"" ;"" ;"" ;"" ; "" ; "" ;"" ; ""  ;"" );
@If(BKopie!="";
@Do(@Command([EditGotoField];"Bezbrf");
         @Command([EditSelectAll]);
         @Command([EditClear]);
         @Command([EditInsertText];"Beglaubigte Kopie");
         @Command([FilePrint];BKopie;"" ;"" ;"" ;"" ; "" ; "" ;"" ; ""  ;"" ));
"");
@If(EKopie!="";
@Do(@Command([EditGotoField];"Bezbrf");
         @Command([EditSelectAll]);
         @Command([EditClear]);
         @Command([EditInsertText];"Kopie");
         @Command([FilePrint];EKopie;"" ;"" ;"" ;"" ; "" ; "" ;"" ; ""  ;"" );
         @PostedCommand([EditGotoField];"Bezbrf");
         @PostedCommand([EditSelectAll]);
         @PostedCommand([EditClear]);
@PostedCommand([EditInsertText];" ");         
@PostedCommand([EditGotoField];"Brieftext"));
@Do(@PostedCommand([EditGotoField];"Bezbrf");
@PostedCommand([EditSelectAll]);@PostedCommand([EditClear]);
@PostedCommand([EditInsertText];" ");         
@PostedCommand([EditGotoField];"Brieftext"))));"")

In der Dialogbox wurden die beiden Variablen EKopie und BKopie durch den Nutzer ausgewählt, er bekam dann ohne weiteres Zutun ein Original und die entsprechende Anzahl der verschiedenen Kopiearten ausgedruckt. Für die Zukunft habe ich mir überlegt, dass es der einfachste Weg ist, wenn ich bei den gerade mal 5 Anwendern, die die Anwendung nutzen, jeweils den Drucker zweimal installiere, einmal als Farbdrucker voreingestellt und einmal als Schwarzweißdrucker. Dann könnte ich die Anwendung hier so gestalten, dass einfach immer nur der jeweilige Drucker ausgewählt wird, an den dann der Druck gesandt wird. Also das Original an den Drucker Farbe und die beiden Kopien an den Drucker schwarz-weiß.

Nun habe ich hier im Forum gesucht und noch nichts ideales im Hinblick auf meine oben dargestellte Aktion gefunden. Außerdem habe ich entsprechend der Hilfefunktion mal einen Agenten in Script programmiert, den ich dann statt der Print-Befehle aufrufen wollte. Notes zeigt dann die Meldung an, das Dokument wäre noch nicht gespeichert. Kann mir da jemand weiterhelfen?

Vielen Dank und Grüße

Alexander W

Alexander W:
Hallo,

ich wollte nur mal nachfragen, ob wir vielleicht doch jemand helfen kann?

Es wäre wirklich praktisch, wenn die Auswahl des Druckers möglich wäre. Meine weiteren Versuche, dazu einen beziehungsweise mehrere Agenten zu nutzen, sind fehlgeschlagen.

Vielen Dank für eure Mühe.

Alexander W.

Peter Klett:
Ein Denkansatz wäre, temporär den Standarddrucker zu verändern. Habe das einmal für ein Word-Dokument, das aus Notes erstellt und dann über einen PDF-Drucker ausgedruckt werden soll, realisiert. Dazu habe ich allerdings Word-Funktionalität mittels OLE per LotusScript verwendet. Vorgehensweise:

1. Standarddrucker merken
2. PDF-Drucker als Standarddrucker setzen
3. Dokument ausdrucken
4. Standarddrucker auf gemerkten Drucker zurücksetzen

Könnte für Dein Problem vielleicht auch brauchbar sein.

Mitch:
Standarddrucker wechseln war auch mein erster Gedanke.

Scheint aber u.U. problematisch zu sein:

http://atnotes.de/index.php/topic,20581.0.html

und

http://atnotes.de/index.php?topic=13855.0

Da findest du neben den Hinweisen auf eventuelle Risiken auch ein paar Ansätze wie man es trotzdem versuchen kann...

Peter Klett:
Hallo Mitch,

Du hast völlig Recht, das funktioniert mit Notes nicht. Hab das gerade mal zusammenkopiert und ausprobiert (Setzen des Standarddruckers über Word, Ausdrucken, und Standarddrucker wieder zurücksetzen). Es funktioniert alles, wie es soll, der Druckertreiber wird geändert und danach auch wieder zurückgesetzt. Nur Notes rallt nicht, dass der Standarddrucker gewechselt wurde (getestet mit Office 2003 und Notes 7.03 auf Windows XP -> ja, wir arbeiten in einem Museum :)). Poste den Code trotzdem, vielleicht geht das ja mit 8.5 oder es gibt noch einen Trick, oder, oder ...

Function SetzeStandardDrucker (drucker As String) As String
   'Setzt drucker als Standarddrucker
   'Gibt den derzeit gesetzten Standarddrucker zurück
   
   Dim winword As Variant
   Set winword = CreateObject ("Word.Application")
   winword.Application.Visible = False
   
   'Standarddrucker merken
   Dim standarddrucker As String
   standarddrucker = winword.Application.ActivePrinter
   'Standarddrucker setzen
   winword.Application.ActivePrinter = drucker
   Call winword.Application.Quit
   
   SetzeStandardDrucker = standarddrucker
End Function

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument
   Dim doc As NotesDocument
   Set doc = uidoc.Document
   
   Dim standarddrucker As String
   standarddrucker = SetzeStandardDrucker (doc.Drucker (0))
   Call uidoc.Print
   Call SetzeStandardDrucker (standarddrucker)
End Sub

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln