drucken - papierschacht einstellen
Hi!
Benutze Delphi 5 Enterprise mit Win2000. Also ich habe folgendes Problem. Unsere Software benutzt Thermobondrucker (wie an den Supermarktkassen). Die Papierlänge steuert man mit den Formularen aus der W2K Druckersteuerung. Das habe ich auch jetzt versucht aus dem Programm umzustellen aber es gelingt mir nicht. Hier mal den Code den ich verwende:
Delphi-Quellcode:
Also mit diesem Code funktioniert die ganze Sache nicht. Verwende ich aber den PrintDialog von Delphi dann funktionierts.
Printer.PrinterIndex := PrinterID;
Printer.GetPrinter(ADevice, ADriver, APort, ADeviceMode); DevMode := GlobalLock(ADeviceMode); edit1.Text := inttostr(devmode^.dmpapersize); DevMode^.dmDefaultSource := 257; devmode^.dmFields := devmode^.dmFields or DM_DEFAULTSOURCE; DevMode^.dmPaperSize := 164; //wäre für unseren Drucker die richtige Grösse devmode^.dmFields := devmode^.dmFields or DM_PAPERSIZE; edit2.Text := inttostr(devmode^.dmpapersize); Printer.SetPrinter(ADevice, ADriver, APort, ADeviceMode); GlobalUnlock(ADeviceMode); Printer.Title := 'Hello World!'; Printer.BeginDoc; for i := 1 to 100 do begin Printer.Canvas.TextOut(200, (i * 30) + 200, 'Hello World: ' + inttostr(i)); end; Printer.EndDoc; Habe auch versucht bis zum GlobalUnlock den Code auszuführen, wenn ich dann denn PrintDialog starte stehen schon die richtigen Werte im Dialog drinnen drücke ich dann auf OK funktionierts auch. Vielleicht kann mir wer helfen Danke Christian [edit=Sakura]Delphi-Tags[/edit] |
Hallo Christian,
ersteinaml herzlich willkommen in der Delphi-PRAXiS! Hm... Vielleicht wäre es eine Möglichkeit, dass du guckst (dabei viel Spaß ;) ), wie der PrintDialog das ganze zuordnet. Die Sources findest du, da du ja die Enterprise-Version nutzt, im Delphi-Verzeichnis\Sources\Vcl\. Die Datei sollte eigenlich Dialogs.pas heißen... Chris |
Moin Namensvetter,
der Unterschied könnte darin begründet liegen, dass der Dialog das System darüber informiert, dass eine Änderung stattgefunden hat, die reine Änderung der Einstellung, von Delphi aus, dies so aber nicht tut. Schau Dir dazu am Besten mal die API SHChangeNotify im PSDK an, mit besonderem Augenmerk auf das Flag (für den Parameter uFlags) SHCNF_PRINTER. Probiert hab' ich das bislang nicht, aber vielleicht geht's damit. |
hallo christian
Danke für deine prompte Antwort. Leider bin ich nicht so gut drauf das ich weiß wie ich es anwenden muß.
Wann meinst Du muß ich das Bit setzen? Danke Christian |
Re: drucken - papierschacht einstellen
Hallo Christian,
Lass diese Zeile
Delphi-Quellcode:
über
Printer.SetPrinter(ADevice, ADriver, APort, ADeviceMode);
Delphi-Quellcode:
einmal weg dann müsst es gehen.
GlobalUnlock(ADeviceMode);
Guß Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz