ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠ°ΠΌ FastReport Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ http://www.fastrepoit.ru
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π² ΠΏΠ°Π»ΠΈΡΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ FastReport Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ: TfrFIBComponents. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠ°.
ΠΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° Π½Π°ΡΡ ΡΠΎΡΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ: frReport: TfrReport; frFIBComponents: TfrFIB Components ΠΈ frDBDataSetl: TfrDBDataSet (ΡΠΈΡ. 2.30).
Π ΠΈΡ 2.30. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ FastReport
ΠΡΠΊΡΠΎΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ ΠΎΡΡΠ΅ΡΠΎΠ², Π΄Π²Π°ΠΆΠ΄Ρ Π½Π°ΠΆΠ°Π² Π½Π° frReport (ΡΠΈΡ. 2.31).
Π ΠΈΡ 2.31. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° ΠΎΡΡΠ΅ΡΠΎΠ²
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡΡΠ½ΠΊΠ°, ΠΎΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TpFIBDataSet ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π°ΠΌ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ΅. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠΎΠ²Π°ΡΠΎΠ² Π² ΠΏΡΠ°ΠΉΡ-Π»ΠΈΡΡΠ΅ (ΡΠΈΡ. 2.32).
Π ΠΈΡ 2.32. Π¨Π°Π±Π»ΠΎΠ½ ΠΎΡΡΠ΅ΡΠ° ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ ΡΠΎΠ²Π°ΡΠΎΠ²
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (band): Report Title, Page Header, Master Data ΠΈ Page Footer. ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π½Π° Report Title, Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΎΡΡΠ΅ΡΠ° ΠΠ±ΡΠ΅ΠΊΡΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π½Π° Page Header, Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΡΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ PAGE#, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ. Master Data Π½ΡΠΆΠ΅Π½ Π½Π°ΠΌ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° CategonesDataSet. ΠΡΠ° ΠΏΠΎΠ»ΠΎΡΠ° (band) Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΠΏΠ΅ΡΠ°ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π½Π°ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ . Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, Page Footer Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΎΡΡΠ΅ΡΠ°.
Π£ΠΊΠ°ΠΆΠ΅ΠΌ FastReport, ΠΎΡΠΊΡΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ° ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ DataSource Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° frDBDataSetl (ΡΠΈΡ. 2 33).
Π ΠΈΡ 2.33. Π‘Π²ΠΎΠΉΡΡΠ²Π° TfrDBDataSet
Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Master Data Band Π² ΡΠ°ΠΌΠΎΠΌ ΠΎΡΡΠ΅ΡΠ΅ ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π΄Π²Π°ΠΆΠ΄Ρ Π½Π° Master Data Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ΅ ΠΎΡΡΠ΅ΡΠ° ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ (ΡΠΈΡ. 2.34).
Π ΠΈΡ 2.34. ΠΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Master Data
ΠΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ TfrMemoView, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Π² ΠΎΡΡΠ΅ΡΠ΅ (ΡΠΈΡ 2.35.)
Π ΠΈΡ 2.35. ΠΠ±ΡΠ΅ΠΊΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΎΡΡΠ΅ΡΠ° TfrMemoView, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ
ΠΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π²Π΅ΡΡΠΈ Π²ΡΡΡΠ½ΡΡ, Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Insert data field, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΡ Π½Π° ΡΠΈΡ 2 36.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΡΠ΅Ρ Π³ΠΎΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Preview ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΡΠ΅Ρ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠΎΠ²Π°ΡΠΎΠ²
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ° Π² ΡΠ°ΠΉΠ»Π΅ 'price_categories.frf):
procedure TMainForm.PrintBClick(Sender: TObject);
begin
frReport LoadFromFile('price_categories.frf');
frReport PrepareReport;
frReport.ShowPreparedReport,
end;
Π ΠΈΡ 2.36. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° TfrMemoView
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠ΅ΡΠ°ΡΡ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΡΡΠ΅Ρ (ΡΠΈΡ. 2.37).
Π ΠΈΡ 2.37. ΠΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ° ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ ΡΠΎΠ²Π°ΡΠΎΠ² Π² ΠΏΡΠ°ΠΉΡ-Π»ΠΈΡΡΠ΅
ΠΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π° master-detail
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, Ρ ΠΎΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π²ΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ°. Π‘Π½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° Π½Π°ΡΡ ΡΠΎΡΠΌΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ frDBDataSet2: TfrDBDataSet - ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ DataSource ΡΠ°Π²Π½ΡΠΌ GoodsSource. Π’Π΅ΠΏΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π²Π΅ ΠΏΠΎΠ»ΠΎΡΡ (bands): Detail Header (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ) ΠΈ Detail Data (ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅). ΠΠ° Detail Data ΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΌ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° TfrMemoView. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠΎΠ²Π°ΡΠΎΠ², Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ - ΡΠ΅Π½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ²Π°ΡΠ° (ΡΠΈΡ. 2.38):
Π ΠΈΡ 2.38. Π¨Π°Π±Π»ΠΎΠ½ ΠΎΡΡΠ΅ΡΠ° Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΌΠ°ΡΡΠ΅Ρ-Π΄Π΅ΡΠ°Π»Ρ
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Detail Data ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ frDBDataSet2. ΠΡΡΠ΅Ρ Π³ΠΎΡΠΎΠ². Π‘ΠΎΡ ΡΠ°Π½ΠΈΠΌ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ» 'price_list.frf ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΊΠ»Π°Π²ΠΈΡΠΈ "ΠΠ΅ΡΠ°ΡΡ":
procedure
TMainForm.PrintBClick(Sender: TObiect);
begin
GoodsDataSet.DetailConditions :=
GoodsDataSet.DetailConditions [dcWaitEndMasterScroll];
frReport.LoadFromFile('price.f rf');
frReport.PrepareReport ;
frReport.ShowPreparedReport;
GoodsDataSet.DetailConditions :=
GoodsDataSet DetailConditions + [dcWaitEndMasterScroll];
end,
ΠΠ°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ DetailConditions. ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ»ΡΡ dcWaitEndMasteiScioll ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π»ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ master-Π·Π°ΠΏΡΠΎΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π΅Π») ΡΠ°Π΅ Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠΊΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΡΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΎΠ²Π°ΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ GoodsDataSet Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡ, ΠΏΠΎΠΊΠ° FastReport Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· CategonesDataSet Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΌΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ master-detail Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΎΡΡΠ΅ΡΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Π΅ Π²Π½ΠΎΠ²Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡΡΠ΅Ρ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²Π΅ΡΡ Π½Π°Ρ ΠΏΡΠ°ΠΉΡ-Π»ΠΈΡΡ (ΡΠΈΡ 2.39.)
Π ΠΈΡ 2.39. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΎΡΡΠ΅ΡΠ° Π²ΠΈΠ΄Π° ΠΌΠ°ΡΡΠ΅Ρ-Π΄Π΅ΡΠ°Π»Ρ
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΡΡΡΠΈΠ²ΠΎΠΌ "Π³ΠΎΡΡΡΠΈΠ΅" (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ°ΠΌΡΠ΅ Π΄Π΅ΡΠ΅Π²ΡΠ΅) ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΡΠ°ΠΉΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ΅ Π²ΡΠ±Π΅ΡΠ΅ΠΌ TfrMemoView, Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Objectlnspector ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Highlight. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅ "Condition" ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΎΠΊΠ½Π° Π²Π²Π΅Π΄Π΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Value<0 ΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΡΠ°ΠΉΡΠ° Ρ ΡΠ΅Π½ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΅ 1000 Π±ΡΠ΄ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΡΠΊΠΎ-Π·Π΅Π»Π΅Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ (ΡΠΈΡ. 2.40).
Π ΠΈΡ 2.40. ΠΠΈΠ°Π»ΠΎΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΠΎΠ² Π² run-time
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ FastReport ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ Π² run-time, Ρ. Π΅. Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π·Π°ΡΠ°Π½Π΅Π΅, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΡΠΈΡ ΠΎΡΡΠ΅ΡΠ°Ρ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΡΠ°ΠΊ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΠ΅. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π² ΡΠ°ΠΊΠΈΡ ΠΎΡΡΠ΅ΡΠ°Ρ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ!
ΠΡΠ΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ FastReport ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΠΠΈΡΠ°Π»ΠΈΠ΅ΠΌ ΠΠ°ΡΠΌΠΈΠ½ΡΠΌ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ Π²ΡΡΠ΅.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ TfrDesigner, TfrDialogControls (ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ ΠΎΠΊΠΎΠ½ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΎΡΡΠ΅ΡΠ°), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΎΡΡΠ΅ΡΠ° (ΡΠΈΡ. 2.41).
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌ:
procedure TMainForm.DesignPClick(Sender: TObject);
begin
frReport.DesignReport;
end;
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ "ΠΠΈΠ·Π°ΠΉΠ½ ΠΎΡΡΠ΅ΡΠΎΠ²" ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΡΠ΅Ρ ΠΏΡΡΠΌΠΎ Π² run-time, ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠ΅ ΡΡΠΈ ΡΠ°Π³ΠΈ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ . Π’Π΅ΠΏΠ΅ΡΡ ΠΆΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ FastReport, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΎΡΡΠ΅ΡΠΎΠ².
Π ΠΈΡ 2.41. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° ΠΎΡΡΠ΅ΡΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ ΡΡΡΠ°Π½ΠΈΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΠ»ΠΎΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ. ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΠΎΡΡΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ - Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ (ΡΠΈΡ. 2.42).
Π ΠΈΡ 2.42. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΊ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΎΡΡΠ΅ΡΠ°
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ 2 Π½Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ°, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠ΄ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ (ΡΠΈΡ. 2.43).
Π ΠΈΡ 2.43. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π° ΠΎΡΡΠ΅ΡΠ°
ΠΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Query: TfrFIBQuery, ΡΠΊΠ°ΠΆΠ΅ΠΌ Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ Database ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ SQL:
SELECT "Categories"."Name", "Categories"."GoodsCount"
FROM "Categories"
WHERE "Categories"."GoodsCount" > 0
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΎΠ²Π°ΡΠΎΠ², ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ. ΠΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΌ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΠ΅ΡΠ°ΡΠΈ, ΠΏΡΠΈΠ²ΡΠ·Π°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (bands) ΠΊ Query ΠΊΠ°ΠΊ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ Π΄Π°Π½Π½ΡΡ (ΡΠΈΡ. 2.44).
Π ΠΈΡ 2.44. Π¨Π°Π±Π»ΠΎΠ½ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΡΠ°
Π£ΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Master Data (ΡΠΈΡ. 2.45).
Π ΠΈΡ 2.45. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΡΡ (band) ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ Π² ΡΠ°Π±Π»ΠΎΠ½ Π·Π°ΠΏΡΠΎΡΡ
Π ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ Π½Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΡΡΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ "pricel.frf". Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ. ΠΠΎΠ»ΠΎΠΆΠΈΠΌ Π½Π° ΡΠΎΡΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ OpenDialog: TopenDialog - ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ "ΠΠ΅ΡΠ°ΡΡ":
procedure TMainForm.PrintBClick(Sender: TObject);
begin
if not OpenDialog.Execute then exit;
GoodsDataSet.DetailConditions :=
GoodsDataSet.DetailConditions [dcWaitEndMasterScroll];
frReport.LoadFromFile(OpenDialog.FileName);