Autor Beitrag
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Di 26.08.08 21:15 
Moin !
Ich habe folgendes Problem: ich möchte eine Druckvorschau für ein Stringgrid erstellen und dazu die Seitenränder in rot in das Grid einzeichnen, dann kann der User das Grid entsprechend anpassen.
Dazu brauche ich aber die Auflösung des Druckers als pixel/cm um das dann auf die Pixel im Bildschirm umzurechnen. Wenn ich aber die Druckerwerte mit

ausblenden Delphi-Quelltext
1:
GetDeviceCaps(Printer.Canvas.Handle, HorzSize)					


Abfrage kommt immer die Meldung "Drucker druckt nicht" o.s.ä., weil ich ja noch keinen Druckauftrag gestartet habe (was anscheinend nötig ist).

Problem -> wie kriege ich raus, wieviel Pixel in meinem Stringgrid auf dem Bildschirm einer Seitenbreite auf dem Drucker entsprechen ?

Gruß,
Zongo
(schon mit Knoten im Hirn...)


Moderiert von user profile iconNarses: Topic aus Programmierwerkzeuge verschoben am Di 26.08.2008 um 21:21
ssb-blume
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 375
Erhaltene Danke: 7

XP, W7, W8
Deutschland
BeitragVerfasst: Mi 27.08.08 10:40 
Titel: Druckerdaten
Hallo,
versuche mal Folgendes:
Vor dem Aufruf "Printer.BeginDoc;" aufrufen,
Werte auslesen und dann "Printer.EndDoc;" wieder schließen.
Es wird nichts gedruckt, außer man gibt was auf Printer.Canvas irgendwas aus.

In der Anlage etwas Code für Rahmen und mehrseitigen Druck als Anstoß
Viel Erfolg!

SSB
Einloggen, um Attachments anzusehen!
_________________
Brain: an apparatus with which we think we think.
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Mi 27.08.08 17:21 
Ne du musst nur Den Drucker mit Enumeration Mögliche Auflösungen abfragen. Dann noch die Standardauflösung und damit hast du dann deine Werte. Wenn ich dich jetzt richtig Verstehe.
zongo-joe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Mi 27.08.08 21:27 
erstmal Danke für Eure Tips, funzt aber net

@ssb-blume
das mit BeginDoc und EndDoc hatt eich schon probiert, aber dann wird immer ein leeres Blatt ausgedruckt, auch wenn ich nix aufs Canvas schreibe.
Danke für Deine PAS, aber da werden die Werte wieder mit GetDeviceCapsabgefragt und das geht ja eben nicht.

@NeoInDerMATRIX
mit Enumeration habe ich noch nix gemacht, aber nach dem wasich gefunden habe, ist das doch nur ein Aufzählungstyp (oder hab ich was nich geschnallt?), die Werte müssen dann doch immernoch mit GetDeviceCapsabgefragt werden, oder ? (s.o.)
zongo-joe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: Mi 27.08.08 21:30 
Habs gerade mit viel rumpgesuche rausgefunden:

ausblenden Delphi-Quelltext
1:
2:
waag := GetDeviceCaps(Printer.Handle, VERTRES);
senk := GetDeviceCaps(Printer.Handle, HORZRES);


das funzt auch ohne BEGINDOC.

Dank Euch trotzdem.

Manchmal geht mir dieses Delphi auf die Nüsse...