Componentes.Terceros.DevExp.../internal/x.36/1/ExpressQuantumGrid 6/Demos/Delphi/ViewBandedDemo/ViewBandedDemoMain.pas
2008-09-04 11:31:51 +00:00

220 lines
6.3 KiB
ObjectPascal

unit ViewBandedDemoMain;
interface
uses
Windows, Messages, Classes, Graphics, Controls, Forms,
Dialogs, cxGridCustomTableView, cxGridTableView, cxGridBandedTableView,
cxGridDBBandedTableView, cxControls, cxGridCustomView, StdCtrls, Menus,
cxGridLevel, cxGrid, ActnList, ImgList, cxLookAndFeels,
ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxData, cxEdit, cxClasses, cxListBox, cxDataStorage, DB, cxDBData,
cxImageComboBox, cxDBLookupComboBox, cxCalendar;
type
TViewBandedDemoMainForm = class(TForm)
glItems: TcxGridLevel;
cxGrid: TcxGrid;
btvItems: TcxGridDBBandedTableView;
btvItemsNAME: TcxGridDBBandedColumn;
btvItemsTYPE: TcxGridDBBandedColumn;
btvItemsPROJECTID: TcxGridDBBandedColumn;
btvItemsPRIORITY: TcxGridDBBandedColumn;
btvItemsSTATUS: TcxGridDBBandedColumn;
btvItemsCREATEDDATE: TcxGridDBBandedColumn;
btvItemsFIXEDDATE: TcxGridDBBandedColumn;
btvItemsDESCRIPTION: TcxGridDBBandedColumn;
btvItemsOwnerName: TcxGridDBBandedColumn;
btvItemsCreatorName: TcxGridDBBandedColumn;
mmMain: TMainMenu;
miFile: TMenuItem;
miExit: TMenuItem;
miOptions: TMenuItem;
miAbout: TMenuItem;
ilMain: TImageList;
lbDescrip: TLabel;
sbMain: TStatusBar;
btvItemsCreatorPhone: TcxGridDBBandedColumn;
btvItemsOwnerPhone: TcxGridDBBandedColumn;
miShowPreviewRow: TMenuItem;
miBandMoving: TMenuItem;
miBandSizing: TMenuItem;
miDeleteBand: TMenuItem;
miCreateBand: TMenuItem;
miColumnsCustomization: TMenuItem;
N1: TMenuItem;
miShowNavigator: TMenuItem;
LookAndFeelController: TcxLookAndFeelController;
procedure miAboutClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure miShowPreviewRowClick(Sender: TObject);
procedure miBandMovingClick(Sender: TObject);
procedure miBandSizingClick(Sender: TObject);
procedure miColumnsCustomizationClick(Sender: TObject);
procedure miCreateBandClick(Sender: TObject);
procedure miDeleteBandClick(Sender: TObject);
procedure miShowNavigatorClick(Sender: TObject);
private
procedure DeleteBand(ABandCaption: String);
function GetBandByCaption(ABandCaption: String): TcxGridBand;
protected
procedure UpdateButtons;
end;
var
ViewBandedDemoMainForm: TViewBandedDemoMainForm;
implementation
{$R *.dfm}
uses
ViewBandedDemoData, ViewBandeDemoBands, AboutDemoForm;
procedure TViewBandedDemoMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TViewBandedDemoMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TViewBandedDemoMainForm.FormShow(Sender: TObject);
begin
TcxGridDBBandedTableView(cxGrid.FocusedView).DataController.Groups.FullExpand;
end;
procedure TViewBandedDemoMainForm.miShowPreviewRowClick(
Sender: TObject);
begin
if btvItems.Preview.Visible then
begin
btvItems.Preview.Visible := False;
btvItems.Preview.Column := nil;
end
else
begin
//btvItemsDESCRIPTION.Visible := False;
btvItems.Preview.Column := btvItemsDESCRIPTION;
btvItems.Preview.Visible := True;
end;
(Sender as TMenuItem).Checked := btvItems.Preview.Visible;
end;
procedure TViewBandedDemoMainForm.miBandMovingClick(Sender: TObject);
begin
with btvItems.OptionsCustomize do
BandMoving := not BandMoving;
(Sender as TMenuItem).Checked := btvItems.OptionsCustomize.BandMoving;
end;
procedure TViewBandedDemoMainForm.miBandSizingClick(Sender: TObject);
begin
with btvItems.OptionsCustomize do
BandSizing := not BandSizing;
(Sender as TMenuItem).Checked := btvItems.OptionsCustomize.BandSizing;
end;
procedure TViewBandedDemoMainForm.DeleteBand(ABandCaption: String);
begin
GetBandByCaption(ABandCaption).Free;
end;
function TViewBandedDemoMainForm.GetBandByCaption(ABandCaption: String): TcxGridBand;
var
i: Integer;
begin
Result := nil;
for i := 0 to btvItems.Bands.Count - 1 do
if btvItems.Bands[i].Caption = ABandCaption then
begin
Result := btvItems.Bands[i];
Exit;
end;
end;
procedure TViewBandedDemoMainForm.UpdateButtons;
begin
miDeleteBand.Enabled := btvItems.Bands.Count <> 0;
miShowPreviewRow.Enabled := btvItems.Bands.Count <> 0;
end;
procedure TViewBandedDemoMainForm.miColumnsCustomizationClick(Sender: TObject);
begin
btvItems.Controller.Customization := True;
end;
procedure TViewBandedDemoMainForm.miCreateBandClick(Sender: TObject);
var
BandCaption: String;
ABand: TcxGridBand;
ABandViewInfo: TcxGridbandViewInfo;
begin
if InputQuery('Create band', 'Specify a caption of the band', BandCaption) then
if GetBandByCaption(BandCaption) <> nil then
MessageDlg('Band with this caption already exists', mtWarning, [mbOK], 0)
else
begin
ABand := btvItems.Bands.Add;
ABand.Caption := BandCaption;
ABandViewInfo :=
btvItems.ViewInfo.HeaderViewInfo.BandsViewInfo[ABand.VisibleIndex];
btvItems.Controller.LeftPos := ABandViewInfo.Bounds.Right;
end;
UpdateButtons;
end;
procedure TViewBandedDemoMainForm.miDeleteBandClick(Sender: TObject);
procedure HideCoulmns;
var
j: Integer;
begin
for j:=0 to btvItems.ColumnCount - 1 do
if (btvItems.Columns[j].Position.Band = nil) and btvItems.Columns[j].Visible then
btvItems.Columns[j].Visible := False;
end;
procedure AddBands(AStringList: TStrings);
var
i: Integer;
begin
for i:=0 to btvItems.Bands.Count - 1 do
AStringList.Add(btvItems.Bands[i].Caption);
end;
procedure RemoveBands(AListBox: TcxListBox);
var
i: Integer;
begin
for i:=0 to AListBox.Items.Count - 1 do
if AListBox.Selected[i] then
DeleteBand(AListBox.Items[i]);
HideCoulmns;
end;
begin
with TViewBandeDemoBandsForm.Create(nil) do
try
lbBands.Items.Clear;
AddBands(lbBands.Items);
if ShowModal = mrOK then
RemoveBands(lbBands);
finally
Free;
end;
UpdateButtons;
end;
procedure TViewBandedDemoMainForm.miShowNavigatorClick(Sender: TObject);
begin
with Sender as TMenuItem do
Checked := not Checked;
btvItems.OptionsView.Navigator := (Sender as TMenuItem).Checked;
end;
end.