LazReport, Child bands impleementation by Gabor Boros with changes, issue #26996

git-svn-id: trunk@46838 -
This commit is contained in:
jesus 2014-11-13 16:59:18 +00:00
parent 3497257130
commit 735b4ac629
23 changed files with 512 additions and 12 deletions

6
.gitattributes vendored
View File

@ -2224,6 +2224,12 @@ components/lazreport/images/package_images.bat svneol=native#text/x-msdos-progra
components/lazreport/license-lazreport.txt svneol=native#text/plain
components/lazreport/license-rus.txt svneol=native#text/plain
components/lazreport/license.txt svneol=native#text/plain
components/lazreport/samples/ChildBand_Example/ChildBand_Example.ico -text
components/lazreport/samples/ChildBand_Example/ChildBand_Example.lpi svneol=native#text/plain
components/lazreport/samples/ChildBand_Example/ChildBand_Example.lpr svneol=native#text/pascal
components/lazreport/samples/ChildBand_Example/ChildBand_Example.res -text
components/lazreport/samples/ChildBand_Example/unit1.lfm svneol=native#text/plain
components/lazreport/samples/ChildBand_Example/unit1.pas svneol=native#text/pascal
components/lazreport/samples/Demo_CrossTab/demo_cross.lrf svneol=LF#text/xml eol=lf
components/lazreport/samples/Demo_CrossTab/project1.ico -text
components/lazreport/samples/Demo_CrossTab/project1.lpi svneol=native#text/plain

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="ChildBand_Example"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
</General>
<i18n>
<EnableI18N LFM="False"/>
</i18n>
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
<RunParams>
<local>
<FormatVersion Value="1"/>
</local>
</RunParams>
<RequiredPackages Count="3">
<Item1>
<PackageName Value="FCL"/>
</Item1>
<Item2>
<PackageName Value="lazreport"/>
</Item2>
<Item3>
<PackageName Value="LCL"/>
</Item3>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="ChildBand_Example.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="ChildBand_Example"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,21 @@
program ChildBand_Example;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Unit1
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,73 @@
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LR_Class, LR_DBSet, Forms, Controls, Graphics,
Dialogs, StdCtrls, BufDataset, db;
type
{ TForm1 }
TForm1 = class(TForm)
BufDataset1: TBufDataset;
Button1: TButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
frDBDataSet1: TfrDBDataSet;
frReport1: TfrReport;
procedure Button1Click(Sender: TObject);
procedure CheckBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure frReport1BeginBand(Band: TfrBand);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
i:Integer;
begin
BufDataset1.CreateDataset;
for i:=1 to 10 do
begin
BufDataset1.AppendRecord([i]);
end;
end;
procedure TForm1.frReport1BeginBand(Band: TfrBand);
begin
if CheckBox1.Checked and (Band.Name='Child1') then
begin
Band.Visible:=((BufDataset1.FieldByName('FIELD1').Value mod 2)=0);
Band.PrintChildIfNotVisible:=CheckBox2.Checked;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
frReport1.ShowReport;
end;
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
CheckBox2.Visible:=CheckBox1.Checked;
end;
end.

View File

@ -87,6 +87,16 @@ msgid "Cross footer"
msgstr "Křížení patičky"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Není"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Není"
@ -2232,6 +2242,10 @@ msgstr "Měřítko"
msgid "&Whole page"
msgstr "Celá stránka"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -96,6 +96,16 @@ msgid "Cross footer"
msgstr "Kreuz-Footer"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Keiner"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Keiner"
@ -2224,6 +2234,10 @@ msgstr "Maßstab"
msgid "&Whole page"
msgstr "&Ganze &Seite"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#| msgid "Printer selected is not valid"
msgid "Selected printer is not valid"

View File

@ -89,6 +89,16 @@ msgid "Cross footer"
msgstr "Pie de datos cruzados"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Ninguno"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Ninguno"
@ -2214,6 +2224,10 @@ msgstr "Escala"
msgid "&Whole page"
msgstr "&Toda la página"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#| msgid "Printer selected is not valid"
msgid "Selected printer is not valid"

View File

@ -95,6 +95,16 @@ msgid "Cross footer"
msgstr "Pied de page tableau"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Aucun"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Aucun"
@ -2245,6 +2255,10 @@ msgstr "Échelle"
msgid "&Whole page"
msgstr "&Page entière"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -88,6 +88,16 @@ msgid "Cross footer"
msgstr ""
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Nincs"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Nincs"
@ -2198,6 +2208,10 @@ msgstr "Átméretezés"
msgid "&Whole page"
msgstr "Teljes oldal"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
msgid "Selected printer is not valid"
msgstr "A kiválasztott nyomtató érvénytelen"

