Variablen im LazReport

Rund um die LCL und andere Komponenten
Antworten
Luckner
Beiträge: 88
Registriert: Sa 18. Jan 2020, 09:56
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit

Variablen im LazReport

Beitrag von Luckner »

Hallo,
nach meinem Umstieg von Delphi versuche ich mich jetzt in Lazarus. Diesmal mit LazReport. Hatte mal für Dephi eine Fastreport-Version gekauft und fand Die genial. Da Lazreport, angeblich auf Freereport basiert, da dachte ich mir, dass ich den mal probiere. Aber es scheitert schon an simplen Variablen. Bespiel:

Code: Alles auswählen

  frReport1.LoadFromFile('Test.lrf');
  frReport1.Variables.Clear;
  frReport1.Values.FindVariable('test').Field := QuotedStr('Das ist ein Test');
  frReport1.PrepareReport;
  frReport1.ShowReport;
der Text der Variablen 'test' wird nicht angezeigt. Eine Variable 'test' ist im Formular platziert. Eine Linie und ein manueller Text im im Formular werden angezeigt. Was mache ich hier falsch?

Gruß, Luckner

Benutzeravatar
BoraBora
Beiträge: 42
Registriert: So 11. Apr 2021, 16:00
OS, Lazarus, FPC: FPC 3..2.2, L 2.2.0 , Linux Mint, WIN 10&11, Android,
CPU-Target: xxBit

Re: Variablen im LazReport

Beitrag von BoraBora »

Hallo Luckner,

sieh´ mal hier:

https://forum.lazarus.freepascal.org/in ... ic=59873.0

Gruss BB

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Variablen im LazReport

Beitrag von gladio »

variableninhalte übergibs du an den Report in OnGetValue
viewtopic.php?p=94403#p94403

Luckner
Beiträge: 88
Registriert: Sa 18. Jan 2020, 09:56
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit

Re: Variablen im LazReport

Beitrag von Luckner »

Vielen Dank,
ja jetzt funktioniert es. In einer Doku wurden beide Möglichkeiten genannt, aber gut wenn eine funktioniert

Gruß, Luckner

Soner
Beiträge: 624
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: Variablen im LazReport

Beitrag von Soner »

Ihr habt schon eine Lösung gefunden, aber es gibt noch einen Weg. Vorteil ist, dass es bei allen Reports ohne "OnGetValue" zur Verfügung steht:
frVariables[variablenname] := Variablewert;
z.B.
frVariables['ZeigeNetto'] := 1;

Anderer Vorteil ist, wenn du Reportdesigner im Programm integriert hast, dann sehen die Benutzer es.

Luckner
Beiträge: 88
Registriert: Sa 18. Jan 2020, 09:56
OS, Lazarus, FPC: Winux (L 2.2.0 FPC 3.2.2)
CPU-Target: Windows 64-Bit

Re: Variablen im LazReport

Beitrag von Luckner »

Hallo Soner,

scheint bei mir nicht zu funktionieren. Bekomme Fehlermeldungen.

Code: Alles auswählen

frReport1.frVariables[variablenname] := Variablewert;
ergibt Fehler

Code: Alles auswählen

frVariables[variablenname] := EditLiga.text;
wird kein Wert übergeben

Gruß, Luckner

Soner
Beiträge: 624
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: Variablen im LazReport

Beitrag von Soner »

Doch das funktioniert, das hier ist die exakte Zeile aus meinem Programm:

Code: Alles auswählen

// uses LR_Class;  nicht vergessen!!
 frVariables['RepSumBrut']:=IntToStr(Ord(RepPrOpt.SumBrut));
Dann kannst du beim ReportDesigner bei irgendeinem Objekt Skript einschalten und als Skript eingeben, z.b. für mein Beispiel oben:

Code: Alles auswählen

 Visible:= [RepSumBrut]='1';
Dann ist dieses Objekt nur sichtbar, wenn die Variable den Wert '1' hat.

Du musst das beachten:
frVariables[Variablenname_muss_String_sein]:= Wert_ist_Variant;
Aber für Werte benutze ich immer String.

Mir fällt es jetzt ein, ich sollte das mal Patchen, so dass die Variablen nicht manuel bei Runtime sondern direkt beim Designer eingefügt werden kann, weil das einen immer nervt, wenn man bei Vorschau während des Designen in Lazarus-IDE Fehler bekommt.
Und jetzt fällt mir ein warum du Fehler bekommen hast. Alle Variablen auch die mit OnGetValue funktionieren nur, wenn dein Programm läuft.

Ich habe Beispielprogramm hinzugefügt.
repvariable1pub.zip
Beispielprogramm
(139.02 KiB) 54-mal heruntergeladen

Soner
Beiträge: 624
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: Variablen im LazReport

Beitrag von Soner »

Mann kann die Variablen auch als Highlight-Bedingung hinzufügen. Füg einfach ein zweites Memo und schreib als Hightlight-Bedingung:
[xsichtbar]='1'

dann ändere dort Farbe oder Font.Style.
Highlight-Knopf liegt links von Links-Ausrichten-Knopf im Designer.
Mann kann das verwenden z.B. um Minuswerte rot auszugeben.

Antworten