git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@29 05c56307-c608-d34a-929d-697000501d7a
396 lines
13 KiB
ObjectPascal
396 lines
13 KiB
ObjectPascal
unit main;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ColorGrd, StdCtrls, dxMasterView, ExtCtrls, Buttons, Db, DBTables;
|
|
|
|
type
|
|
TfmMain = class(TForm)
|
|
pnBottom: TPanel;
|
|
MasterView: TdxMasterView;
|
|
ColorDialog: TColorDialog;
|
|
FontDialog: TFontDialog;
|
|
tbCustomer: TTable;
|
|
dsCustomer: TDataSource;
|
|
tbOrders: TTable;
|
|
dsOrders: TDataSource;
|
|
Level1: TdxMasterViewLevel;
|
|
CustNo: TdxMasterViewColumn;
|
|
Company: TdxMasterViewColumn;
|
|
Addr1: TdxMasterViewColumn;
|
|
Addr2: TdxMasterViewColumn;
|
|
City: TdxMasterViewColumn;
|
|
State: TdxMasterViewColumn;
|
|
Zip: TdxMasterViewColumn;
|
|
Country: TdxMasterViewColumn;
|
|
Phone: TdxMasterViewColumn;
|
|
FAX: TdxMasterViewColumn;
|
|
TaxRate: TdxMasterViewColumn;
|
|
Contact: TdxMasterViewColumn;
|
|
LastInvoiceDate: TdxMasterViewColumn;
|
|
Level2: TdxMasterViewLevel;
|
|
OrderNo: TdxMasterViewColumn;
|
|
CustNoL2: TdxMasterViewColumn;
|
|
SaleDate: TdxMasterViewColumn;
|
|
ShipDate: TdxMasterViewColumn;
|
|
EmpNo: TdxMasterViewColumn;
|
|
ShipToContact: TdxMasterViewColumn;
|
|
ShipToAddr1: TdxMasterViewColumn;
|
|
ShipToAddr2: TdxMasterViewColumn;
|
|
ShipToCity: TdxMasterViewColumn;
|
|
ShipToState: TdxMasterViewColumn;
|
|
ShipToZip: TdxMasterViewColumn;
|
|
ShipToCountry: TdxMasterViewColumn;
|
|
ShipToPhone: TdxMasterViewColumn;
|
|
ShipVIA: TdxMasterViewColumn;
|
|
PO: TdxMasterViewColumn;
|
|
Terms: TdxMasterViewColumn;
|
|
PaymentMethod: TdxMasterViewColumn;
|
|
ItemsTotal: TdxMasterViewColumn;
|
|
TaxRateL2: TdxMasterViewColumn;
|
|
Freight: TdxMasterViewColumn;
|
|
AmountPaid: TdxMasterViewColumn;
|
|
Style1: TdxMasterViewStyle;
|
|
Style2: TdxMasterViewStyle;
|
|
pnLeft: TPanel;
|
|
GroupBox1: TGroupBox;
|
|
btnNew: TButton;
|
|
btnDelete: TButton;
|
|
btnColor: TButton;
|
|
plColor: TPanel;
|
|
plAnotherColor: TPanel;
|
|
btnAnotherColor: TButton;
|
|
btnFont: TButton;
|
|
cmbLevels: TComboBox;
|
|
cmbLevelElements: TComboBox;
|
|
cmbLevelStyle: TComboBox;
|
|
cmbColumns: TComboBox;
|
|
cmbColumnElements: TComboBox;
|
|
cmbColumnStyle: TComboBox;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
btnCustomize: TButton;
|
|
cmbStyles: TListBox;
|
|
procedure btnColorClick(Sender: TObject);
|
|
procedure btnFontClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure cmbStylesChange(Sender: TObject);
|
|
procedure btnAnotherColorClick(Sender: TObject);
|
|
procedure btnNewClick(Sender: TObject);
|
|
procedure cmbLevelsChange(Sender: TObject);
|
|
procedure cmbColumnsChange(Sender: TObject);
|
|
procedure cmbLevelElementsChange(Sender: TObject);
|
|
procedure cmbColumnElementsChange(Sender: TObject);
|
|
procedure cmbLevelStyleChange(Sender: TObject);
|
|
procedure cmbColumnStyleChange(Sender: TObject);
|
|
procedure btnCustomizeClick(Sender: TObject);
|
|
procedure btnDeleteClick(Sender: TObject);
|
|
private
|
|
procedure StyleControlsUpdate;
|
|
procedure FillColumnsCombos(Level: TdxMasterViewLevel);
|
|
procedure AssignStyles;
|
|
public
|
|
CurrentStyle: TdxMasterViewStyle;
|
|
CurrentLevel: TdxMasterViewLevel;
|
|
CurrentColumn: TdxMasterViewColumn;
|
|
end;
|
|
|
|
var
|
|
fmMain: TfmMain;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
//set color for style
|
|
procedure TfmMain.btnColorClick(Sender: TObject);
|
|
begin
|
|
if CurrentStyle <> nil then
|
|
begin
|
|
ColorDialog.Color := CurrentStyle.Color;
|
|
if ColorDialog.Execute then
|
|
begin
|
|
CurrentStyle.Color := ColorDialog.Color;
|
|
StyleControlsUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
//set font for style
|
|
procedure TfmMain.btnFontClick(Sender: TObject);
|
|
begin
|
|
if CurrentStyle <> nil then
|
|
begin
|
|
FontDialog.Font := CurrentStyle.Font;
|
|
if FontDialog.Execute then
|
|
begin
|
|
CurrentStyle.Font := FontDialog.Font;
|
|
StyleControlsUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMain.FormCreate(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
S: TdxMasterViewStyle;
|
|
begin
|
|
//fill the cmbStyle
|
|
for i := 0 to MasterView.StyleCount - 1 do
|
|
begin
|
|
S := MasterView.Styles[i];
|
|
cmbStyles.Items.addObject(S.Name, S);
|
|
end;
|
|
cmbStyles.ItemIndex := 0;
|
|
cmbStylesChange(nil);
|
|
//assign cmbStyles with
|
|
AssignStyles;
|
|
|
|
//Set the current level
|
|
cmbLevels.ItemIndex := 0;
|
|
cmbLevelsChange(cmbLevels);
|
|
|
|
end;
|
|
|
|
procedure TfmMain.cmbStylesChange(Sender: TObject);
|
|
begin
|
|
if cmbStyles.Items.Count > 0 then
|
|
CurrentStyle := TdxMasterviewStyle(cmbStyles.Items.Objects[cmbStyles.ItemIndex])
|
|
else
|
|
CurrentStyle := nil;
|
|
StyleControlsUpdate;
|
|
end;
|
|
|
|
//update visual controls tied to the current style
|
|
procedure TfmMain.StyleControlsUpdate;
|
|
begin
|
|
plColor.Color := clBtnFace;
|
|
plAnotherColor.Color := clBtnFace;
|
|
plColor.Caption := '';
|
|
plAnotherColor.Caption := '';
|
|
|
|
if CurrentStyle <> nil then
|
|
begin
|
|
//set another color, if it was assigned
|
|
if svAnotherColor in CurrentStyle.AssignedValues then
|
|
plAnotherColor.Color := CurrentStyle.AnotherColor;
|
|
//set a color, if it was assigned
|
|
if svColor in CurrentStyle.AssignedValues then
|
|
begin
|
|
plColor.Color := CurrentStyle.Color;
|
|
end;
|
|
//set a font, if it was assigned
|
|
if svFont in CurrentStyle.AssignedValues then
|
|
begin
|
|
plColor.Font := CurrentStyle.Font;
|
|
plColor.Caption := 'Font';
|
|
plAnotherColor.Font := CurrentStyle.Font;
|
|
plAnotherColor.Caption := 'Font';
|
|
end;
|
|
end
|
|
else
|
|
cmbStyles.Items.Clear;
|
|
end;
|
|
|
|
procedure TfmMain.btnAnotherColorClick(Sender: TObject);
|
|
begin
|
|
if CurrentStyle <> nil then
|
|
begin
|
|
ColorDialog.Color := CurrentStyle.AnotherColor;
|
|
if ColorDialog.Execute then
|
|
begin
|
|
CurrentStyle.AnotherColor := ColorDialog.Color;
|
|
StyleControlsUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
//create a new style
|
|
procedure TfmMain.btnNewClick(Sender: TObject);
|
|
var
|
|
LevelItemIndex, ColumnItemIndex: Integer;
|
|
begin
|
|
CurrentStyle := TdxMasterViewStyle.Create(MasterView);
|
|
CurrentStyle.Name := 'Style'+IntToStr(cmbStyles.Items.Count + 1);
|
|
cmbStyles.Items.AddObject(CurrentStyle.Name,CurrentStyle);
|
|
cmbStyles.ItemIndex := cmbStyles.Items.Count - 1;
|
|
cmbStylesChange(nil);
|
|
|
|
if cmbLevelStyle.Items.Strings[cmbLevelStyle.ItemIndex] <> 'None' then
|
|
LevelItemIndex := cmbLevelStyle.ItemIndex
|
|
else
|
|
LevelItemIndex := cmbLevelStyle.ItemIndex + 1;
|
|
if cmbColumnStyle.Items.Strings[cmbColumnStyle.ItemIndex] <> 'None' then
|
|
ColumnItemIndex := cmbColumnStyle.ItemIndex
|
|
else
|
|
ColumnItemIndex := cmbColumnStyle.ItemIndex + 1;
|
|
AssignStyles;
|
|
cmbLevelStyle.ItemIndex := LevelItemIndex;
|
|
cmbColumnStyle.ItemIndex := ColumnItemIndex;
|
|
end;
|
|
|
|
//delete the current style
|
|
procedure TfmMain.btnDeleteClick(Sender: TObject);
|
|
var
|
|
LevelItemIndex, ColumnItemIndex: Integer;
|
|
begin
|
|
cmbStyles.Items.Delete(cmbStyles.ItemIndex);
|
|
CurrentStyle.Free;
|
|
CurrentStyle := nil;
|
|
cmbStyles.ItemIndex := cmbStyles.Items.Count - 1;
|
|
cmbStylesChange(cmbStyles);
|
|
|
|
if cmbLevelStyle.Items.Strings[cmbLevelStyle.ItemIndex] <> 'None' then
|
|
LevelItemIndex := cmbLevelStyle.ItemIndex
|
|
else
|
|
LevelItemIndex := cmbLevelStyle.ItemIndex - 1;
|
|
if cmbColumnStyle.Items.Strings[cmbColumnStyle.ItemIndex] <> 'None' then
|
|
ColumnItemIndex := cmbColumnStyle.ItemIndex
|
|
else
|
|
ColumnItemIndex := cmbColumnStyle.ItemIndex - 1;
|
|
AssignStyles;
|
|
cmbLevelStyle.ItemIndex := LevelItemIndex;
|
|
cmbColumnStyle.ItemIndex := ColumnItemIndex;
|
|
end;
|
|
|
|
|
|
procedure TfmMain.cmbLevelsChange(Sender: TObject);
|
|
begin
|
|
case TComboBox(Sender).ItemIndex of
|
|
0 : CurrentLevel := Level1;
|
|
1 : CurrentLevel := Level2;
|
|
end;
|
|
|
|
//fill cmbColumns
|
|
FillColumnsCombos(CurrentLevel);
|
|
cmbColumnsChange(cmbColumns);
|
|
|
|
//set the cmbLevelElements value
|
|
cmbLevelElements.ItemIndex := 0;
|
|
cmbLevelElementsChange(cmbLevelElements);
|
|
end;
|
|
|
|
procedure TfmMain.FillColumnsCombos(Level: TdxMasterViewLevel);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
if Level <> nil then
|
|
begin
|
|
//Fill the cmbColumns
|
|
cmbColumns.Clear;
|
|
for i := 0 to Level.ColumnCount - 1 do
|
|
cmbColumns.Items.AddObject(Level.Columns[i].Name,Level.Columns[i]);
|
|
cmbColumns.ItemIndex := 0;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TfmMain.cmbColumnsChange(Sender: TObject);
|
|
var
|
|
Index: Integer;
|
|
ComboBox: TComboBox;
|
|
begin
|
|
ComboBox := TCombobox(Sender);
|
|
Index := Combobox.ItemIndex;
|
|
//Set current column
|
|
CurrentColumn := Combobox.Items.Objects[Index] as TdxMasterViewColumn;
|
|
//set the cmbColumnElements value
|
|
cmbColumnElements.ItemIndex := 0;
|
|
cmbColumnElementsChange(cmbColumnElements);
|
|
end;
|
|
|
|
procedure TfmMain.cmbLevelElementsChange(Sender: TObject);
|
|
begin
|
|
case cmbLevelElements.ItemIndex of
|
|
0 : if CurrentLevel.CaptionStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.CaptionStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
1 : if CurrentLevel.ContentStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.ContentStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
2 : if CurrentLevel.FooterStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.FooterStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
3 : if CurrentLevel.GroupByBoxStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.GroupByBoxStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
4 : if CurrentLevel.GroupStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.GroupStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
5 : if CurrentLevel.HeaderStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.HeaderStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
6 : if CurrentLevel.PreviewStyle <> nil then
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf(CurrentLevel.PreviewStyle.Name)
|
|
else
|
|
cmbLevelStyle.ItemIndex := cmbLevelStyle.Items.IndexOf('None');
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMain.cmbColumnElementsChange(Sender: TObject);
|
|
begin
|
|
case cmbColumnElements.ItemIndex of
|
|
0 : if CurrentColumn.ContentStyle <> nil then
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf(CurrentColumn.ContentStyle.Name)
|
|
else
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf('None');
|
|
1 : if CurrentColumn.FooterStyle <> nil then
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf(CurrentColumn.FooterStyle.Name)
|
|
else
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf('None');
|
|
2 : if CurrentColumn.HeaderStyle <> nil then
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf(CurrentColumn.HeaderStyle.Name)
|
|
else
|
|
cmbColumnStyle.ItemIndex := cmbColumnStyle.Items.IndexOf('None');
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMain.cmbLevelStyleChange(Sender: TObject);
|
|
begin
|
|
case cmbLevelElements.ItemIndex of
|
|
0 : CurrentLevel.CaptionStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
1 : CurrentLevel.ContentStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
2 : CurrentLevel.FooterStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
3 : CurrentLevel.GroupByBoxStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
4 : CurrentLevel.GroupStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
5 : CurrentLevel.HeaderStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
6 : CurrentLevel.PreviewStyle := TdxMasterViewStyle(cmbLevelStyle.Items.Objects[cmbLevelStyle.ItemIndex]);
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMain.cmbColumnStyleChange(Sender: TObject);
|
|
begin
|
|
case cmbColumnElements.ItemIndex of
|
|
0 : CurrentColumn.ContentStyle := TdxMasterViewStyle(cmbColumnStyle.Items.Objects[cmbColumnStyle.ItemIndex]);
|
|
1 : CurrentColumn.FooterStyle := TdxMasterViewStyle(cmbColumnStyle.Items.Objects[cmbColumnStyle.ItemIndex]);
|
|
2 : CurrentColumn.HeaderStyle := TdxMasterViewStyle(cmbColumnStyle.Items.Objects[cmbColumnStyle.ItemIndex]);
|
|
end;
|
|
end;
|
|
|
|
procedure TfmMain.btnCustomizeClick(Sender: TObject);
|
|
begin
|
|
MasterView.Customizing := not MasterView.Customizing;
|
|
end;
|
|
|
|
procedure TfmMain.AssignStyles;
|
|
begin
|
|
cmbLevelStyle.Items.Assign(cmbStyles.Items);
|
|
cmbLevelStyle.Items.Add('None');
|
|
cmbColumnStyle.Items.Assign(cmbStyles.Items);
|
|
cmbColumnStyle.Items.Add('None');
|
|
end;
|
|
|
|
end.
|