View File

@ -86,6 +86,16 @@ msgid "Cross footer"
msgstr "Footer silang"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Tidak ada"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Tidak ada"
@ -2234,6 +2244,10 @@ msgstr "Skala"
msgid "&Whole page"
msgstr "&Seluruh halaman"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -90,6 +90,16 @@ msgid "Cross footer"
msgstr "Pedice incrodiato"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Nessuno"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Nessuno"
@ -2196,6 +2206,10 @@ msgstr "Scala"
msgid "&Whole page"
msgstr "&Intera pagina"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
msgid "Selected printer is not valid"
msgstr "La stampante selezionata non è valida."
@ -2544,3 +2558,4 @@ msgstr "a capo parole"
#: lr_const.syes
msgid "Yes"
msgstr "&Sì"

View File

@ -88,6 +88,16 @@ msgid "Cross footer"
msgstr "Kryžmės poraštės"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Joks"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Joks"
@ -2222,6 +2232,10 @@ msgstr "Mastelis"
msgid "&Whole page"
msgstr "&Visas lapas"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -89,6 +89,16 @@ msgid "Cross footer"
msgstr "Stopka krzyżowa"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Żaden"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Żaden"
@ -2237,6 +2247,10 @@ msgstr "Skaluj"
msgid "&Whole page"
msgstr "&Cała strona"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -81,6 +81,12 @@ msgid "Cross footer"
msgstr ""
#: lr_const.sband22
msgctxt "lr_const.sband22"
msgid "Child"
msgstr ""
#: lr_const.sband23
msgctxt "lr_const.sband23"
msgid "None"
msgstr ""
@ -2187,6 +2193,10 @@ msgstr ""
msgid "&Whole page"
msgstr ""
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
msgid "Selected printer is not valid"
msgstr ""

View File

@ -87,6 +87,16 @@ msgid "Cross footer"
msgstr "Rodapé Ref.Cruz."
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Nenhum"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Nenhum"
@ -2221,6 +2231,10 @@ msgstr "Escala"
msgid "&Whole page"
msgstr "Página &inteira"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -86,6 +86,16 @@ msgid "Cross footer"
msgstr "Cross-примечание"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Нет"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Нет"
@ -2218,6 +2228,10 @@ msgstr "Масштаб"
msgid "&Whole page"
msgstr "&Вся страница"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#| msgid "Printer selected is not valid"
msgid "Selected printer is not valid"

View File

@ -89,6 +89,16 @@ msgid "Cross footer"
msgstr "Перехресний нижній колонтитул"
#: lr_const.sband22
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband22"
msgid "Child"
msgstr "Немає"
#: lr_const.sband23
#, fuzzy
#| msgid "None"
msgctxt "lr_const.sband23"
msgid "None"
msgstr "Немає"
@ -2223,6 +2233,10 @@ msgstr "Масштаб"
msgid "&Whole page"
msgstr "Сторінка &повністю"
#: lr_const.sprintchildifnotvisible
msgid "Print child if not visible"
msgstr ""
#: lr_const.sprintererror
#, fuzzy
#| msgid "Printer selected is not valid"

View File

@ -71,7 +71,7 @@ var
First: Boolean;
begin
First := True;
for bt := btReportTitle to btCrossFooter do
for bt := btReportTitle to btChild do
begin
b := TRadioButton.Create(GB1);
b.Parent := GB1;
@ -80,7 +80,7 @@ begin
b.Caption := frBandNames[Bt];
b.OnClick := @bClick;
b.Enabled := (bt in [btMasterHeader..btSubDetailFooter,
btGroupHeader, btGroupFooter]) or not frCheckBand(bt);
btGroupHeader, btGroupFooter, btChild]) or not frCheckBand(bt);
if b.Enabled and First then
begin
b.Checked := True;

View File

