Autor Beitrag
chrissivo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: Mi 14.09.05 15:34 
Hallihallo,
ich habe folgendes Problm, und dieses auch nach intensivem Studium des Forums nicht lösen können:
Ich möchte auf einem Blatt eine Linie vom linken bis zum rechten Rand ausdrucken.
An das Problem bin ich ersteinmal wie folgt herangegangen:
ausblenden Delphi-Quelltext
1:
Printer.Canvas.MoveTo(GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX)+1,GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY)-1); //zumindest sinngemäß					

Jetzt scheitere ich jedoch daran den rechten Rand herauszubekommen, den ich für x in folgenden Code einsetzen muss  .LineTo(x,GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY)-1).

Ich hoffe jemand weiß Rat für mich.

Danke und viele Grüße

Chrissi

_________________
"... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Mi 14.09.05 22:15 
Ohne es jetzt auszutesten, aber mir fällt da Printer.canvas.width ein

Moderiert von user profile iconraziel: "" durch Delphi-Tags ersetzt.
chrissivo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: Do 15.09.05 11:15 
Es gibt weder .Width noch .Height. :(
Ich dachte aber auch eher an eine Funktion, wo ich auf die Windows-API zurückgreifen muss: Schließlich will ich ja sozusagen vom Drucken "wissen" wie viel er mitmacht.

Danke trotzdem

Chrissi

_________________
"... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Do 15.09.05 11:28 
Vielleicht hilft das weiter, Quelle: www.dsdt.info/tutorials/drucken/?page=6

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
var seitenbreite, seitenhoehe, offsetX, offsetY: integer;
    mmpropixelx, mmpropixely: real;
    komplettebreite, komplettehoehe, seitenX, seitenY: integer;
    x,y, leftoffset, topoffset: integer;
begin

  if PrintDialog1.Execute then begin

    printer.Orientation:=poLandscape; //Drucken im Querformat
    printer.BeginDoc;
    printer.Title:='Mein Ausdruck'; //Titel, der im Druckmanager angezeigt wird
    SetMapMode(printer.Canvas.Handle, MM_LOMETRIC); // 1/10 mm

    //Druckerauflösung (mm pro Pixel) ermitteln
    mmpropixelx:=25.4/GetDeviceCaps(printer.handle, LOGPIXELSY);
    mmpropixely:=25.4/GetDeviceCaps(printer.handle, LOGPIXELSY);

    //Papiergröße ermitteln
    seitenbreite:=round(GetDeviceCaps(printer.handle, PHYSICALWIDTH)*
      MMProPixelX);
    seitenhoehe:=round(GetDeviceCaps(printer.handle, PHYSICALHEIGHT)*
      MMPropixelY);

    //nicht bedruckbare Seitenränder ermitteln
    offsetX:=round(GetDeviceCaps(printer.handle, PHYSICALOFFSETX)*MMProPixelX);
    offsetY:=round(GetDeviceCaps(printer.handle, PHYSICALOFFSETY)*MMpropixelY);
...
...
chrissivo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 130

WIN XP, WIN 2000, WIN MCE, WIN 98
D5 Pers
BeitragVerfasst: Sa 17.09.05 08:32 
Hi,
ja vielen Dank :D PHYSICALWIDTH, das habe ich gesucht!!!

Viele Grüße

Chrissivo

_________________
"... was ich noch zu sagen hätte dauert eine Zigarette, und ein letztes Glas im Steh'n..."