Componentes.Terceros.DevExp.../official/x.30/ExpressWeb Framework/Demos/Delphi/MegaDemo/ugriddemo1.pas
2007-12-16 17:06:54 +00:00

344 lines
12 KiB
ObjectPascal

unit ugriddemo1;
interface
uses
Windows, Messages, SysUtils, Classes, HTTPApp,
cxWebTypes, cxWebColors, cxWebClasses, cxWebModule, cxWebControls,
cxWebStdCtrls, DB, DBTables, cxWebGrids, cxWebDataNavigator,
cxDataStorage, cxWebDataCtrls, cxWebData, cxWebExtData, cxWebMenus,
cxWebDBGrid, ADODB;
type
TGridDemo1 = class(TcxWebPageModule)
cxWebStyleController1: TcxWebStyleController;
cxWebLabel2: TcxWebLabel;
dsGridDataSource: TcxWebDBDataSource;
cxWebDBDataNavigator1: TcxWebDBDataNavigator;
StandartGroupPanel: TcxWebStyleItem;
StandartHeader: TcxWebStyleItem;
StandartIndicator: TcxWebStyleItem;
StandartStatusPanel: TcxWebStyleItem;
StandartGroupNodes: TcxWebStyleItem;
StandartColumn: TcxWebStyleItem;
StandartNavigator: TcxWebStyleItem;
AutumnGroupPanel: TcxWebStyleItem;
AutumnHeader: TcxWebStyleItem;
AutumnIndicator: TcxWebStyleItem;
AutumnStatusPanel: TcxWebStyleItem;
AutumnGroupNodes: TcxWebStyleItem;
AutumnColumn: TcxWebStyleItem;
AutumnNavigator: TcxWebStyleItem;
cbLoadAllRecords: TcxWebCheckBox;
SkyGroupPanel: TcxWebStyleItem;
SkyHeader: TcxWebStyleItem;
SkyIndicator: TcxWebStyleItem;
SkyStatusPanel: TcxWebStyleItem;
SkyGroupNodes: TcxWebStyleItem;
SkyColumn: TcxWebStyleItem;
SkyNavigator: TcxWebStyleItem;
SkyHover: TcxWebStyleItem;
cxWebDBGrid1: TcxWebDBGrid;
cName: TcxWebDBColumn;
cCapital: TcxWebDBColumn;
cContinent: TcxWebDBColumn;
cArea: TcxWebDBColumn;
cPopulation: TcxWebDBColumn;
cxWebPanel1: TcxWebPanel;
cbIndicatorType: TcxWebComboBox;
cxWebLabel3: TcxWebLabel;
cxWebLabel4: TcxWebLabel;
cbStyles: TcxWebComboBox;
cxWebLabel9: TcxWebLabel;
cbNavigatorStyle: TcxWebComboBox;
cxWebPanel2: TcxWebPanel;
cbAutoWidth: TcxWebCheckBox;
cbShowGroupPanel: TcxWebCheckBox;
cbShowGrid: TcxWebCheckBox;
cbShowHeader: TcxWebCheckBox;
cbShowGroupedColumns: TcxWebCheckBox;
cbShowStatusPanel: TcxWebCheckBox;
cxWebPanel3: TcxWebPanel;
cbColumnVisible: TcxWebCheckBox;
cbColumnReadOnly: TcxWebCheckBox;
cxWebLabel10: TcxWebLabel;
cbColumn: TcxWebComboBox;
cxWebLabel11: TcxWebLabel;
cxWebLabel12: TcxWebLabel;
cxWebLabel13: TcxWebLabel;
eColumnTitle: TcxWebEdit;
eColumnIndex: TcxWebEdit;
eColumnWidth: TcxWebEdit;
bApply: TcxWebButton;
cxWebLabel14: TcxWebLabel;
cbColumnViewType: TcxWebComboBox;
cxWebLabel15: TcxWebLabel;
cbColumnAlign: TcxWebComboBox;
cxWebLabel16: TcxWebLabel;
cbColumnVAlign: TcxWebComboBox;
bCancel: TcxWebButton;
scCommon: TcxWebStyleController;
stHeader1: TcxWebStyleItem;
stHeader2: TcxWebStyleItem;
stPanel: TcxWebStyleItem;
stButtonDef: TcxWebStyleItem;
stButtonHover: TcxWebStyleItem;
stEditorDef: TcxWebStyleItem;
stEditorHover: TcxWebStyleItem;
stLabelDef: TcxWebStyleItem;
stLabelHover: TcxWebStyleItem;
stTips: TcxWebStyleItem;
stLine1: TcxWebStyleItem;
stLine2: TcxWebStyleItem;
SkyColumnHover: TcxWebStyleItem;
SkyStatusPanelHover: TcxWebStyleItem;
SkyGroupPanelHover: TcxWebStyleItem;
AutumnAltColumn: TcxWebStyleItem;
cbReadOnly: TcxWebCheckBox;
ADOTable1: TADOTable;
procedure cbShowGroupPanelClick(Sender: TObject);
procedure cbShowHeaderClick(Sender: TObject);
procedure cbShowGridClick(Sender: TObject);
procedure cbShowStatusPanelClick(Sender: TObject);
procedure cbIndicatorTypeChange(Sender: TObject);
procedure cbStylesChange(Sender: TObject);
procedure cbLoadAllRecordsClick(Sender: TObject);
procedure cbNavigatorStyleChange(Sender: TObject);
procedure cbColumnChange(Sender: TObject);
procedure bApplyClick(Sender: TObject);
procedure cbAutoWidthClick(Sender: TObject);
procedure cbShowGroupedColumnsClick(Sender: TObject);
procedure bCancelClick(Sender: TObject);
procedure cbReadOnlyClick(Sender: TObject);
procedure cxWebPageModuleActivate(Sender: TObject);
procedure cxWebPageModuleDeactivate(Sender: TObject);
private
{ Private properties }
public
{ Public properties }
end;
function GridDemo1: TGridDemo1;
implementation
{$R *.DFM}{*.html}
uses
WebReq, WebCntxt, cxWebModFact, Variants, cxWebGraphics, uMainPage, ActiveX;
function GridDemo1: TGridDemo1;
begin
Result := TGridDemo1(WebContext.FindModuleClass(TGridDemo1));
end;
procedure TGridDemo1.cbShowGroupPanelClick(Sender: TObject);
begin
cxWebDBGrid1.ShowGroupPanel := cbShowGroupPanel.Checked;
end;
procedure TGridDemo1.cbShowHeaderClick(Sender: TObject);
begin
cxWebDBGrid1.ShowHeader := cbShowHeader.Checked;
end;
procedure TGridDemo1.cbShowGridClick(Sender: TObject);
begin
cxWebDBGrid1.ShowGrid := cbShowGrid.Checked;
end;
procedure TGridDemo1.cbShowStatusPanelClick(Sender: TObject);
begin
cxWebDBGrid1.ShowStatusPanel := cbShowStatusPanel.Checked;
end;
procedure TGridDemo1.cbIndicatorTypeChange(Sender: TObject);
begin
case cbIndicatorType.ItemIndex of
0: cxWebDBGrid1.ShowIndicator := false;
1: begin
cxWebDBGrid1.ShowIndicator := true;
cxWebDBGrid1.IndicatorType := itCursor;
end;
2: begin
cxWebDBGrid1.ShowIndicator := true;
cxWebDBGrid1.IndicatorType := itDataOp;
end;
end;
end;
procedure TGridDemo1.cbStylesChange(Sender: TObject);
var
I: Integer;
StylePrefix: string;
begin
case cbStyles.ItemIndex of
1: begin
StylePrefix := 'Standart';
cxWebDBGrid1.SelectedColor := clWebPeru;
end;
2: begin
cxWebDBGrid1.SelectedColor := clWebSaddleBrown;
StylePrefix := 'Autumn';
end;
3: begin
cxWebDBGrid1.SelectedColor := clWebIndianred;
StylePrefix := 'Sky';
end;
else
begin
cxWebDBGrid1.SelectedColor := clWebHighlight;
StylePrefix := '';
end;
end;
cxWebDBGrid1.GroupPanelStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'GroupPanel');
cxWebDBGrid1.GroupPanelStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'GroupPanelHover');
cxWebDBGrid1.StatusPanelStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'StatusPanel');
cxWebDBGrid1.StatusPanelStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'StatusPanelHover');
cxWebDBGrid1.GroupNodesStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'GroupNodes');
cxWebDBGrid1.HeaderStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'Header');
cxWebDBGrid1.HeaderStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'HeaderHover');
cxWebDBGrid1.IndicatorStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'Indicator');
for I := 0 to cxWebDBGrid1.ColumnCount - 1 do
begin
cxWebDBGrid1.Columns[I].Styles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'Column');
cxWebDBGrid1.Columns[I].Styles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'ColumnHover');
cxWebDBGrid1.Columns[I].AlternatingStyles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'AltColumn');
cxWebDBGrid1.Columns[I].AlternatingStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'AltColumnHover');
end;
cxWebDBDataNavigator1.Styles.Default := cxWebStyleController1.ItemByName(StylePrefix + 'Navigator');
cxWebDBGrid1.HeaderStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'Hover');
cxWebDBGrid1.IndicatorStyles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'Hover');
cxWebDBDataNavigator1.Styles.Hover := cxWebStyleController1.ItemByName(StylePrefix + 'Hover');
end;
procedure TGridDemo1.cbLoadAllRecordsClick(Sender: TObject);
begin
dsGridDataSource.LoadAllRecords := cbLoadAllRecords.Checked;
end;
procedure TGridDemo1.cbNavigatorStyleChange(Sender: TObject);
const
Standard: array[0..13] of Boolean = (True, True, True, True, True, True, True,
True, True, True, True, True, True, True);
Navigation: array[0..13] of Boolean = (True, True, True, False, False, True, True,
True, False, False, False, False, False, False);
DelphiNavigator: array[0..13] of Boolean = (True, False, True, False, False, True,
False, True, True, True, True, True, True, True);
var
I: Integer;
begin
for I := 0 to cxWebDBDataNavigator1.ButtonCount - 1 do
begin
case cbNavigatorStyle.ItemIndex of
0: cxWebDBDataNavigator1.Buttons[I].Visible := Standard[I];
1: cxWebDBDataNavigator1.Buttons[I].Visible := Navigation[I];
2: cxWebDBDataNavigator1.Buttons[I].Visible := DelphiNavigator[I];
end;
end;
cxWebDBDataNavigator1.Width := 0; // stay minwidth
end;
procedure TGridDemo1.cbColumnChange(Sender: TObject);
var
Column: TcxWebColumn;
begin
Column := cxWebDBGrid1.ColumnByName(cbColumn.Text);
if Column <> nil then
begin
eColumnTitle.Text := Column.Title;
eColumnIndex.Text := IntToStr(Column.Index);
eColumnWidth.Text := IntToStr(Column.Width);
cbColumnVisible.Checked := Column.Visible;
cbColumnReadOnly.Checked := Column.ReadOnly;
cbColumnViewType.ItemIndex := Integer(Column.ViewType);
cbColumnAlign.ItemIndex := Integer(Column.Alignment);
cbColumnVAlign.ItemIndex := Integer(Column.VAlignment);
end;
end;
procedure TGridDemo1.bApplyClick(Sender: TObject);
var
Column: TcxWebColumn;
begin
Column := cxWebDBGrid1.ColumnByName(cbColumn.Text);
if Column <> nil then
begin
Column.Title := eColumnTitle.Text;
try
Column.Index := StrToInt(eColumnIndex.Text);
except
on EConvertError do
else raise;
end;
eColumnIndex.Text := IntToStr(Column.Index);
try
Column.Width := StrToInt(eColumnWidth.Text)
except
on EConvertError do
else raise;
end;
eColumnWidth.Text := IntToStr(Column.Width);
Column.Visible := cbColumnVisible.Checked;
cbColumnVisible.Checked := Column.Visible;
Column.ReadOnly := cbColumnReadOnly.Checked;
cbColumnReadOnly.Checked := Column.ReadOnly;
Column.ViewType := TcxWebColumnViewType(cbColumnViewType.ItemIndex);
Column.Alignment := TcxWebHorzAlignment(cbColumnAlign.ItemIndex);
Column.VAlignment := TcxWebVertAlignment(cbColumnVAlign.ItemIndex);
end;
end;
procedure TGridDemo1.cbAutoWidthClick(Sender: TObject);
begin
cxWebDBGrid1.AutoWidth := cbAutoWidth.Checked;
end;
procedure TGridDemo1.cbShowGroupedColumnsClick(Sender: TObject);
begin
cxWebDBGrid1.ShowGroupedColumns := cbShowGroupedColumns.Checked;
end;
procedure TGridDemo1.bCancelClick(Sender: TObject);
var
Column: TcxWebColumn;
begin
Column := cxWebDBGrid1.ColumnByName(cbColumn.Text);
if Column <> nil then
begin
eColumnTitle.Text := Column.Title;
eColumnIndex.Text := IntToStr(Column.Index);
eColumnWidth.Text := IntToStr(Column.Width);
cbColumnVisible.Checked := Column.Visible;
cbColumnReadOnly.Checked := Column.ReadOnly;
cbColumnViewType.ItemIndex := Integer(Column.ViewType);
cbColumnAlign.ItemIndex := Integer(Column.Alignment);
cbColumnVAlign.ItemIndex := Integer(Column.VAlignment);
end;
end;
procedure TGridDemo1.cbReadOnlyClick(Sender: TObject);
begin
cxWebDBGrid1.ReadOnly := cbReadOnly.Checked;
end;
procedure TGridDemo1.cxWebPageModuleActivate(Sender: TObject);
begin
ADOTable1.ConnectionString := 'FILE NAME=' + DataLinkDir + '\DBDEMOS.UDL';
ADOTable1.Open;
end;
procedure TGridDemo1.cxWebPageModuleDeactivate(Sender: TObject);
begin
ADOTable1.Close;
end;
initialization
if WebRequestHandler <> nil then
WebRequestHandler.AddWebModuleFactory(TcxWebPageModuleFactory.Create(TGridDemo1, TcxWebPageInfo.Create('*.html'), caDestroy));
end.