@ -37,6 +37,7 @@ const
flBandOnFirstPage = $10;
flBandOnLastPage = $20;
flBandRepeatHeader = $40;
flBandPrintChildIfNotVisible = $80;
flPictCenter = 2;
flPictRatio = 4;
@ -67,7 +68,7 @@ type
btSubDetailHeader, btSubDetailData, btSubDetailFooter,
btOverlay, btColumnHeader, btColumnFooter,
btGroupHeader, btGroupFooter,
btCrossHeader, btCrossData, btCrossFooter, btNone);
btCrossHeader, btCrossData, btCrossFooter, btChild, btNone);
TfrBandTypes = set of TfrBandType;
TfrDataSetPosition = (psLocal, psGlobal);
TfrValueType = (vtNotAssigned, vtDBField, vtOther, vtFRVar);
@ -535,13 +536,15 @@ type
fDataSetStr : String;
fBandType : TfrBandType;
fCondition : String;
fChild : String;
procedure P1Click(Sender: TObject);
procedure P2Click(Sender: TObject);
procedure P3Click(Sender: TObject);
procedure P4Click(Sender: TObject);
procedure P5Click(Sender: TObject);
procedure P6Click(Sender: TObject);
procedure P7Click(Sender: TObject);
function GetTitleRect: TRect;
function TitleSize: Integer;
procedure CalcTitleSize;
@ -569,6 +572,7 @@ type
published
property DataSet: String read fDataSetStr write fDataSetStr;
property GroupCondition: String read fCondition write fCondition;
property Child: String read fChild write fChild;
property BandType: TfrBandType read fBandType write fBandType;
@ -693,6 +697,7 @@ type
Positions: Array[TfrDatasetPosition] of Integer;
LastGroupValue: Variant;
HeaderBand, FooterBand, LastBand: TfrBand;
ChildBand: TfrBand;
Values: TStringList;
Count: Integer;
DisableInit: Boolean;
@ -725,6 +730,7 @@ type
Typ: TfrBandType;
PrintIfSubsetEmpty, NewPageAfter, Stretched, PageBreak: Boolean;
PrintChildIfNotVisible: Boolean;
Objects: TFpList;
DataSet: TfrDataSet;
IsVirtualDS: Boolean;
@ -1416,11 +1422,12 @@ function FindObjectProps(AObjStr:string; out frObj:TfrObject; out PropName:strin
const
lrTemplatePath = 'LazReportTemplate/';
frCurrentVersion = 27;
frCurrentVersion = 28;
// version 2.5: lazreport: added to binary stream ParentBandType variable
// on TfrView, used to extend export facilities
// version 2.6: lazreport: added to binary stream Tag property on TfrView
// version 2.7: lazreport: added to binary stream FOnClick, FOnMouseEnter, FOnMouseLeave, FCursor property on TfrMemoView
// version 2.8. lazreport: added support for child bands
frSpecCount = 9;
frSpecFuncs: Array[0..frSpecCount - 1] of String = ('PAGE#', '',
@ -1740,7 +1747,8 @@ begin
frBandNames[btCrossHeader] := sBand19;
frBandNames[btCrossData] := sBand20;
frBandNames[btCrossFooter] := sBand21;
frBandNames[btNone] := sBand22;
frBandNames[btChild] := sBand22;
frBandNames[btNone] := sBand23;
frSpecArr[0] := sVar1;
frSpecArr[1] := sVar2;
@ -4844,6 +4852,7 @@ begin
BandType := TFrBandView(Source).BandType;
DataSet := TFrBandView(Source).DataSet;
GroupCondition:=TFrBandView(Source).GroupCondition;
Child := TFrBandView(Source).Child;
end;
end;
@ -4854,8 +4863,12 @@ begin
With Stream do
if frVersion>23 then begin
Read(fBandType,SizeOf(BandType));
if (frVersion<28) and (fBandType=btChild) then
fBandType := btNone; // btNone and btChild were swapped in version 29
fCondition :=ReadString(Stream);
fDataSetStr:=ReadString(Stream);
if frVersion>=28 then
fChild :=ReadString(Stream);
end else
begin
if StreamMode=smDesigning then begin
@ -4872,6 +4885,7 @@ begin
RestoreProperty('BandType',XML.GetValue(Path+'BandType/Value','')); // todo chk
FCondition := XML.GetValue(Path+'Condition/Value', ''); // todo chk
FDatasetStr := XML.GetValue(Path+'DatasetStr/Value', ''); // todo chk
FChild := XML.GetValue(Path+'Child/Value', '');
end;
procedure TfrBandView.SaveToStream(Stream: TStream);
@ -4883,6 +4897,7 @@ begin
Write(fBandType,SizeOf(fBandType));
frWriteString(Stream, fCondition);
frWriteString(Stream, fDataSetStr);
frWriteString(Stream, fChild);
end;
end;
@ -4892,6 +4907,7 @@ begin
XML.SetValue(Path+'BandType/Value', GetSaveProperty('BandType')); //Ord(FBandType)); // todo: use symbolic values
XML.SetValue(Path+'Condition/Value', FCondition);
XML.SetValue(Path+'DatasetStr/Value', FDatasetStr);
XML.SetValue(Path+'Child/Value', FChild);
end;
procedure TfrBandView.Draw(aCanvas: TCanvas);
@ -5033,7 +5049,7 @@ var
m: TMenuItem;
begin
if BandType in [btReportTitle, btReportSummary, btPageHeader, btCrossHeader,
btMasterHeader..btSubDetailFooter, btGroupHeader, btGroupFooter] then
btMasterHeader..btSubDetailFooter, btGroupHeader, btGroupFooter, btChild] then
inherited DefinePopupMenu(Popup);
if BandType in [btReportTitle, btReportSummary, btMasterData, btDetailData,
@ -5093,6 +5109,15 @@ begin
m.Checked := (Flags and flBandRepeatHeader) <> 0;
Popup.Items.Add(m);
end;
if BandType <> btPageFooter then
begin
m := TMenuItem.Create(Popup);
m.Caption := sPrintChildIfNotVisible;
m.OnClick := @P7Click;
m.Checked := (Flags and flBandPrintChildIfNotVisible) <> 0;
Popup.Items.Add(m);
end;
end;
procedure TfrBandView.P1Click(Sender: TObject);
@ -5181,6 +5206,16 @@ begin
end;
end;
procedure TfrBandView.P7Click(Sender: TObject);
begin
frDesigner.BeforeChange;
with Sender as TMenuItem do
begin
Checked := not Checked;
Flags := (Flags and not flBandPrintChildIfNotVisible) + Word(Checked) * flBandPrintChildIfNotVisible;
end;
end;
function TfrBandView.GetTitleRect: TRect;
begin
if BandType in [btCrossHeader..btCrossFooter] then
@ -6921,6 +6956,8 @@ begin
else
begin
DoDraw;
if (ChildBand <> nil) then
ChildBand.Draw;
if not (Typ in [btMasterData, btDetailData, btSubDetailData, btGroupHeader]) and
NewPageAfter then
Parent.NewPage;
@ -6931,9 +6968,13 @@ begin
// if band is not visible, just performing aggregate calculations
// relative to it
else
if Typ in [btMasterData, btDetailData, btSubDetailData] then
Parent.DoAggregate([btPageFooter, btMasterFooter, btDetailFooter,
btSubDetailFooter, btGroupFooter, btReportSummary]);
begin
if (ChildBand <> nil) and PrintChildIfNotVisible then
ChildBand.Draw;
if Typ in [btMasterData, btDetailData, btSubDetailData] then
Parent.DoAggregate([btPageFooter, btMasterFooter, btDetailFooter,
btSubDetailFooter, btGroupFooter, btReportSummary]);
end;
// check if multiple pagefooters (in cross-tab report) - resets last of them
if not DisableInit then
@ -7335,7 +7376,8 @@ begin
end;
end;
for b := btReportTitle to btGroupFooter do // fill other bands
for b := btReportTitle to btChild do // fill other bands
if not (b in [btCrossHeader..btCrossFooter]) then
begin
FirstBand := True;
Bnd := Bands[b];
@ -7370,6 +7412,7 @@ begin
InitDataSet(TfrBandView(Bt).DataSet);
Stretched := (Flags and flStretched) <> 0;
PrintIfSubsetEmpty := (Flags and flBandPrintIfSubsetEmpty) <> 0;
PrintChildIfNotVisible := (Flags and flBandPrintChildIfNotVisible) <> 0;
if Skip then
begin
NewPageAfter := False;
@ -7527,6 +7570,26 @@ begin
end;
end;
for b := btReportTitle to btChild do
begin
Bnd := Bands[b];
while Bnd <> nil do
begin
if Bnd.View <> nil then
begin
s := TfrBandView(Bnd.View).Child;
for i := 0 to RTObjects.Count - 1 do
begin
bt :=TfrView(RTObjects[i]);
if (bt.Typ = gtBand) and (TfrBandView(bt).BandType=btChild) and (bt.Name=s) then
Bnd.ChildBand:=bt.Parent;
end;
end;
Bnd := Bnd.Next;
end;
end;
if ColCount = 0 then ColCount := 1;
ColWidth := (RightMargin - LeftMargin) div ColCount;
end;

View File

@ -186,7 +186,8 @@ resourcestring
sBand19 = 'Cross header';
sBand20 = 'Cross data';
sBand21 = 'Cross footer';
sBand22 = 'None';
sBand22 = 'Child';
sBand23 = 'None';
sVar1 = 'Page#';
sVar2 = 'Expression';
@ -223,6 +224,7 @@ resourcestring
sNotAssigned = '[None]';
sFormNewPage = 'Force new page';
sPrintIfSubsetEmpty = 'Print if detail empty';
sPrintChildIfNotVisible = 'Print child if not visible';
sBreaked = 'Breaked';
sPictureCenter = 'Center picture';
sKeepAspectRatio = 'Keep aspect ratio';