Richmemo mit Kopfzeile auf jeder Seite drucken

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
hebeyer
Beiträge: 6
Registriert: Di 4. Feb 2020, 18:58
OS, Lazarus, FPC: Lazarus 3.8 mit FPC 3.2.2 auf Windows 11

Richmemo mit Kopfzeile auf jeder Seite drucken

Beitrag von hebeyer »

Hallo,
ich drucke den Inhalt eines RichMemos auf die folgende Weise:

Code: Alles auswählen

procedure TForm1.drucken;
var
 print_parameters: TPrintParams;
begin
 Fillchar(print_parameters, SizeOf(print_parameters), #0); //Initialisierung der print_parameters
 print_parameters.JobTitle := 'Testdokument';
 print_parameters.Margins.Top := 10;
 print_parameters.Margins.Bottom := 10;
 print_parameters.Margins.Left := 10; 
 print_parameters.Margins.Right :=10;
 //Drucken ...
 RichMemo1.Print(print_parameters);
end;
Dies funktioniert auch soweit einwandfrei.
Jetzt kann es aber manchmal sein, dass der ausgedruckte Text aus dem RichMemo nicht auf eine Seite passt und der Rest auf einer 2. Seite ausgegeben wird. Da wäre es nun sinnvoll, wenn auf der 2. Seite (oder einer möglichen 3. Seite) oben immer die gleiche einfache Kopfzeile ausgegeben würde (z. B. "Dokument A"). Diese einzelne Zeile würde schon reichen, um zu wissen, welche ausgedruckten Blätter zu welchem Dokument dazugehören.
So etwas wie print_parameters.Header := 'Dokument A'; gibt es ja anscheinend nicht. :(

Ich habe nun im Netz schon ewig herumgesucht und leider nichts Passendes gefunden.
Vielleicht hat ja von euch jemand einen einfachen Ansatz oder sogar eine einfache Lösung.

Viele Grüße
Henning

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1652
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Richmemo mit Kopfzeile auf jeder Seite drucken

Beitrag von fliegermichl »

Es gibt ein Event TRichMemo.OnPrintAction mit einem Parameter PrintAction. Die kannst du auf paPageStart prüfen und dann auf dem PrintCanvas eine Ausgabe machen.

hebeyer
Beiträge: 6
Registriert: Di 4. Feb 2020, 18:58
OS, Lazarus, FPC: Lazarus 3.8 mit FPC 3.2.2 auf Windows 11

Re: Richmemo mit Kopfzeile auf jeder Seite drucken

Beitrag von hebeyer »

Vielen Dank @fliegermichl
Das war der entscheidende Tipp! Das Ausdrucken mit Kopfzeilen funktioniert nun problemlos.

Ich hätte aber noch eine Frage in die gleiche Richtung: Da geht es jedoch nicht um das Ausdrucken, sondern um das Abspeichern des RichMemos als RTF. Auch hier sollte auf jeder Seite oben eine identische Kopfzeile stehen.

Folgendermaßen speichere ich das RichMemo:

Code: Alles auswählen

[...]
var
 Savefile:TFileStream;
begin
 Savefile := nil;
 Savefile := TFileStream.Create(Utf8ToAnsi(ExtractFilePath(Application.ExeName)+'Testdokument.rtf'), fmCreate);
 RichMemo1.SaveRichText(Savefile);
 Savefile.Free;
end;      
Gibt es hierfür auch eine einfache Lösung?

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1652
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Richmemo mit Kopfzeile auf jeder Seite drucken

Beitrag von fliegermichl »

Hmm, da fällt mir jetzt grad nichts ein.

Edit:
Soweit ich weiss, werden im RTF gar keine Seiteninformationen gespeichert.

Antworten