LazReport Documentation/pl

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) polski (pl)

Dokumentacja LazReport

Wstęp

LazReport to grupa komponentów, które dodają możliwość tworzenia raportów w aplikacji. Wykorzystuje projektanta wizualnego do tworzenia raportów grupowych i zawiera silnik raportów z podglądem i interpreterem do uruchamiania skryptów użytkownika. Projektant raportów może być wywoływany w czasie wykonywania.

Licencja

LazReport bazuje na FreeReport 2.32 i dzięki Fast Reports Inc. jest dostępny na zmodyfikowanej licencji LGPL, tej samej licencji co Lazarus LCL. Zobacz pliki lazreport/license.txt, license-rus.txt i license-lazreport.txt, aby uzyskać więcej informacji.

Autorzy

FreeReport został stworzony przez Fast Reports Inc.

Początkowy port LazReport został wykonany przez Oliviera Guilbaud.

Integracja z Lazarusem i poprawki są autorstwa Jesusa Reyesa A.

Ponadto jest wielu współpracowników, zobacz plik lazreport/doc/contributors.txt

Instalacja

Aby zainstalować LazReport w Lazarus IDE:

  1. Otwórz pakiet LazReport. Menu: Pakiet->Otwórz plik pakietu (.lpk)...
  2. Otwórz plik $(lazarusdir)/components/lazreport/source/lazreport.lpk
  3. Zastosuj->Zainstaluj

lub

  1. Menu: Pakiet->Instaluj/odinstaluj pakiety
  2. W oknie „Pakiety do zainstalowania” wybierz lazreport (możesz też zaznaczyć dodatek lazreportpdfexport)
  3. Kliknij Instaluj zaznaczone oraz Zapisz i przebuduj IDE

Przy następnym uruchomieniu Lazarus powinien pokazać zakładkę LazReport w palecie komponentów.

Dokumentacja

Podręcznik dewelopera i podręczniki użytkownika specyficzne dla LazReport nie zostały jeszcze napisane. W międzyczasie większość funkcji LazReport jest opisana w Podręczniku programisty FreeReport (zobacz components/lazreport/doc/fr_eng.odt (lub fr_eng.pdf) w swojej instalacji Lazarusa). Opisane tam rzeczy specyficzne dla platformy, takie jak obiekty OLE, nie są zaimplementowane w LazReport, także niektóre przykłady lub obrazki odnoszą się do próbek dostępnych tylko w Delphi.

Dopóki dokumentacja LazReport nie zostanie opracowana, ta strona Wiki będzie używana jako kontener dokumentacji; może w przyszłości brakująca dokumentacja mogłaby zostać wygenerowana stąd. Zachęcamy użytkowników do dodawania tematów, które ich zdaniem wymagają udokumentowania.

Operatory

Obsługiwane są następujące operatory:

Typ Operatora Operatory
Logiczny >, <, BUT, AND, NOT, =, < >, > =, < =
Matematyczny -, *, +, MOD, /

Funkcje

Dostępne są następujące funkcje:

Funkcje statystyczne

SUM(<X>)
Zwraca sumę wartości reprezentowanych przez <X>, co zazwyczaj jest polem danych.
AVG(<X>)
Zwraca średnią z <X> wartości.
COUNT
Oblicza ilość wystąpień.
MIN(<X>)
Zwraca najniższą wartość ze wszystkich wartości reprezentowanych przez <X>
MAX(<X>)
Zwraca najwyższą wartość ze wszystkich wartości reprezentowanych przez <X>

Funkcje daty i czasu

