Autor Beitrag
patrick dee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 311

Win 98SE, WinXP
D3,D6
BeitragVerfasst: Sa 16.11.02 11:16 
hi,

habe immer noch ein Problem RichEdit mit Seitenränder zu drucken. Hir mein Code:
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
procedure TPlayliste.Drucken(sl: TStrings);
var zeile, x, y: integer;
    breite, hoehe, randlinks, randoben: integer;
begin

  if PrintDialog1.Execute then begin
    Printer.BeginDoc; //Druckjob beginnen
    SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); //Umstellen auf 1/10 mm

    //Schrift-Einstellungen:
    Printer.Canvas.Font.Name:='Courier New';
    Printer.Canvas.Font.Style:=[fsBold];
    Printer.Canvas.Brush.Color:=clWhite;
    Printer.Canvas.Font.Height:=40; //4 mm

    //Blattgöße in 1/10 mm ermitteln:
    breite:=GetDeviceCaps(Printer.Canvas.Handle, HORZSIZE)*10;
    hoehe:=GetDeviceCaps(Printer.Canvas.Handle, VERTSIZE)*10;

    randlinks:=100; //2,5 cm
    randoben:=150; //2,5 cm

    x:=randlinks;
    y:=randoben*-1;

    for zeile:=0 to sl.Count-1 do begin

      if -y>(hoehe-2*randoben) then begin
        y:=randoben*-1;
        Printer.NewPage;
      end;

      if y=-randoben then begin
        Printer.Canvas.Font.Style:=[fsbold];
        Printer.Canvas.TextOut(x, y, '   '+
        IntToStr(Printer.PageNumber));
        Printer.Canvas.Font.Style:=[];
        y:=y-Printer.Canvas.TextHeight(sl[zeile]);
      end;

      Printer.Canvas.TextOut(x, y, sl[zeile]);

      y:=y-Printer.Canvas.TextHeight(sl[zeile]);

    end;
    Printer.EndDoc;
  end;
 end;


procedure TPlayliste.BitBtn1Click(Sender: TObject);
 begin
  Drucken(RichEdit1.Lines);
   end;
   end.

SO weit so gut. Wenn ich drucke und habe ich das Problem das wenn ich das Programm auf einem 17' Monitor zeige und die RichEdit (Playliste) zeige im Vollbild druckt er alles richtig.
BEISPIEL:
ausblenden Quelltext
1:
00001-02  LAUDLS                   PRÄRIEWIND                         03:05   O 3					

Wenn ich das Bild verkleinere druckt er zwar auch aber er schneidet die Zeile ab und setzt sie eins drunter.
BEISPIEL:
ausblenden Quelltext
1:
2:
00001-02  LAUDLS                   PRÄRIEWIND                         
03:05   O 3

Wenn ich das Programm auf einem 15' Monitor im Vollbildmodus starte so druckt er wieder mit dem abschneiden der Zeile und setzt dies drunter.
BEISPIEL:
ausblenden Quelltext
1:
2:
00001-02  LAUDLS                   PRÄRIEWIND                        
 03:05   O 3

FRAGE:
Wie krige ich es hin das er die Zeilen egal welcher Monitor immer druckt ohne das Ende abzuschneiden ????

Wie krige ich den ausdruck immer in Fett ???

Sinn des ganzen ist, das wenn ich den Inhalt der RichEdit drucke ein Seitenrand gelassen wird.Damit ich linkes lochen kann und das von oben eine Rand bleibt. Gedruckt werden darf aber bis an den rechten Rand des Blattes.

Komme hier einfach nicht weiter wer kann mir Helfen
Danke schon mal im voraus

Euer
patrick dee

(17.11.02 17:13 Tino) Code-Tags hinzugefügt & Titel geändert.

_________________
Glauben heißt nichts wissen ...
jensenwb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Sa 16.11.02 19:18 
Mal eine Frage wenn du die Bildschirmauflösung verringerst, zeigt er Dir auf den Bildschirm das bestimmt so an wie er es druckt?

Wenn ja mußt du beim starten deines Programmes die Bildschirmauflösung abfragen und die Schriftgröße deines RichEdit-Feldes anpassen.

MfG

Jens