Hi,
ich hab eine
DB dort stehen Vornamen und der Nachname drin. In meinem Programm schreibt man als "Tag" z.B. <<Vorname>>, dann wird aus der
DB der Vorname beim Drucken eingesetzt. Das Problem ist nun folgendes. Wenn ich mit diesen Tags schreibe, dann druckt er soviele mal wieder Datensätze vorhanden sind. Schreib ich aber keine "Tags" rein, dann knallt er mir den Drucker mit über 100 Druckaufträgen zu.
Das ist meine Druckprocedure:
Delphi-Quellcode:
procedure TForm1.Printing;
var
I, II: Integer;
Left, Top: Integer;
MS: TMemoryStream;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT Mitgliederv4.* FROM Mitgliederv4');
Query1.Open;
Query1.First;
for I := 0 to Query1.Fields.Count do
begin
MS := TMemoryStream.Create; // MemoryStream erstellen
reMessage.Lines.SaveToStream(MS); // Eingabe-RichEdit speichern
MS.Position := 0; // an Position 0 gehen
temp.Lines.LoadFromStream(MS); // Ausgabe-Richedit laden
MS.Free; // MemoryStream freigeben
//Ersetzen der "Tags"
Replace('<<Vorname>>', 'vorname');
Replace('<<Nachname>>', 'name');
Replace('<<GB>>','geburtstag');
Replace('<<Straße>>', 'strasse');
Replace('<<HSN>>', 'hausnummer');
Replace('<<PLZ>>', 'plz');
Replace('<<Ort>>', 'ort');
//Drucken;
Left := 100;
Top := 100;
Printer.Copies := 1;
with Printer do
begin
Canvas.Font.Assign(Temp.Font);
Title := 'Serienbrief';
BeginDoc;
for II := 0 to temp.Lines.Count - 1 do
Canvas.TextOut(Left, Top + (II * Canvas.TextHeight(Temp.Lines[II])),
Temp.Lines[II]);
EndDoc;
end;
Query1.Next;
end;
end;