Light bulb  Uwaga: Grudzień 2013: inspekcja kodu źródłowego lr_pars wydaje się wskazywać, że te funkcje działają z aktualnym formatem daty locale, co ogranicza interoperacyjność. Do zrobienia: zweryfikuj to; Funkcja extend z dodatkowym parametrem formatu, który domyślnie wynosi np. ISO8601
FORMATDATETIME(<X>, <Y>)
Zwraca <Y> TDateTime w formacie <X>. <X> używa domyślnej składni dla formatów Lazarusa.
FORMATFLOAT(<X>, <Y>)
Zwraca wartość liczbową <Y> w formacie <X>. <X> używa domyślnej składni dla for formatów Lazarusa.
STRTODATE(<X>)
Zwraca reprezentację TDateTime(? nie datę?) ciągu <X>. <X> musi być poprawnie sformatowany.
STRTOTIME(<X>)
Zwraca reprezentację części czasu TDateTime ciągu <X>. <X> musi być poprawnie sformatowany.

Funkcje ciągów typu string

LOWERCASE(<X>)
Zwraca małe litery <X>
UPPERCASE(<X>)
Zwraca wielkie litery <X>
NAMECASE(<X>)
Zwraca <X> z wielkimi literami
COPY(<X>, <Y>, <Z>)
Podobny do funkcji Copy Pascala: zwraca fragment łańcucha <X> zaczynając od pozycji <Y> dla liczby znaków <Z>.

Funkcje numeryczne

FRAC(<X>)
Zwraca część dziesiętną liczby <X>
INT(<X>)
Zwraca część całkowitą liczby <X>
ROUND(<X>)
Zwraca liczbę <X> zaokrągloną do liczby całkowitej (w górę? w dół? najbliższą liczbę całkowitą? zaokrąglenie bankierskie?)
STR(<X>)
Zwraca ciąg znaków reprezentujący liczbę <X>

Funkcje logiczne typu boolean

IF(<X>, <Y>, <Z>)
Zwraca <Y> jeśli wyrażenie <X> ma wartość True. Jeśli ma wartość False, zwraca <Z>.

Dodawanie własnych funkcji

Choć prawdopodobnie nie jest to zbytnio potrzebne, LazReport pozwala na definiowanie własnych funkcji. Jak wspomniano, zobacz #Dokumentacja, aby zapoznać się z przeglądem istniejących funkcji.

Aby dodać własne funkcje:

Dodaj szablon do pliku definicji

Light bulb  Uwaga: To zostało zaczerpnięte z samouczka Delphi/FastReport/FreeReport w języku portugalskim. Powinien zostać zweryfikowany i prawdopodobnie zmodyfikowany do pracy z aktualnym Lazarusem/LazReport

Musisz zdefiniować swoje funkcje zgodnie z następującym szablonem w pliku FR.lng (czy to nadal poprawna nazwa dla Lazreprot?):

, FCT = CATEGORY|FCT (<X> <Y>, <Z>)|Help

gdzie:

  • FCT, to nazwa funkcji.
  • CATEGORY, to nazwa kategorii.
  • FCT (<X> <Y>, <Z>), to układ wymaganych parametrów, z maksymalnie 3 parametrami.
  • Help, to mały tekst pomocy, który powinien umożliwić użytkownikowi zrozumienie celu funkcji.
  • |, to separator.

Każdy parametr jest oddzielony przecinkami i może być wyrażeniem, stałą, zmienną, polem lub danymi. Stałe typu alfanumerycznego powinny być ograniczone znakiem. Zmienne są oddzielone przez and.

Pola danych są ograniczone do zmiennych i mają następujący format:

Dataset_Name. "Nazwa_Pola"

Dodajmy funkcje SQRT i POS, dodając następujące wiersze do FR.lng todo: nadal ta sama nazwa?

SQRT = Matematyka i trygonometria|SQRT(<X>)|Zwraca pierwiastek kwadratowy z <X>
POS = Ciągi znaków|POS(<X>,<Y>) Zwraca pozycję ciągu <X> w ciągu <Y>

Dodaj kod źródłowy funkcji

Definicja funkcji jest fajna, ale nie określiliśmy, jak te funkcje działają. W związku z tym podaję trochę kodu źródłowego, aby dodać funkcje POS i SQRT:

Unit FR_OGFct;

interface 

implementation 

