![]() |
Standart Drucker & Schachtauswahl
Tag Leute,
ich habe ein riesen Problem, meine Druckerschächte, ich habe mir die letzten 2 Tage darum einem Kopf gemacht komme aber nicht weiter. Also ich habe W2k und arbeite mit dem Delphi 5 Enterprise. Ich habe mir schon mehrere Artikel im Netz angeschaut, um das vorweg zu nehmen wie diesen hier z.B: ![]() Aber das hilft mir noch nicht weiter. Denn Standartdrucker zu setzen ist nicht das Problem aber wie setze ich den Standartschacht? Ich habe es erst so versucht aber es funktioniert nicht, aber ich finde keinen Fehler...
Delphi-Quellcode:
Wenn ich den Druckerschat dann wie folgt auslese, zeigt er zwar das richtige
Procedure SetzeSchacht(Schacht : integer);
var ADevice, ADriver, APort: array [0..255] of Char; ADeviceMode: THandle; DevMode: PDeviceMode; begin Printer.GetPrinter( ADevice, ADriver, APort, ADeviceMode ); if ADeviceMode <> 0 then GlobalUnlock( ADeviceMode ); DevMode := GlobalLock( ADeviceMode ); DevMode.dmFields := DevMode.dmFields or DM_DEFAULTSOURCE; DevMode.dmDefaultSource := Schacht; Printer.SetPrinter( ADevice, ADriver, APort, ADeviceMode ); GlobalUnlock( ADeviceMode ); DevMode.dmDefaultSource := Schacht; end; an aber druckt aus dem falschen Schacht.
Delphi-Quellcode:
Wer kann mir weiter helfen?
function LeseAktuellenSchacht: integer;
var hDevMode: THandle; Device,Driver,Port: array [0..255] of Char; bin: integer; DevMode: PDevMode; begin //Standartdrucker; Printer.GetPrinter(Device,Driver,Port,hDevMode); bin := -1; if hDevMode <> 0 then begin DevMode := GlobalLock (hDevMode); bin := DevMode^.DMDEFAULTSOURCE; GlobalUnlock (hDevMode); end; result := bin; end; PS: Danke schon mal im voraus.... ALMEX [edit=sakura] Das ganze ROT ausgewaschen :roll: Mfg, sakura[/edit] |
HILFE IS HIER KEIN WISSENDER ?!?!?!? =' (
SOS
|
Re: Standart Drucker & Schachtauswahl
In der
![]() Dort sind viele Methoden, die Borland in der TPrinter-Klasse vergessen hat. In deinem Fall müsstest du dann das Property BinIndex setzen. |
Re: Standart Drucker & Schachtauswahl
Danke erstmal werde das gleich mal durchschauen....
|
Re: Standart Drucker & Schachtauswahl
Ja habe mir das ganze eben mal angesehen, habe nur leider das gleiche Problem mit der Jedi JCL wie mit meiner oben aufgeführten Funktion. Programm intern wird der Schacht richtig ausgewählt und kann auch richtig ausgelesen werden, aber der Standart WINDOWS Schacht wird nicht gesetzt.
:gruebel: :wall: Hier das Codebeispiel wie ich die JCLPrintSet verwende und versuche damit einen Druckerschacht zu setzen.
Code:
Kann mir irgendwer einen Tip geben welchen grundsätzlichen Fehler ich zu machen scheine. procedure TfrmMain.Button6Click(Sender: TObject); begin MyPrinter := TJCLPrintSet.Create; MyPrinter.DefaultSource:= StrToInt(Edit1.text); Myprinter.SaveToDefaults; MyPrinter.destroy; end; Grüße ALMEX |
Re: Standart Drucker & Schachtauswahl
Hallo,
da gehst Du ja in die vollen, ein Kollege hat bei uns damit mehrere Wochen verbracht, eigene Printerroutinen zu schreiben. Leider ist er nicht mehr bei uns, so dass ich es halt versuchen werde :lol: Der Kniff scheint zu sein, eben nicht SetPrinter zu verwenden. Schau Dir mal DocumentProperties und Reset DC in der Delphi/WinApi Hilfe an. Verwendung in der Reihenfolge: - DevMode setzen - DocumentProperties aufrufen - ResetDC bei uns im Code (den ich nicht posten kann) kommt vor dem ResetDC noch eine Prüfung und es wird evtl. ein CreateDC gemacht. Das hat aber m.E. etwas damit zu tun, dass man damit den Schacht auch nach einem Seitenwechsel ändern kann. |
Re: Standart Drucker & Schachtauswahl
Jau danke für den Tip werde mal nachschauen.....
Almex |
Re: Standart Drucker & Schachtauswahl
Wo finde ich diese WinAPI Hilfedatei bei meiner Delphi version scheint die nicht dabei gewesen zu sein....
Hat einer einen Link wo man das Ding ziehen kann? |
Re: Standart Drucker & Schachtauswahl
SOS
|
Re: Standart Drucker & Schachtauswahl
Moin!
ich haber hier -> ![]() ABER .... immer nur einmal nach einem printerdialog.execute Danach wird alles auf diesen Schacht ausgedruckt. Ich suche mal weiter und melde mich wenn ich was gefunden hab. Aber vielleicht hat jemand anders auch noch eine Idee. Sven Janssen Nachtrag: Ich habe es hinbekommen, das ich nun vor jedem begindoc den Schacht wechseln kann. Nur Leider funktioniert dies NICHT wärende das Drucken im Gange ist. Meldung Das Drucken ist im Gange. Natürlich dumm, weil genau dafür benötige ich es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz