Hallo,
ich habe seit geraumer Zeit folgendes Problem, das mir langsam aber sicher die letzten Nerven raubt, daher auch ein längerer Text, sorry und Danke fürs Lesen.
Wir haben auf Arbeit 3 Zimmer, in dem je ein Nadeldrucker für Durchschlagsdokumente steht, darauf Drucken jeweils 3-5 Personen. Zusätzlich hat jeder noch mind. 2 Laserdrucker eingerichtet, einen Thermal-Drucker für UPS-Aufkleber und irgendwelche Dummy-Drucker für andere Anwendungen. Jeder Bearbeiter hat so um die 5-7 Drucker eingerichtet und das unterscheidet sich pro Rechner auch. Die Nadeldrucker sind A3-Flachbettnadeldrucker und dafür ausgelegt, dass man jedes Blatt einzeln einlegt, kein Endlospapier, da wir auf die unterschiedlichsten Formulare drucken. Rechner sind alle
W2K oder WinXP. Zu den Formularen: leider ist es unter Win2k nicht mehr möglich, eigene Papierformate zu vergeben. Man kann zwar eine Papiergröße z.B. 31x21 cm einstellen, der Druck wird auf dem Nadeldrucker aber verschoben und die Positionen stimmen nicht. Ich brauche aber größere Formate, die Formulare besitzen alle einen Perforationsrand, und ich komme mit dem normalen A4-Format nicht mehr hin und liege außerhalb des Druckbereichs. Deswegen sind fast alle Doks auf A3 eingestellt, sieht zwar nicht so schön aus, geht aber. Die Drucker sind auch alle auf A3 als Standardpapierformat eingestellt.
Ich habe 2 Anwendungen, die Daten aufbereiten, die anschließend in eingerichtete Wordformulare übertragen werden und dann dort gedruckt werden. Den Dokumenten kann ein Drucker (Nadel oder Laser) zugewiesen werden und jeder Bearbeiter hat seine eingestellten Nadel und Laserdrucker. Die Dokumente können entweder sofort gedruckt oder erstmal zum Bearbeiten geöffnet werden. Damit man nicht jedes Mal die Drucker umstellen muß, macht das in beiden Fällen das Delphi-prog. Es stellt den Drucker ein und stellt auch den Drucker nach dem schließen des Doks zurück. Außerdem gibt’s in Word noch eine Extra-Schaltfläche in der Symbolleiste, das per Makro ebenfalls den Nadeldrucker einstellt, das Dok druckt und den Standdarddrucker wieder zurückstellt, da nicht alle Doks über die Delphi-programm gedruckt werden.
Und da beginnen die Probleme und das gilt sowohl fürs Delphi-prog als auch fürs Druck-Makro.
Ich habe früher immer die Wordapllication.activeprinter Eigenschaft genutzt, die hat aber einen Riesen Nachteil, der dort eingestellte Drucker wird gleich zum systemweiten Standarddrucker gemacht. Hatte ein Mitarbeiter gerade ein Dok für den Nadeldrucker offen und bekommt eine Mail oder muß noch mal durch irgendeinen Zwischenruf was anderes ausdrucken, wurde das auf dem Nadeldrucker ausgedruckt. Das hat er natürlich nicht gemerkt und der nächste, der sein Blatt in den Nadeldrucker legt, hat das falsche drauf. Teilweise sind das Zollformulare, die kann man nicht so einfach zerreissen und in die runde Ablage werfen. Das Delphi-programm hat auch dafür gesorgt, das nach dem schliessen des Doks auch wieder der vorher eingestellte Drucker (Netz-Laser) wieder eingestellt wird.
Und genau dort haperts. Das Umstellen der Drucker ist nicht das Problem, aber der Drucker heißt nicht „Server/Druckername“ sondern „Server/Druckername auf NE:0?“. Setzt man bei word.activeprinter die erste Variante geht das problemlos, aber andere Anwendungen „spinnen“. In Excel ist im Druckerdialog kein Drucker mehr ausgewählt, beim Druck auf Drucken in der Symbolleiste (=Schnelldrucken) passiert nichts, weder ein Druck noch eine Fehlermeldung. Andere Anwendungen haben auch Probleme, manche starten nicht, weil kein Standdarddrucker ausgewählt ist, andere drucken nicht. Bei den Druckereinstellungen ist beim Standdarddrucker noch das Häkchen dran, man muß es aber noch mal setzen, dann ist wieder alles in Butter.
Für was dieses z.B. „auf NE:02“ gut sein soll, weiß ich nicht. Es ist aber der „itemindex“ bei der Druckereinrichtung, ist der Drucker der erste in der Liste, dann ist es halt NE:01.
Die Druckerreihenfolge ist bei jedem aber unterschiedlich und somit auch das NE, in Delphi ließe sich das schnell selbst ermitteln, in VB siehts da schlechter aus.
Um das Problem mit dem systemweiten Standdarddrucker bei activeprinter umgehe ich wie folgt:
Delphi-Quellcode:
Var dialog:olevariant;
begin
dialog:=WordApplication1.Dialogs.Item(wdDialogFilePrintSetup);
dialog.printer := Druckername;
dialog.DoNotSetasSysdefault := True;
dialog.execute;
end;
Damit wird der Drucker nur für Word gesetzt und nicht zum systemweiten Standarddrucker gemacht. Beim Programmstart wird der actuelle Drucker von Word ausgelesen und zwischengespeichert, dort ist auch das „auf NE01“ enthalten. Beim Zurückstellen gibt’s dann auch keine Probleme, bis auf einen Rechner. Dort habe ich die gleichen Probleme, als wäre das Papierformat nicht richtig und der Text wird beim Druck verschoben. Mit Setzen per Activeprinter geht’s aber. Ich könnte SCHREIEN
und bin nicht einen Schritt weiter. Ich verstehs nicht, auf allen Rechnern läuft das gleiche ab.
Hat einer auch solche Probleme und wie habt ihr die gelöst?
Danke Frank