uses FR_Pars, FR_Class; // Standardowe deklaracje potrzebne dla Lazreport!! Uwaga: FR_pars itp.? Czy te nazwy są w porządku?

type 
  // Tutaj deklarujemy nasze własne funkcje
  TfrOGFunctionLibrary = class(TfrFunctionLibrary)
  public  
    constructor Create; override;  
    procedure DoFunction(FNo:integer procedure;  p1, p2,
             p3:Variant; var valley:string); override;  
             p3:Variant; var valley:string);
  end;  

//************************** 
// * TfrOGFunctionLibrary 
constructor TfrOGFunctionLibrary.Create;
begin  
  inherited Create;  
  // Dodaj nasze funkcje do listy dostępnych funkcji:
  with List do 
  begin
    Add('POS');
    Add('SQRT');
  end;
end;

Procedure TfrOGFunctionLibrary.DoFunction(FNo:Integer procedure;  
  p1, p2, p3:Variant; Var valley:String); //valley?
Var 
  Par1, Par2:  Varying;
  Result:  Variantying; //variantying? variant?
begin
  Try
    Case FNo of //to jest indeks funkcji dodanych w konstruktorze
      0 : 
        begin   // funkcja POS
          Par1:=VarToStr(Parser.Calc(p1)); 
          Par2:=VarToStr(Parser.Calc(P2)); 
          Result:=Pos(Par1,Par2);
        end;
      1 :       // funkcja SQRT
        Result:=SQRT(Parser.Calc(P1));
    end;
  Except   
    // Ciąg string ze szczegółami błędu
    Result:='Error in function '+List.Strings[FNo];
  end;
  Val:=VarToStr(Result); // Wynikowy ciąg
end;

Procedure DoInit;
begin
  frRegisterFunctionLibrary(TfrOGFunctionLibrary);
end;

Zapisz raport, a następnie wybierz File->List, a pojawi się to okno:

imagem21.jpg

Możesz zauważyć pojawienie się małego przycisku (...), aktywnego tylko w przypadku wyrażenia. Kliknij poniżej, aby otworzyć edytor:

imagem22.jpg

Możesz zauważyć podobieństwo. Kliknięcie przycisku Add spowoduje wczytanie parametrów edytora:

imagem23.jpg

W zależności od liczby parametrów masz mniej lub więcej obszarów edycji. Przycisk (...) umożliwia otwarcie generatora wyrażeń w celu ustawienia parametru.

Eksportuj filtry

LazReport posiada możliwość zapisania raportu wyświetlanego w oknie podglądu w formacie zdefiniowanym przez użytkownika. Posiada mechanizm rozszerzeń z obsługą wtyczek, które można wykorzystać do dodania dowolnej ilości filtrów eksportu.

Filtr eksportu to specjalnie zaprojektowana klasa, która jest zarejestrowana w LazReport i umożliwia zapisanie raportu w jednym lub kilku formatach.

Po zainstalowaniu, LazReport zawiera kilka filtrów gotowych do użycia, są to: TfrTextExportFilter do eksportowania raportu w postaci zwykłego tekstu, TfrCSVExportFilter do eksportowania raportu w formacie CSV oraz TfrHTMExportFilter do eksportowania raportu w postaci prostego pliku html. Dołączone są również niektóre pakiety, które zapewniają dodatkowe filtry, są to (patrz Menu Pakiet->Instaluj/odinstaluj pakiety ...): lrCairoExport (components/lazreport/source/addons/cairoexport/lrCairoExport.lpk), który zapewnia obsługę eksportu do formatów PDF i PS przy użyciu Cairo Graphics Library oraz lr_extexp (components/lazreport/source/addons/imgexport/lr_extexp.lpk) z obsługą ulepszonego eksportu html i niektórych formatów graficznych, takich jak BMP, JPG i PNG. LazReport zawiera również pakiet LazReportPDFExport (components/lazreport/source/addons/pdfexport/LazReportPDFExport.lpk), który umożliwia eksport plików PDF za pomocą PowerPDF/pl, który jest dostępny w repozytorium Lazarus-CCR.

