Lazreport: Schnittmarken

Rund um die LCL und andere Komponenten
Antworten
charlytango
Beiträge: 1099
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Lazreport: Schnittmarken

Beitrag von charlytango »

Ich knabbere nach wie vor an den unterschiedlichen Ergebnissen die ein Report bringt bei unterschiedlichen Druckereinstellungen. Ich würde Toleranzen ja akzeptieren, aber Unterschiede von 2 bis 6mm sind nicht tragbar

Das ist der Originalthread, den ich nicht mit Detailfragen zumüllen möchte.

Ich suche nach einer Möglichkeit unabhängig von den Bändern Schnittmarken (Im wesentlichen 4 kurze Linien an den Seitenrändern) auf eine Seite zu zeichnen.

erste Versuche blieben erfolglos, obwohl weder der Compiler noch die EXE Einwände hatte. Ich sehe nur kein Ergebnis. Kann es sein, dass das Memo zwar gezeichnet wird, aber der ausgeführte Report quasi drüber liegt? Falls ja, wie mache ich das MasterDataBand transparent?

Code: Alles auswählen

procedure TForm1.frReport1BeginPage(pgNo: Integer);
var
  t: TfrView;
begin
  t :=TfrView.Create(frReport1.Pages[0]);  //<<< cave
  t.Memo.Add('Schnittmarke');
  t.Height:=160;
  t.Width:=160;
  t.Frames:=[frbBottom];
  t.FillColor:=clYellow;
  t.Top:=60; 
end;
Bin auf TlrCodeReport gestoßen, wo man wohl einen kompletten Report aus dem Code zeichnen kann.

Da kämpfe ich noch mehr ums Verständnis. Es gibt eine Property "Report" in dem man den frReport1 auswählen kann.

Code: Alles auswählen

procedure TForm1.lrCodeReport1BeginReport(Sender: TObject);
begin
  with Sender as TlrCodeReport do
    begin
      // Important. Before drawing, add a page
       NewPage;
       LineStyle.LColor := clMaroon;
       LineStyle.LWidth := 1;
       LineStyle.LStyle := frsDashDotDot;
       DrawHLine(0, 25, GetPageWidth);
    end;
end; 


Ich lade ganz normal das Reportdesign in die frReport Komponente, und würde mir erwarten, dass die Linie gezeichnet wird und dann der Report abgearbeitet. Tja, der ober Code wird überhaupt nicht angesprungen.

Da hab ich ein Riesen-Verständnisproblem.

Was mich echt wundert ist, dass es zu Freereport bzw Lazreport so wenig im Netz zu finden gibt. Eine Nachfrage bei MS Copilot bringt mich eher zur Weißglut als zu Ergebnissen. Verwendet denn niemand Report Generatoren?

paweld
Beiträge: 96
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Lazreport: Schnittmarken

Beitrag von paweld »

Im Anhang finden Sie ein Beispiel für einen LazReport Bericht, der mit diesem Code erstellt wurde, sowie eine Option zum Drucken eines vorgeladenen Berichts aus einer Datei.
Dateianhänge
2024-06-17 07_23_12-Preview.png
2024-06-17 07_23_12-Preview.png (37.04 KiB) 666 mal betrachtet
Project1.zip
(7.25 KiB) 37-mal heruntergeladen
Grüße / Pozdrawiam
paweld

charlytango
Beiträge: 1099
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Lazreport: Schnittmarken

Beitrag von charlytango »

Erstmal herzlichen Dank für das Projekt.
Jetzt muss ich das erst einmal verdauen und analysieren.

Soner
Beiträge: 745
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Lazreport: Schnittmarken

Beitrag von Soner »

Die Bänder sind immer durchsichtig, sobald ein Objekt in Bandkoordinaten(0,0,Breite,Höhe) plaziert wird, wird es ein Teil von Band, also man kann ein Objekt nicht hinter ein Band legen, weil es Teil des Bandes wird.

Du kannst dein Report komplett manuell machen oder erst frReport1.PrepareReport aufrufen, dann auf jede Seite deine Schnittmarken ablegen.

Ich würde 1-5 mm unterschiede vernachlässigen, das wird meistens durch den Drucker verursacht oder beim Falten. Hauptsache die Adresse ist sichtbar.

charlytango
Beiträge: 1099
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Lazreport: Schnittmarken

Beitrag von charlytango »

Zwischenbericht:

Aufbauend auf das sehr feine Projekt von paweld (an dieser Stelle nochmal DANKE dafür) konnte ich mein Konzept umsetzen, indem ich den Report kompett im Code (also ohne eine Designer Datei *.LRF) erstellt habe.

1. Die Schnittmarken werden unabhängig von irgend einem Band direkt auf die Seite gezeichnet

2. Die Etikettdaten werden im Code dynamisch erzeugt und positioniert.

3. Vertikale Offests sind für Schnittmarken und Etiketten möglich.

Soweit so gut. Doch geht es dem Esel zu gut will er unbedingt aufs Eis.
Da geht noch was -- melde mich wieder (wer eine Zwischenlösung braucht möge sich melden)

Nice To Have: was ich als codiermöglichkeit noch nicht gefunden habe ist, den Text in einem Frame vertikal mittig auszurichten

paweld
Beiträge: 96
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Lazreport: Schnittmarken

Beitrag von paweld »

charlytango hat geschrieben: Nice To Have: was ich als codiermöglichkeit noch nicht gefunden habe ist, den Text in einem Frame vertikal mittig auszurichten

Code: Alles auswählen

TextStyle.Alignment := taCenter; //vertikal
TextStyle.Layout := tlCenter;  //horizontal 
im Anhang finden Sie ein geändertes Beispiel, ich habe auch die Umrechnung in Millimeter korrigiert
Dateianhänge
Project1.zip
(7.43 KiB) 43-mal heruntergeladen
Grüße / Pozdrawiam
paweld

Antworten