Componentes.Terceros.FastRe.../internal/4.2/1/Source/frxEditGroup.pas
2007-11-18 19:40:07 +00:00

188 lines
5.0 KiB
ObjectPascal

{******************************************}
{ }
{ FastReport v4.0 }
{ Group editor }
{ }
{ Copyright (c) 1998-2007 }
{ by Alexander Tzyganenko, }
{ Fast Reports Inc. }
{ }
{******************************************}
unit frxEditGroup;
interface
{$I frx.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, frxClass, frxCtrls
{$IFDEF Delphi6}
, Variants
{$ENDIF};
type
TfrxGroupEditorForm = class(TForm)
OKB: TButton;
CancelB: TButton;
BreakOnL: TGroupBox;
DataFieldCB: TComboBox;
DataSetCB: TComboBox;
ExpressionE: TfrxComboEdit;
DataFieldRB: TRadioButton;
ExpressionRB: TRadioButton;
OptionsL: TGroupBox;
KeepGroupTogetherCB: TCheckBox;
StartNewPageCB: TCheckBox;
OutlineCB: TCheckBox;
DrillCB: TCheckBox;
ResetCB: TCheckBox;
procedure ExpressionEButtonClick(Sender: TObject);
procedure DataFieldRBClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure DataSetCBChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
FGroupHeader: TfrxGroupHeader;
FReport: TfrxReport;
procedure FillDataFieldCB;
procedure FillDataSetCB;
public
property GroupHeader: TfrxGroupHeader read FGroupHeader write FGroupHeader;
end;
implementation
{$R *.DFM}
uses frxUtils, frxRes;
procedure TfrxGroupEditorForm.FormShow(Sender: TObject);
var
ds: TfrxDataSet;
fld: String;
begin
FReport := FGroupHeader.Report;
FillDataSetCB;
FReport.GetDataSetAndField(FGroupHeader.Condition, ds, fld);
if FGroupHeader.Condition = '' then
begin
DataSetCB.ItemIndex := 0;
FillDataFieldCB;
DataFieldCB.SetFocus;
end
else if (ds <> nil) and (fld <> '') then
begin
DataSetCB.Text := FReport.GetAlias(ds);
FillDataFieldCB;
DataFieldCB.Text := fld;
DataFieldCB.SetFocus;
end
else
begin
ExpressionE.Text := FGroupHeader.Condition;
ExpressionRB.Checked := True;
ExpressionE.SetFocus;
end;
KeepGroupTogetherCB.Checked := FGroupHeader.KeepTogether;
StartNewPageCB.Checked := FGroupHeader.StartNewPage;
OutlineCB.Checked := Trim(FGroupHeader.OutlineText) <> '';
DrillCB.Checked := FGroupHeader.DrillDown;
ResetCB.Checked := FGroupHeader.ResetPageNumbers;
end;
procedure TfrxGroupEditorForm.FormHide(Sender: TObject);
begin
if ModalResult = mrOk then
begin
if DataFieldRB.Checked then
FGroupHeader.Condition := DataSetCB.Text + '."' + DataFieldCB.Text + '"' else
FGroupHeader.Condition := ExpressionE.Text;
FGroupHeader.KeepTogether := KeepGroupTogetherCB.Checked;
FGroupHeader.StartNewPage := StartNewPageCB.Checked;
if OutlineCB.Checked then
FGroupHeader.OutlineText := FGroupHeader.Condition else
FGroupHeader.OutlineText := '';
FGroupHeader.DrillDown := DrillCB.Checked;
FGroupHeader.ResetPageNumbers := ResetCB.Checked;
end;
end;
procedure TfrxGroupEditorForm.FillDataSetCB;
begin
FReport.GetDataSetList(DataSetCB.Items);
end;
procedure TfrxGroupEditorForm.FillDataFieldCB;
var
ds: TfrxDataSet;
begin
ds := FReport.GetDataSet(DataSetCB.Text);
if ds <> nil then
ds.GetFieldList(DataFieldCB.Items) else
DataFieldCB.Items.Clear;
end;
procedure TfrxGroupEditorForm.ExpressionEButtonClick(Sender: TObject);
var
s: String;
begin
s := TfrxCustomDesigner(Owner).InsertExpression(ExpressionE.Text);
if s <> '' then
ExpressionE.Text := s;
end;
procedure TfrxGroupEditorForm.DataFieldRBClick(Sender: TObject);
begin
DataSetCB.Enabled := DataFieldRB.Checked;
DataFieldCB.Enabled := DataFieldRB.Checked;
ExpressionE.Enabled := ExpressionRB.Checked;
end;
procedure TfrxGroupEditorForm.DataSetCBChange(Sender: TObject);
begin
FillDataFieldCB;
end;
procedure TfrxGroupEditorForm.FormCreate(Sender: TObject);
begin
Caption := frxGet(3200);
BreakOnL.Caption := frxGet(3201);
OptionsL.Caption := frxGet(3202);
OKB.Caption := frxGet(1);
CancelB.Caption := frxGet(2);
DataFieldRB.Caption := frxGet(3203);
ExpressionRB.Caption := frxGet(3204);
KeepGroupTogetherCB.Caption := frxGet(3205);
StartNewPageCB.Caption := frxGet(3206);
OutlineCB.Caption := frxGet(3207);
DrillCB.Caption := frxResources.Get('bvDrillDown');
ResetCB.Caption := frxResources.Get('bvResetPageNo');
if UseRightToLeftAlignment then
FlipChildren(True);
end;
procedure TfrxGroupEditorForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F1 then
frxResources.Help(Self);
end;
end.
//862fd5d6aa1a637203d9b08a3c0bcfb0