Pakiet filtrów jest instalowany w taki sam sposób, jak każdy inny pakiet Lazarusa; po ponownym uruchomieniu Lazarusa, filtry (zwykle) pojawiają się jako ikony w zakładce LazReport na Palecie Komponentów.

Filtr eksportu jest dodawany do aplikacji przez proste przeciągnięcie jednej z tych ikon do formularza lub modułu danych, w którym istnieje komponent TfrReport, jest on automatycznie rejestrowany i pozostaje gotowy do użycia.

Można to również zrobić ręcznie, dołączając nazwę modułu filtru eksportu w klauzuli uses modułu, w którym używany jest TfrReport.

Filtry eksportu LazReport są wywoływane na dwa sposoby:

  1. przez zapis raportu w oknie podglądu. Korzystając z tej metody (naciśnięcie przycisku Save) po wyświetleniu okna Save As, użytkownik może wybrać format z listy zarejestrowanych formatów. Lista jest wypełniona wszystkimi zarejestrowanymi filtrami eksportu.
  2. przez kod przy użyciu metody TfrReport.ExportTo. Zobacz poniżej przykład:
  if TheReport.PrepareReport then
    TheReport.ExportTo(TfrHTMExportFilter, 'wyeksportowany_plik.html');

Gdzie TheReport przechowuje instancję komponentu TfrReport. W tym przykładzie TfrHTMExportFilter jest używany do generowania pliku o nazwie 'wyeksportowany_plik.html'. Nie ma potrzeby ponownego sporządzania raportu, jeśli został on przygotowany wcześniej.

Aby użyć TfrHTMExportFilter, programista musi przeciągnąć i upuścić instancję komponentu TfrHTMExportFilter z zakładki LazReport w palecie komponentów do formatki swojego projektu. Alternatywnie można dodać plik modułu lr_e_htm.pas do klauzuli uses w swoim module.

Od wersji LazReport 0.9.6 rozszerzono obsługę filtrów eksportu: teraz filtry eksportu mogą przyjmować parametry, które użytkownicy mogą dostosować, zmieniając wartości bezpośrednio lub przedstawiając użytkownikowi końcowemu jakiś interfejs (UI). W celu wprowadzenia zmian w parametrach programista może utworzyć procedurę obsługi zdarzenia dla zdarzenia TfrReport.OnExportFilterSetup, dostępną po wybraniu komponentu TfrReport i wybraniu zakładki Zdarzenia w Inspektorze obiektów.

Procedura obsługi zdarzeń OnExportFilterSetup (typu TExportFilterSetup) przyjmuje argument Sender typu TfrExportFilter, aby użyć tego typu, do klauzuli uses należy dodać moduł lr_class.pas. Wszystkie klasy ExportFilter współdzielą to zdarzenie, a programista musi rzutować typ argumentu Sender na żądaną klasę filtra eksportu, na przykład:

if sender is TfrHTMExportFilter then
begin
  TfrHTMExportFilter(sender).UseCSS := false;
end;

Poniżej przedstawiono opis dostępnych filtrów eksportu.

TfrExportFilter

TfrExportFilter jest klasą bazową wszystkich filtrów eksportu i definiuje dwie właściwości, które programista może modyfikować w zdarzeniu OnExportFilterSetup:

  • BandTypes: TfrBandTypes. Jest to zestaw typów wyliczeniowych, każdy z nich odpowiad za jakiś element raportu, tylko zespoły danych zawarte w tym zestawie są faktycznie eksportowane; pozostałe dane w raporcie zostaną zignorowane. Korzystając z tej właściwości, programista może na przykład wyeksportować tylko zawartość głównego zestawu, pozostawiając tytuły, nagłówki i stopki poza eksportowanymi danymi wyjściowymi, wykonując:
sender.BandTypes := [btMasterData];

