Sign in Join
Wiki copytemporary

LazReport Documentation/pl: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-<div style="font-size:1.88em;margin:0.75em 0;">
2-
31Dokumentacja LazReport
42
5-</div>
6-
73## Wstęp
84
95LazReport 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.
106
117## Licencja
128
139LazReport 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.
1410
1511## Autorzy
1612
1713FreeReport został stworzony przez Fast Reports Inc.
1814
1915Początkowy port LazReport został wykonany przez Oliviera Guilbaud.
2016
2117Integracja z Lazarusem i poprawki są autorstwa Jesusa Reyesa A.
2218
2319Ponadto jest wielu współpracowników, zobacz plik lazreport/doc/contributors.txt
2420
2521## Instalacja
2622
2723Aby zainstalować LazReport w Lazarus IDE:
2824
29251. Otwórz pakiet LazReport. Menu: Pakiet-\>Otwórz plik pakietu (.lpk)...
30262. Otwórz plik \$(lazarusdir)/components/lazreport/source/lazreport.lpk
31273. Zastosuj-\>Zainstaluj
3228
3329lub
3430
35311. Menu: Pakiet-\>Instaluj/odinstaluj pakiety
36322. W oknie „Pakiety do zainstalowania” wybierz lazreport (możesz też zaznaczyć dodatek lazreportpdfexport)
37333. Kliknij Instaluj zaznaczone oraz Zapisz i przebuduj IDE
3834
3935Przy następnym uruchomieniu Lazarus powinien pokazać zakładkę LazReport w palecie komponentów.
4036
4137## Dokumentacja
4238
4339Podrę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.
4440
4541Dopó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.
4642
4743### Operatory
4844
4945Obsługiwane są następujące operatory:
5046
5147| Typ Operatora | Operatory |
5248|----|----|
5349| Logiczny | \>, \<, BUT, AND, NOT, =, \< \>, \> =, \< = |
5450| Matematyczny\|\|-, *, +, MOD, / | |
5551
5652### Funkcje
5753
5854Dostępne są następujące funkcje:
5955
6056#### Funkcje statystyczne
6157
6258SUM(\<X\>)
6359Zwraca sumę wartości reprezentowanych przez \<X\>, co zazwyczaj jest polem danych.
6460
6561AVG(\<X\>)
6662Zwraca średnią z \<X\> wartości.
6763
6864COUNT
6965Oblicza ilość wystąpień.
7066
7167MIN(\<X\>)
7268Zwraca najniższą wartość ze wszystkich wartości reprezentowanych przez \<X\>
7369
7470MAX(\<X\>)
7571Zwraca najwyższą wartość ze wszystkich wartości reprezentowanych przez \<X\>
7672
7773#### Funkcje daty i czasu
7874
7975> **Note:** 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
8076
8177FORMATDATETIME(\<X\>, \<Y\>)
8278Zwraca \<Y\> TDateTime w formacie \<X\>. \<X\> używa domyślnej składni dla [formatów Lazarusa](http://www.freepascal.org/docs-html/rtl/sysutils/formatdatetime.html).
8379
8480FORMATFLOAT(\<X\>, \<Y\>)
8581Zwraca wartość liczbową \<Y\> w formacie \<X\>. \<X\> używa domyślnej składni dla for [formatów Lazarusa](http://www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html).
8682
8783STRTODATE(\<X\>)
8884Zwraca reprezentację TDateTime(? nie datę?) ciągu \<X\>. \<X\> musi być poprawnie sformatowany.
8985
9086STRTOTIME(\<X\>)
9187Zwraca reprezentację części czasu TDateTime ciągu \<X\>. \<X\> musi być poprawnie sformatowany.
9288
9389#### Funkcje ciągów typu string
9490
9591LOWERCASE(\<X\>)
9692Zwraca małe litery \<X\>
9793
9894UPPERCASE(\<X\>)
9995Zwraca wielkie litery \<X\>
10096
10197NAMECASE(\<X\>)
10298Zwraca \<X\> z wielkimi literami
10399
104100COPY(\<X\>, \<Y\>, \<Z\>)
105101Podobny do funkcji Copy Pascala: zwraca fragment łańcucha \<X\> zaczynając od pozycji \<Y\> dla liczby znaków \<Z\>.
106102
107103#### Funkcje numeryczne
108104
109105FRAC(\<X\>)
110106Zwraca część dziesiętną liczby \<X\>
111107
112108INT(\<X\>)
113109Zwraca część całkowitą liczby \<X\>
114110
115111ROUND(\<X\>)
116112Zwraca liczbę \<X\> zaokrągloną do liczby całkowitej (w górę? w dół? najbliższą liczbę całkowitą? zaokrąglenie bankierskie?)
117113
118114STR(\<X\>)
119115Zwraca ciąg znaków reprezentujący liczbę \<X\>
120116
121117#### Funkcje logiczne typu boolean
122118
123119IF(\<X\>, \<Y\>, \<Z\>)
124120Zwraca \<Y\> jeśli wyrażenie \<X\> ma wartość True. Jeśli ma wartość False, zwraca \<Z\>.
125121
126122### Dodawanie własnych funkcji
127123
128124Choć 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.
129125
130126Aby dodać własne funkcje:
131127
132128#### Dodaj szablon do pliku definicji
133129
134130> **Note:** 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
135131
136132Musisz zdefiniować swoje funkcje zgodnie z następującym szablonem w pliku FR.lng (**czy to nadal poprawna nazwa dla Lazreprot?**):
137133
138134, FCT = CATEGORY\|FCT (\<X\> \<Y\>, \<Z\>)\|Help
139135
140136gdzie:
141137
142138- FCT, to nazwa funkcji.
143139- CATEGORY, to nazwa kategorii.
144140- FCT (\<X\> \<Y\>, \<Z\>), to układ wymaganych parametrów, z maksymalnie 3 parametrami.
145141- Help, to mały tekst pomocy, który powinien umożliwić użytkownikowi zrozumienie celu funkcji.
146142- \|, to separator.
147143
148144Każ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**.
149145
150146Pola danych są ograniczone do zmiennych i mają następujący format:
151147
152148Dataset_Name. "Nazwa_Pola"
153149
154150Dodajmy funkcje SQRT i POS, dodając następujące wiersze do **FR.lng** todo: nadal ta sama nazwa?
155151
156152SQRT = Matematyka i trygonometria\|SQRT(\<X\>)\|Zwraca pierwiastek kwadratowy z \<X\>\
157153POS = Ciągi znaków\|POS(\<X\>,\<Y\>) Zwraca pozycję ciągu \<X\> w ciągu \<Y\>
158154
159155#### Dodaj kod źródłowy funkcji
160156
161157Definicja 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:
162158
163159``` pascal
164160Unit FR_OGFct;
165161
166162interface
167163
168164implementation
169165
170166uses FR_Pars, FR_Class; // Standardowe deklaracje potrzebne dla Lazreport!! Uwaga: FR_pars itp.? Czy te nazwy są w porządku?
171167
172168type
173169 // Tutaj deklarujemy nasze własne funkcje
174170 TfrOGFunctionLibrary = class(TfrFunctionLibrary)
175171 public
176172 constructor Create; override;
177173 procedure DoFunction(FNo:integer procedure; p1, p2,
178174 p3:Variant; var valley:string); override;
179175 p3:Variant; var valley:string);
180176 end;
181177
182178//**************************
183179// * TfrOGFunctionLibrary
184180constructor TfrOGFunctionLibrary.Create;
185181begin
186182 inherited Create;
187183 // Dodaj nasze funkcje do listy dostępnych funkcji:
188184 with List do
189185 begin
190186 Add('POS');
191187 Add('SQRT');
192188 end;
193189end;
194190
195191Procedure TfrOGFunctionLibrary.DoFunction(FNo:Integer procedure;
196192 p1, p2, p3:Variant; Var valley:String); //valley?
197193Var
198194 Par1, Par2: Varying;
199195 Result: Variantying; //variantying? variant?
200196begin
201197 Try
202198 Case FNo of //to jest indeks funkcji dodanych w konstruktorze
203199 0 :
204200 begin // funkcja POS
205201 Par1:=VarToStr(Parser.Calc(p1));
206202 Par2:=VarToStr(Parser.Calc(P2));
207203 Result:=Pos(Par1,Par2);
208204 end;
209205 1 : // funkcja SQRT
210206 Result:=SQRT(Parser.Calc(P1));
211207 end;
212208 Except
213209 // Ciąg string ze szczegółami błędu
214210 Result:='Error in function '+List.Strings[FNo];
215211 end;
216212 Val:=VarToStr(Result); // Wynikowy ciąg
217213end;
218214
219215Procedure DoInit;
220216begin
221217 frRegisterFunctionLibrary(TfrOGFunctionLibrary);
222218end;
223219```
224220
225221Zapisz raport, a następnie wybierz File-\>List, a pojawi się to okno:
226222
227-<figure>
228-<img src="imagem21.jpg" title="imagem21.jpg" />
229-<figcaption>imagem21.jpg</figcaption>
230-</figure>
223+![](/wiki-images/1/10/Imagem21.jpg)
231224
232225Możesz zauważyć pojawienie się małego przycisku (...), aktywnego tylko w przypadku wyrażenia. Kliknij poniżej, aby otworzyć edytor:
233226
234-<figure>
235-<img src="imagem22.jpg" title="imagem22.jpg" />
236-<figcaption>imagem22.jpg</figcaption>
237-</figure>
227+![](/wiki-images/0/0f/Imagem22.jpg)
238228
239229Możesz zauważyć podobieństwo. Kliknięcie przycisku Add spowoduje wczytanie parametrów edytora:
240230
241-<figure>
242-<img src="imagem23.jpg" title="imagem23.jpg" />
243-<figcaption>imagem23.jpg</figcaption>
244-</figure>
231+![](/wiki-images/2/23/Imagem23.jpg)
245232
246233W 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.
247234
248235### Eksportuj filtry
249236
250237LazReport 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.
251238
252239Filtr eksportu to specjalnie zaprojektowana klasa, która jest zarejestrowana w LazReport i umożliwia zapisanie raportu w jednym lub kilku formatach.
253240
254241Po 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.
255242
256243Pakiet 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.
257244
258245Filtr 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.
259246
260247Moż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.
261248
262249Filtry eksportu LazReport są wywoływane na dwa sposoby:
263250
2642511. 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.
2652522. przez kod przy użyciu metody TfrReport.ExportTo. Zobacz poniżej przykład:
266253
267254``` pascal
268255 if TheReport.PrepareReport then
269256 TheReport.ExportTo(TfrHTMExportFilter, 'wyeksportowany_plik.html');
270257```
271258
272259Gdzie 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.
273260
274261Aby 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.
275262
276263Od 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.
277264
278265Procedura 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:
279266
280267``` pascal
281268if sender is TfrHTMExportFilter then
282269begin
283270 TfrHTMExportFilter(sender).UseCSS := false;
284271end;
285272```
286273
287274Poniżej przedstawiono opis dostępnych filtrów eksportu.
288275
289276#### TfrExportFilter
290277
291278TfrExportFilter jest klasą bazową wszystkich filtrów eksportu i definiuje dwie właściwości, które programista może modyfikować w zdarzeniu OnExportFilterSetup:
292279
293280- **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:
294281
295282``` pascal
296283sender.BandTypes := [btMasterData];
297284```
298285
299286Domyś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.
300287
301288- **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.
302289
303290#### TfrTextExportFilter
304291
305292inheritance: TfrExportFilter \<- TfrTextExportFilter\
306293znajduje się w pliku: components/lazreport/source/**lr_e_txt.pas** dołączonym do pakietu LazReport.
307294
308295TfrTextExportFilter 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.
309296
310297- **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.
311298- **UseBOM**:boolean. Ta właściwość umożliwia włączenie znaku UTF-8 Byte Order Mark na początku tekstu wyjściowego (patrz [BOM](https://pl.wikipedia.org/wiki/BOM_(informatyka))) wymaganego przez niektóre edytory/przeglądarki, domyślnie żaden BOM nie jest używany na eksportowanym wyjściu.
312299
313300#### TfrCSVExportFilter
314301
315302inheritance: TfrExportFilter \<- TfrTextExportFilter \<- TfrCSVExportFilter\
316303znajduje się w: pliku components/lazreport/source/**lr_e_csv.pas** zawartym w pakiecie LazReport.
317304
318305Ten 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.
319306
320307- **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*.
321308- **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).
322309- **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);
323310
324311Eksporter 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.
325312
326313#### TfrHTMExportFilter
327314
328315inheritance: TfrExportFilter \<- TfrTextExportFilter \<- TfrHTMExportFilter\
329316Znajduje się w: components/lazreport/source/**lr_e_htm.pas** w pakiecie LazReport.
330317
331318Ten specjalny filtr eksportu tekstu generuje prawidłowe dane wyjściowe „HTML 4.01 Transitional”. Obecnie definiuje tylko jedną dodatkową właściwość.
332319
333320- **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.
334321
335322### Język skryptowy
336323
337324W LazReport zawarty jest prosty język skryptowy (interpreter) podobny do Pascala.
338325
339326Kilka uwag:
340327
341328- interpreter wydaje się oczekiwać średników po każdym wierszu
342329- interpreter nie może obsłużyć zagnieżdżonych instrukcji if
343330
344331Przykład:
345332
346333``` pascal
347334 if [[PAY]>0] then begin
348335 if[[LATE_FEE]=1] then Text:=[MSGL2];
349336 else Text:= [MSGL1];
350337 end;
351338```
352339
353340Powyższy kod nie skompiluje się, ale ten tak:
354341
355342``` pascal
356343 if[[LATE_FEE]=1] then Text:=[MSGL2]
357344 else Text:= [MSGL1];
358345```
359346
360347Źródło: [wątek na forum](http://forum.lazarus.freepascal.org/index.php/topic,22902.0.html).
361348
362349### Przykłady
363350
364351Możesz znaleźć kilka przykładów w swojej instalacji Lazarusa w katalogu components\lazreport\samples.
365352
366353#### Running total
367354
368355Aby obliczyć sumę dla wartości każdej strony dodanej do sumy na poprzedniej stronie, wykonaj następujące kroki:
369356
370357- Upewnij się, że masz raport z głównym zestawem BandTypes połączonym ze zbiorem danych dataset
371358- Umieść tekst wewnątrz tego zestawu i kliknij dwukrotnie, aby otworzyć jego edytor.
372359- W edytorze zaznacz opcję skryptu w lewym górnym rogu.
373360- W oknie skryptu wklej następujący kod
374361
375362``` pascal
376363 IF [Line#] = 1 then RunTotal := [Dbf1."MTH_NO"]
377364 else RunTotal := RunTotal +[Dbf1."MTH_NO"];
378365```
379366
380367
381368oczywiście musisz zastąpić \[dbf1."MTH_NO"\] swoim polem, tym, które chcesz zsumować.
382369
383370- Kliknij OK, aby zapisać zmiany.
384371- Ponownie otwórz edytor, klikając dwukrotnie obiekt tekstowy
385372- Kliknij przycisk „Variable”.
386373- Wybierz kategorię zmiennych fr z listy rozwijanej.
387374- Kliknij dwukrotnie zmienną RunTotal, która ma zostać umieszczona w Memo.
388375- Kliknij OK, a następnie naciśnij Preview.
389376
390377Źródło: [Issue \#17198](https://bugs.freepascal.org/view.php?id=17198)
391378
392379### Poradnik
393380
394381Please see [[LazReport Tutorial/pl|Poradnik LazReport]].
395382
396383### Zobacz także
397384
398385- [Tworzenie i drukowanie raportu](http://www.pp4s.co.uk/main/tu-db-firebird-demo3.html)
399386
400387## Projektant raportów
401388
402389- Menu: Plik-\>Zapisz jako ...
403390 - Uwaga o szablonach:
404391 - 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.
405392 - 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).
406393
407394## Szybki start
408395
409396### Raportuj rekordy ze zbioru danych takich jak Dataset
410397
411398W 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.
412399
4134001. Z zakładki LazReport wybierz składnik TfrReport i upuść go na formularzu projektu, będzie miał nazwę „frReport1”.
4144012. Upuść komponent TfrDbDataset, zostanie on nazwany „frDbDataset1”
4154023. Upuść TButton, będzie on nazywał się Button1, zmień jego nazwę na "btnShowReport"
4164034. Po wybraniu frDbDataset1 w Inspectorze Obiektów wybierz „Dbf1” dla właściwości „Dataset”
4174045. Teraz wybierz frReport1 i używając tej samej procedury połącz jego właściwość „Dataset” z „frDbDataset1”:
418- <center>
419-
420- <figure>
421- <img src="lrformsetup.png" title="lrformsetup.png" />
422- <figcaption>lrformsetup.png</figcaption>
423- </figure>
424-
425- </center>
405+ ![](/wiki-images/4/46/Lrformsetup.png)
4264066. Kliknij prawym przyciskiem myszy frReport1 i wybierz z menu opcję „Projekt raportu”, pojawi się projektant raportów LazReport.
4274077. Z okna Projektanta wybierz menu Tools-\>Tools-\>Insert DB Fields, pojawi się okno dialogowe Insert fields.
4284088. Na liście pól wybierz pola, które chcesz umieścić w raporcie
4294099. Zaznacz opcje „Include Headers” i „Include Bands”, wynik powinien wyglądać mniej więcej tak:
430- <center>
431-
432- <figure>
433- <img src="lrinsertfieldsdialog.png" title="lrinsertfieldsdialog.png" />
434- <figcaption>lrinsertfieldsdialog.png</figcaption>
435- </figure>
436-
437- </center>
410+ ![](/wiki-images/7/7d/Lrinsertfieldsdialog.png)
43841110. Naciśnij przycisk „OK”, LazReport uporządkuje zestawy i pola w następujący sposób:
439- <center>
440-
441- <figure>
442- <img src="lrreportwithfields.png" title="lrreportwithfields.png" />
443- <figcaption>lrreportwithfields.png</figcaption>
444- </figure>
445-
446- </center>
412+ ![](/wiki-images/4/43/Lrreportwithfields.png)
44741311. Naciśnij przycisk podglądu ![](/wiki-images/b/bb/Lrprevieweye.png), następnie LazReport uporządkuje rzeczy i pokaże:
448- <center>
449-
450- <figure>
451- <img src="lrpreviewreport.png" title="lrpreviewreport.png" />
452- <figcaption>lrpreviewreport.png</figcaption>
453- </figure>
454-
455- </center>
414+ ![](/wiki-images/4/43/Lrpreviewreport.png)
45641512. Zapisz raport za pomocą Menu File-\>Save, wybierz ten sam katalog co bieżący projekt i nazwij go listing1.lrf
45741613. Zamknij projektanta raportów.
45841714. Podwójnie kliknij btnShowReport i wpisz następujący kod:
459418
460419``` pascal
461420 frReport1.LoadFromFile('listing1.lrf');
462421 frReport1.ShowReport;
463422```
464423
465424## Zgłaszanie błędów
466425
467426Proszę zgłaszać problemy za pomocą [lazarus/freepascal bugtrackera](http://www.freepascal.org/mantis/main_page.php), projekt: „Lazarus Packages”, kategoria „LazReport”.
468427
469428W przypadku poprawek prosimy o przesłanie raportu o błędzie i dołączenie do niego poprawki.
470429
471430---
472431*From the Free Pascal wiki, page "LazReport Documentation/pl", as it stood on 2022-02-05 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history