Componentes.Terceros.DevExp.../internal/x.44/1/ExpressQuantumGrid 3/Sources/dxWzSmGr.pas
2009-06-29 12:09:02 +00:00

433 lines
14 KiB
ObjectPascal

{*******************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressQuantumGrid SummaryGroups Wizard }
{ }
{ Copyright (c) 1998-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSGRID AND ALL ACCOMPANYING VCL }
{ CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
unit dxWzSmGr;
interface
{$I dxTLVer.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, dxWizard, dxCntner, dxTL, dxTLClms, DB, dxDBCtrl;
type
TFSmGrWizard = class(TForm)
pnStyle: TPanel;
pnButtons: TPanel;
BBack: TButton;
BNext: TButton;
BCancel: TButton;
Bevel: TBevel;
Panel34: TPanel;
rbGroupNode: TRadioButton;
rbRowFooter: TRadioButton;
Image1: TImage;
Image2: TImage;
Bevel2: TBevel;
Bevel3: TBevel;
pnItems1: TPanel;
sbMoveLeft: TSpeedButton;
sbMoveRight: TSpeedButton;
cbAllFields: TCheckBox;
pnName: TPanel;
Panel1: TPanel;
ESummaryGroupName: TEdit;
Label5: TLabel;
cbDefault: TCheckBox;
imHint1: TImage;
Memo1: TMemo;
GroupBox1: TGroupBox;
TL_Fields1: TdxTreeList;
GroupBox2: TGroupBox;
TL_SummaryItems1: TdxTreeList;
colSummaryField: TdxTreeListPickColumn;
colSummaryFormat: TdxTreeListPickColumn;
colSummaryType: TdxTreeListImageColumn;
pnItems2: TPanel;
sbMoveLeft2: TSpeedButton;
sbMoveRight2: TSpeedButton;
GroupBox3: TGroupBox;
TL_Columns: TdxTreeList;
GroupBox4: TGroupBox;
TL_SummaryItems2: TdxTreeList;
colFieldName2: TdxTreeListPickColumn;
colSummaryFormat2: TdxTreeListPickColumn;
colSummaryType2: TdxTreeListImageColumn;
colColumnName2: TdxTreeListPickColumn;
colFieldName: TdxTreeListColumn;
dxTreeListColumn2: TdxTreeListColumn;
procedure FormCreate(Sender: TObject);
procedure BBackClick(Sender: TObject);
procedure BNextClick(Sender: TObject);
procedure cbAllFieldsClick(Sender: TObject);
procedure TL_Fields1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TL_Fields1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure sbMoveRightClick(Sender: TObject);
procedure sbMoveLeftClick(Sender: TObject);
procedure TL_SummaryItems1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure TL_SummaryItems1DragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure sbMoveRight2Click(Sender: TObject);
procedure TL_ColumnsDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TL_ColumnsDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure sbMoveLeft2Click(Sender: TObject);
procedure TL_SummaryItems2DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure TL_SummaryItems2DragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure TL_Fields1DblClick(Sender: TObject);
procedure TL_ColumnsDblClick(Sender: TObject);
private
Panels: array [0..PanelCount - 1] of TPanel;
CurrentPanel: TPanel;
procedure ShowPanel(Panel: TPanel);
public
Wizard: TFGrWizard;
end;
function ShowSummaryGroupWizard(AGrWizard: TFGrWizard): Boolean;
implementation
{$R *.DFM}
uses
dxDBGrid;
const
PanelCount = 4;
function ShowSummaryGroupWizard(AGrWizard: TFGrWizard): Boolean;
var
AForm: TFSmGrWizard;
AGroup: TdxDBGridSummaryGroup;
AItem: TdxDBGridSummaryItem;
I: Integer;
begin
Result := False;
AForm := TFSmGrWizard.Create(AGrWizard);
with AForm do
begin
Wizard := AGrWizard;
// Height := 270;
ClientHeight := pnStyle.Height + Bevel.Height + pnButtons.Height + 6*2;
Left := AGrWizard.Left;
Top := AGrWizard.Top + AGrWizard.Height - Height;
// Width := AGrWizard.Width;
Width := pnStyle.Width + 2*6;
if ShowModal <> mrCancel then
begin
// Add Summary Group
AGroup := Wizard.DBGrid.SummaryGroups.Add;
if not rbRowFooter.Checked then // standard
begin
with TL_SummaryItems1 do
begin
for I := 0 to Count - 1 do
begin
AItem := AGroup.SummaryItems.Add;
AItem.SummaryField := Items[I].Values[colSummaryField.Index];
AItem.SummaryFormat := Items[I].Values[colSummaryFormat.Index];
if (Items[I].Values[colSummaryType.Index] <> '') and
(Items[I].Values[colSummaryType.Index] <> '0') then
AItem.SummaryType := TdxSummaryType(StrToInt(Items[I].Values[colSummaryType.Index]));
end;
end;
end
else
begin
with TL_SummaryItems2 do
begin
for I := 0 to Count - 1 do
begin
AItem := AGroup.SummaryItems.Add;
AItem.ColumnName := TdxDBGridColumn(Items[I].Data).Name;
AItem.SummaryField := Items[I].Values[colFieldName2.Index];
AItem.SummaryFormat := Items[I].Values[colSummaryFormat2.Index];
if (Items[I].Values[colSummaryType2.Index] <> '') and
(Items[I].Values[colSummaryType2.Index] <> '0') then
AItem.SummaryType := TdxSummaryType(StrToInt(Items[I].Values[colSummaryType2.Index]));
end;
end;
end;
AGroup.DefaultGroup := cbDefault.Checked;
try
AGroup.Name := ESummaryGroupName.Text;
except
end;
Result := True;
end;
Free;
end;
end;
procedure TFSmGrWizard.FormCreate(Sender: TObject);
var
I: Integer;
begin
Caption := 'SummaryGroup Wizard';
// Load Panels
Panels[0] := pnStyle;
Panels[1] := pnItems1;
Panels[2] := pnItems2;
Panels[3] := pnName;
for I := 0 to PanelCount - 1 do
begin
Panels[I].Left := 6;
Panels[I].Top := 6;
end;
// Start
ShowPanel(pnStyle);
end;
procedure TFSmGrWizard.ShowPanel(Panel: TPanel);
var
I: Integer;
Node: TdxTreeListNode;
begin
case Panel.Tag of
0: begin {Style}
end;
1: begin {Items1}
// load fields
cbAllFieldsClick(nil);
end;
2: begin {Item2}
with TL_Columns do
begin
colColumnName2.Items.Clear;
ClearNodes;
for I := 0 to Wizard.DBGrid.ColumnCount - 1 do
begin
Node := Add;
Node.Data := Wizard.DBGrid.Columns[I];
Node.Values[0] := GetColumnCaption(Wizard.DBGrid.Columns[I]);
colColumnName2.Items.Add(Node.Values[0]);
end;
end;
with colFieldName2.Items do
begin
Clear;
if Assigned(Wizard.DBGrid.DataLink.DataSet) then
for I := 0 to Wizard.DBGrid.DataLink.DataSet.FieldCount - 1 do
Add(Wizard.DBGrid.DataLink.DataSet.Fields[I].FieldName);
end;
end;
3: begin {Finish}
if ESummaryGroupName.Text = '' then
ESummaryGroupName.Text := Wizard.DBGrid.Name + 'SummaryGroup' + IntToStr(Wizard.DBGrid.SummaryGroups.Count + 1);
end;
end;
CurrentPanel := Panel;
// SetButtons;
BBack.Enabled := CurrentPanel.Tag <> 0;
if CurrentPanel.Tag = (PanelCount - 1) then
begin
BNext.Caption := '&Finish';
BNext.ModalResult := mrOK;
end
else
begin
BNext.Caption := '&Next >';
BNext.ModalResult := mrNone;
end;
BNext.Default := CurrentPanel.Tag in [0, 3];
Panel.Visible := True;
// hide other panels
for I := 0 to PanelCount - 1 do
begin
if Panels[I] <> Panel then
Panels[I].Visible := False;
end;
end;
// Back
procedure TFSmGrWizard.BBackClick(Sender: TObject);
begin
if CurrentPanel.Tag = 3 then
begin
if rbRowFooter.Checked then
ShowPanel(Panels[2])
else ShowPanel(Panels[1]);
end
else
if CurrentPanel.Tag = 2 then
ShowPanel(Panels[0])
else ShowPanel(Panels[CurrentPanel.Tag - 1]);
end;
procedure TFSmGrWizard.BNextClick(Sender: TObject);
begin
if CurrentPanel.Tag < PanelCount - 1 then
begin
if CurrentPanel.Tag = 1 then
ShowPanel(Panels[3])
else
if (CurrentPanel.Tag = 0) and rbRowFooter.Checked then
ShowPanel(Panels[2])
else ShowPanel(Panels[CurrentPanel.Tag + 1]);
end;
end;
//Events
procedure TFSmGrWizard.cbAllFieldsClick(Sender: TObject);
var
I: Integer;
begin
with TL_Fields1 do
begin
ClearNodes;
if Assigned(Wizard.DBGrid.DataLink.DataSet) then
for I := 0 to Wizard.DBGrid.DataLink.DataSet.FieldCount - 1 do
if cbAllFields.Checked or (Wizard.DBGrid.DataLink.DataSet.Fields[I] is TNumericField) or
(Wizard.DBGrid.DataLink.DataSet.Fields[I].DataType in [ftDate, ftTime, ftDateTime]) then
Add.Values[0] :=(Wizard.DBGrid.DataLink.DataSet.Fields[I].FieldName);
end;
end;
procedure TFSmGrWizard.sbMoveRightClick(Sender: TObject);
begin
TL_SummaryItems1.DeleteSelection;
end;
procedure TFSmGrWizard.TL_Fields1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source = TL_SummaryItems1;
end;
procedure TFSmGrWizard.TL_Fields1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Source = TL_SummaryItems1 then
sbMoveRightClick(nil);
end;
procedure TFSmGrWizard.sbMoveLeftClick(Sender: TObject);
var
Node: TdxTreeListNode;
I: Integer;
begin
with TL_Fields1 do
begin
for I := 0 to SelectedCount - 1 do
begin
Node := TL_SummaryItems1.Add;
Node.Values[colSummaryField.Index] := SelectedNodes[I].Values[0];
Node.Values[colSummaryType.Index] := '1';
end;
ClearSelection;
end;
end;
procedure TFSmGrWizard.TL_SummaryItems1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source = TL_Fields1;
end;
procedure TFSmGrWizard.TL_SummaryItems1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Source = TL_Fields1 then
sbMoveLeftClick(nil);
end;
procedure TFSmGrWizard.sbMoveRight2Click(Sender: TObject);
begin
TL_SummaryItems2.DeleteSelection;
end;
procedure TFSmGrWizard.TL_ColumnsDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source = TL_SummaryItems2;
end;
procedure TFSmGrWizard.TL_ColumnsDragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Source = TL_SummaryItems2 then
sbMoveRight2Click(nil);
end;
procedure TFSmGrWizard.sbMoveLeft2Click(Sender: TObject);
var
Node: TdxTreeListNode;
I: Integer;
begin
with TL_Columns do
begin
for I := 0 to SelectedCount - 1 do
begin
Node := TL_SummaryItems2.Add;
Node.Values[colColumnName2.Index] := SelectedNodes[I].Values[0];
Node.Data := SelectedNodes[I].Data;
Node.Values[colSummaryType2.Index] := '1';
end;
ClearSelection;
end;
end;
procedure TFSmGrWizard.TL_SummaryItems2DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source = TL_Columns;
end;
procedure TFSmGrWizard.TL_SummaryItems2DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Source = TL_Columns then
sbMoveLeft2Click(nil);
end;
procedure TFSmGrWizard.TL_Fields1DblClick(Sender: TObject);
begin
sbMoveLeftClick(nil);
end;
procedure TFSmGrWizard.TL_ColumnsDblClick(Sender: TObject);
begin
sbMoveLeft2Click(nil);
end;
end.