Domyślnie wszystkie zestawy BandTypes są przetwarzane, ale TfrCSVExportFilter zmienia tę właściwość, aby przetwarzać tylko nagłówek główny, nagłówek kolumny i zestawy danych głównych.

  • UseProgressbar: wartość logiczna. Ta właściwość włącza lub wyłącza wyświetlanie paska postępu podczas przetwarzania filtru eksportu. Ta właściwość domyślnie ma wartość False.

TfrTextExportFilter

inheritance: TfrExportFilter <- TfrTextExportFilter
znajduje się w pliku: components/lazreport/source/lr_e_txt.pas dołączonym do pakietu LazReport.

TfrTextExportFilter to podstawowa klasa tekstowych filtrów eksportu. Ten filtr eksportu próbuje utworzyć tekstową reprezentację raportu graficznego, dopasowując oryginalne współrzędne graficzne do bardziej zgrubnej siatki, w której każdy moduł składa się z pikseli „UsedFont”. W zależności od wartości value UsedFont eksportowane dane wyjściowe mogą mniej więcej reprezentować układ obiektów w raporcie graficznym. Oprócz właściwości odziedziczonych z klasy TfrExportFilter, TfrTextExportFilter definiuje jeszcze dwie właściwości.

  • UsedFont:liczba całkowita. Ta właściwość definiuje wymiary w pikselach na siatce wyjściowej, obiekty w raporcie są dopasowywane do tej siatki przez ponowne obliczenie każdej pozycji x i y. Domyślna wartość to 10, jeśli użytkownik zmieni tę wartość na 0 lub mniej, LazReport automatycznie wyświetli okno dialogowe z pytaniem o wartość UsedFont, jeśli użytkownik wprowadzi nieprawidłową wartość, zostanie użyta wartość 10. Używana jest wartość 10, ponieważ jest to wartość, która lepiej pasuje do zwykłych raportów, które są tworzone z czcionkami 10-13 punktów.
  • UseBOM:boolean. Ta właściwość umożliwia włączenie znaku UTF-8 Byte Order Mark na początku tekstu wyjściowego (patrz BOM) wymaganego przez niektóre edytory/przeglądarki, domyślnie żaden BOM nie jest używany na eksportowanym wyjściu.

TfrCSVExportFilter

inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrCSVExportFilter
znajduje się w: pliku components/lazreport/source/lr_e_csv.pas zawartym w pakiecie LazReport.

Ten specjalny filtr eksportu tekstu generuje dane wyjściowe z wartościami oddzielonymi przecinkami (właściwie każdy znak może być użyty jako separator). Różni się on od swojego przodka tym, że nie próbuje tworzyć tekstowej reprezentacji układu z raportu graficznego. Zamiast tego dla każdego rekordu wyjściowego, próbuje odgadnąć kolejność pól z raportu źródłowego oraz tworzy listę pól, używając separatora zdefiniowanego przez użytkownika. Oprócz właściwości odziedziczonych po klasach przodków definiuje pewne właściwości, aby dostosować generowane dane wyjściowe.

  • QuoteType:TfrQuoteType. Ta właściwość kontroluje, czy wygenerowana wartość pola powinna być ujęta w określych znakach cudzysłowu, czy nie. Możliwe wartości to qtNone, qtQuoteChar i qtAutoQuote. W przypadku qtNone wartość pola nigdy nie jest ujmowana w cudzysłowia, qtQuoteChar spowoduje użycie znaku określonego przez właściwość QuoteChar, każda instancja QuoteChar już obecna jako wartości pola zostanie zduplikowana. qtAutoQuote najpierw spróbuj sprawdzić, czy jakiekolwiek wystąpienie Separator lub QuoteChar jest już obecne w wartości pola, jeśli tak, to zachowuje się ona jakby określono qtQuoteChar, w przeciwnym przypadku wartość pola nie jest umowana w cudzysłowia, podobnie jak w przypadku qtNone. Właściwość QuoteType jest domyślnie ustawiona na qtQuoteChar.
  • QuoteChar:TUTF8Char. Ta właściwość przechowuje znak, który ma być użyty do ujęcia w nich wartości pola w przypadku, gdy QuoteType ma wartość qtQuoteChar lub został wydedukowany, jeśli ma wartość qtAutoQuote. Każde wystąpienie tego znaku wewnątrz wartości pola zostanie zduplikowane. Domyślnie QuoteChar jest ustawiony na znak „"” (U+0022 - cudzysłów amerykański).
  • Separator:TUTF8Char. Jest to znak używany do oddzielania pól w każdym rekordzie, domyślnie jest ustawiony na znak „,” (U+002C - przecinek), ale można użyć dowolnego prawidłowego znaku UTF-8. Niektóre pliki CSV są w rzeczywistości plikami rozdzielanymi tabulatorami, aby to uzyskać, ustaw Separator:=#9 (U+0009 - poziomy tabulator);

