Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TPrinter bei Programmstart zuweisen
Mathematiker - Fr 14.04.17 18:01
Titel: TPrinter bei Programmstart zuweisen
Hallo,
nach einem Programmstart ist dem TPrinter der Standarddrucker zugewiesen.
Mit dem einfachen Aufruf des TPrinterSetupDialogs mit
Delphi-Quelltext
1:
| printerdialog1.execute |
kann man einen anderen Drucker auswählen, der während der Laufzeit des Programms voreingestellt bleibt. Das klappt problemlos.
Nun möchte ich aber, dass beim Programmstart dieser andere Drucker automatisch ausgewählt wird.
Dazu möchte ich diesen Drucker in die ini-Datei schreiben und bei Programmstart lesen und einstellen. Und das ist mein Problem.
TPrinterSetupDialogs gibt ein Handle auf den Drucker zurück. Aber wie speichere ich das Format HDC? In der Hilfe finde ich nichts in der Form WriteHDC oder so ähnlich ...
Und vor allem, wie kann man es lesen und dann zuweisen?
Danke für Hilfe
Steffen
Delete - Fr 14.04.17 18:38
- Nachträglich durch die Entwickler-Ecke gelöscht -
jaenicke - Fr 14.04.17 18:44
Ein Handle zu speichern bringt dir rein gar nichts. Wenn das nach dem Neustart der Anwendung das gleiche ist, ist das reiner Zufall.
Stell dir das vor wie die Nummer das Schranks im Schwimmbad. Beim nächsten Besuch kann der schon besetzt sein. Oder wie eine Speicheradresse bei einem Pointer.
Speichern solltest du schlicht den Druckernamen.
Delete - Fr 14.04.17 19:12
- Nachträglich durch die Entwickler-Ecke gelöscht -
Mathematiker - Fr 14.04.17 19:36
Hallo,
ich habe jetzt mit
Delphi-Quelltext
1: 2:
| if printer.printers<>nil then ini.writestring(aktuellnameini,'Drucker',printer.printers[printer.printerindex]); |
den eingestellten Drucker gespeichert und den aus der Ini gelesenen Drucker mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if druckername<>'' then begin if printer.printers.indexof(druckername)<0 then druckername:=''; if druckername<>'' then begin printer.printerindex:=printer.printers.indexof(druckername); end; end; |
beim Start wieder zugewiesen. Im Moment sieht es gut aus.
Blöd ist nur, dass ich im Moment die Drucker nicht testen kann. Ob es funktioniert, werde ich melden.
Danke für die Hinweise
Steffen
jaenicke - Fr 14.04.17 19:52
Frühlingsrolle hat folgendes geschrieben : |
Nach 3 Systemstarts hintereinander und dem Gegenprüfuen des Drucker-Handle, kam ich (zufällig?) an ein und den selben Wert. Nach 100x werde ich mich den Euro Millionen widmen ! |
Naja, die Vergabe des Handles wird nicht wirklich zufällig sein, so dass es durchaus sein kann, dass es immer das gleiche ist. Aber eben nicht per Definition, sondern weil es immer wieder neu so vergeben wird. Aber spätestens sobald Drucker hinzukommen oder entfernt werden, wird das wohl kaum so bleiben.
Deshalb ist der Weg über den Druckernamen der beste und zudem kann man den Wert dann auch manuell in der Konfigurationsdatei verstehen. Das machen wir übrigens auch bei allen unseren Kunden darüber. ;-)
Delete - Fr 14.04.17 20:19
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!