Entwickler-Ecke

Sonstiges (Delphi) - Problem mit Drucker


Unzi - So 16.03.03 11:25
Titel: Problem mit Drucker
Hallo Leute,

ich habe folgendes Problem: Wenn ich ein Dokument mit dieser Prozedur:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Drucken2Click(Sender: TObject);
var
  i: Integer;
begin
  with Printer do
    begin
      BeginDoc;
      Title:=Form1.Caption;
      Canvas.Font:=Memo1.Font;
      for i := 0 to Memo1.Lines.Count do
       Canvas.TextOut(200,200 + (i * Canvas.TextHeight(Memo1.Lines[i])),Memo1.Lines.Strings[i]);
      Canvas.Font:=Memo2.Font;
      for i := 0 to Memo2.Lines.Count do
       Canvas.TextOut(4000,200 + (i * Canvas.TextHeight(Memo2.Lines[i])),Memo2.Lines.Strings[i]);
      Canvas.Brush.Color := clBlack;
      EndDoc;
    end;
end;

drucken will, klappt das beim ersten Durchlauf auch noch ganz gut. Beim zweiten Mal hingegen werden bei mir nur noch schwarze Kästchen von der Größe des Textes ausgegeben. Kann mir jemand sagen, woran das liegen könnte? Ach ja, wenn ich das Programm neu starte, wird auch beim ersten Mal alles wieder normal gedruckt. Danke im voraus.

Unzi

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


AndyB - So 16.03.03 12:41

Das liegt daran, dass die Printer.Canvas ihre Einstellungen merkt. Wenn du also am Ende deiner Routine die Brush-Farbe auf clBlack setzt, wird automatisch auch Brush.Style := bsSolid gesetzt. Um das beim nächsten Durchlauf wieder rückgängig zu machen, solltest du vor dem Drucken (aber nach BeginDoc) Pen, Brush und Font auf deine gewünschten Werte setzen. Somit ist es dann egal, wie diese Eigenschaften nach dem Druck eingestellt sind.


Cash - Mo 17.03.03 17:41

Gibt es denn nicht irgendeine Procedure, die es ermöglicht die Seite oder Sonstiges mehrmals so zu drucken, ohne die Einstellungen jedes mal zu verändern?