Eksporter CSV nie używa odziedziczonej wartości właściwości UsedFont, więc każdy zestaw wartości zostanie zignorowany. Przy domyślnych wartościach właściwości TfrCSVExportFilter utworzy pliki zgodne z programem Excel, jedynym zastrzeżeniem jest to, że program Excel nie rozpozna pliku zakodowanego w formacie UTF-8. Aby wymusić w programie Excel automatyczne rozpoznawanie kodowania, ustaw właściwość UseBOM na wartość True.

TfrHTMExportFilter

inheritance: TfrExportFilter <- TfrTextExportFilter <- TfrHTMExportFilter
Znajduje się w: components/lazreport/source/lr_e_htm.pas w pakiecie LazReport.

Ten specjalny filtr eksportu tekstu generuje prawidłowe dane wyjściowe „HTML 4.01 Transitional”. Obecnie definiuje tylko jedną dodatkową właściwość.

  • UseCSS:boolean. Ta właściwość kontroluje, czy generowane dane wyjściowe zawierają informacje CSS. Ta właściwość jest domyślnie ustawiona na True.

Język skryptowy

W LazReport zawarty jest prosty język skryptowy (interpreter) podobny do Pascala.

Kilka uwag:

  • interpreter wydaje się oczekiwać średników po każdym wierszu
  • interpreter nie może obsłużyć zagnieżdżonych instrukcji if

Przykład:

 if [[PAY]>0] then begin
 if[[LATE_FEE]=1] then Text:=[MSGL2];
 else Text:= [MSGL1];
 end;

Powyższy kod nie skompiluje się, ale ten tak:

 if[[LATE_FEE]=1] then Text:=[MSGL2]
 else Text:= [MSGL1];

Źródło: wątek na forum.

Przykłady

Możesz znaleźć kilka przykładów w swojej instalacji Lazarusa w katalogu components\lazreport\samples.

Running total

Aby obliczyć sumę dla wartości każdej strony dodanej do sumy na poprzedniej stronie, wykonaj następujące kroki:

  • Upewnij się, że masz raport z głównym zestawem BandTypes połączonym ze zbiorem danych dataset
  • Umieść tekst wewnątrz tego zestawu i kliknij dwukrotnie, aby otworzyć jego edytor.
  • W edytorze zaznacz opcję skryptu w lewym górnym rogu.
  • W oknie skryptu wklej następujący kod
 IF [Line#] = 1 then RunTotal := [Dbf1."MTH_NO"]
 else RunTotal := RunTotal +[Dbf1."MTH_NO"];
oczywiście musisz zastąpić [dbf1."MTH_NO"] swoim polem, tym, które chcesz zsumować.
  • Kliknij OK, aby zapisać zmiany.
  • Ponownie otwórz edytor, klikając dwukrotnie obiekt tekstowy
  • Kliknij przycisk „Variable”.
  • Wybierz kategorię zmiennych fr z listy rozwijanej.
  • Kliknij dwukrotnie zmienną RunTotal, która ma zostać umieszczona w Memo.
  • Kliknij OK, a następnie naciśnij Preview.

Źródło: Issue #17198

Poradnik

Please see Poradnik LazReport.

Zobacz także

Projektant raportów

  • Menu: Plik->Zapisz jako ...
    • Uwaga o szablonach:
      • Podczas zapisywania bieżącego raportu użytkownik może wybrać dowolny katalog w oknie dialogowym Zapisz jako ..., w przypadku szablonów (rozszerzenie .lrt) wybrany katalog jest ignorowany. Szablony są zawsze przechowywane w Katalogu szablonów. Wartość Katalog szablonów można ustawić, zmieniając zmienną globalną frTemplateDir (moduł lr_desgn.pas) lub ustawiając właściwość TemplateDir w komponencie TfrDesigner. Właściwość TemplateDir nadpisze zmienną globalną frTemplateDir, jeśli obie są używane. Katalog szablonów może być ścieżką bezwzględną lub względną do katalogu ze ścieżką programu, jeśli ten katalog nie istnieje, LazReport spróbuje go utworzyć przy pierwszym użyciu. Jeśli właściwość TemplateDir lub zmienna frTempateDir nie są ustawione, LazReport spróbuje zapisać szablony w katalogu programu.
      • Format szablonów binarnych (.frt) nie jest zalecany, ponieważ formaty binarne są trudne do zachowania zgodności z nowszymi (lub starszymi) wersjami LazReport. Jeśli to możliwe, użyj rozszerzenia pliku .lrt (format pliku XML).

Szybki start

Raportuj rekordy ze zbioru danych takich jak Dataset

W tym przykładzie zaprojektujemy raport do drukowania rekordów z zestawu danych pochodzacych z kontrolek (TDbf, TSQLQuery, TZTable, TZQuery itp.). Najpierw zakłada się, że LazReport jest już zainstalowany, a komponent DataSet, nazwany tutaj „Dbf1”, jest już skonfigurowany i aktywny.

  1. Z zakładki LazReport wybierz składnik TfrReport i upuść go na formularzu projektu, będzie miał nazwę „frReport1”.
  2. Upuść komponent TfrDbDataset, zostanie on nazwany „frDbDataset1”
  3. Upuść TButton, będzie on nazywał się Button1, zmień jego nazwę na "btnShowReport"
  4. Po wybraniu frDbDataset1 w Inspectorze Obiektów wybierz „Dbf1” dla właściwości „Dataset”
  5. Teraz wybierz frReport1 i używając tej samej procedury połącz jego właściwość „Dataset” z „frDbDataset1”:

    lrformsetup.png

  6. Kliknij prawym przyciskiem myszy frReport1 i wybierz z menu opcję „Projekt raportu”, pojawi się projektant raportów LazReport.
  7. Z okna Projektanta wybierz menu Tools->Tools->Insert DB Fields, pojawi się okno dialogowe Insert fields.
  8. Na liście pól wybierz pola, które chcesz umieścić w raporcie
  9. Zaznacz opcje „Include Headers” i „Include Bands”, wynik powinien wyglądać mniej więcej tak:

    lrinsertfieldsdialog.png

  10. Naciśnij przycisk „OK”, LazReport uporządkuje zestawy i pola w następujący sposób:

    lrreportwithfields.png

  11. Naciśnij przycisk podglądu lrprevieweye.png, następnie LazReport uporządkuje rzeczy i pokaże:

    lrpreviewreport.png

  12. Zapisz raport za pomocą Menu File->Save, wybierz ten sam katalog co bieżący projekt i nazwij go listing1.lrf
  13. Zamknij projektanta raportów.
  14. Podwójnie kliknij btnShowReport i wpisz następujący kod:
 frReport1.LoadFromFile('listing1.lrf');
 frReport1.ShowReport;

Zgłaszanie błędów

Proszę zgłaszać problemy za pomocą lazarus/freepascal bugtrackera, projekt: „Lazarus Packages”, kategoria „LazReport”.

W przypadku poprawek prosimy o przesłanie raportu o błędzie i dołączenie do niego poprawki.