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

187 lines
4.6 KiB
ObjectPascal

unit UnboundSimpleDemoMain;
{$I ..\..\cxVer.inc}
interface
uses
Windows, Messages, SysUtils, Classes, Controls,
Forms, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit,
cxEditRepositoryItems, cxGridTableView, ActnList, ImgList,
Menus, cxGridLevel, cxGridCustomTableView, cxClasses, Dialogs,
cxControls, cxGridCustomView, cxGrid, ComCtrls, StdCtrls, cxDataStorage,
cxLookAndFeels;
type
TUnboundSimpleDemoMainForm = class(TForm)
mmMain: TMainMenu;
miAbout: TMenuItem;
miFile: TMenuItem;
miExit: TMenuItem;
sbMain: TStatusBar;
cxGrid: TcxGrid;
StyleRepository: TcxStyleRepository;
tvssDevExpress: TcxGridTableViewStyleSheet;
cxStyle1: TcxStyle;
cxStyle2: TcxStyle;
cxStyle3: TcxStyle;
cxStyle4: TcxStyle;
cxStyle5: TcxStyle;
cxStyle6: TcxStyle;
cxStyle7: TcxStyle;
cxStyle8: TcxStyle;
cxStyle9: TcxStyle;
cxStyle10: TcxStyle;
cxStyle11: TcxStyle;
cxStyle12: TcxStyle;
cxStyle13: TcxStyle;
cxStyle14: TcxStyle;
lvPlanets: TcxGridLevel;
tvPlanets: TcxGridTableView;
lbDescrip: TLabel;
tvPlanetsNAME: TcxGridColumn;
tvPlanetsNO: TcxGridColumn;
tvPlanetsORBITS: TcxGridColumn;
tvPlanetsDISTANCE: TcxGridColumn;
tvPlanetsPERIOD: TcxGridColumn;
tvPlanetsDISCOVERER: TcxGridColumn;
tvPlanetsDATE: TcxGridColumn;
tvPlanetsRADIUS: TcxGridColumn;
edrepMain: TcxEditRepository;
edrepCenterText: TcxEditRepositoryTextItem;
edrepRightText: TcxEditRepositoryTextItem;
LookAndFeelController: TcxLookAndFeelController;
procedure miAboutClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure CustomizeColumns;
procedure LoadData;
procedure SetFilter;
end;
var
UnboundSimpleDemoMainForm: TUnboundSimpleDemoMainForm;
implementation
{$R *.dfm}
uses
{$IFDEF DELPHI6}Variants, {$ENDIF}AboutDemoForm;
procedure TUnboundSimpleDemoMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TUnboundSimpleDemoMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TUnboundSimpleDemoMainForm.FormCreate(Sender: TObject);
begin
tvPlanets.BeginUpdate;
try
CustomizeColumns;
LoadData;
SetFilter;
finally
tvPlanets.EndUpdate;
end;
end;
procedure TUnboundSimpleDemoMainForm.CustomizeColumns;
const
cDistance = 3;
cPeriod = 4;
cRadius = 7;
var
I: Integer;
begin
DecimalSeparator := '.';
with tvPlanets do
for I := 0 to ColumnCount - 1 do
if I in [cDistance, cRadius] then
Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType
else
if I in [cPeriod] then
Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType
else
Columns[I].DataBinding.ValueTypeClass := TcxStringValueType;
end;
procedure TUnboundSimpleDemoMainForm.LoadData;
const
AFileName = 'nineplanets.txt';
AHeaderLineCount = 2;
var
ARecords, AValues: TStringList;
I: Integer;
procedure InitRecord(const Str: string);
var
J: Integer;
V: Variant;
{$IFNDEF DELPHI6}
D: Double;
ACode: Integer;
{$ENDIF}
begin
AValues.CommaText := Str;
for J := 0 to AValues.Count - 1 do
if AValues.Strings[J] <> '-' then
begin
V := AValues.Strings[J];
if not VarIsNull(V) then
{$IFNDEF DELPHI6}
if Pos(DecimalSeparator, V) <> 0 then
begin
Val(V, D, ACode);
if ACode = 0 then
tvPlanets.DataController.Values[I, J] := D
else
tvPlanets.DataController.Values[I, J] := V;
end
else
{$ENDIF}
tvPlanets.DataController.Values[I, J] := V;
end;
end;
begin
if not FileExists(AFileName) then
raise Exception.Create('Data file not found');
ARecords := TStringList.Create;
try
AValues := TStringList.Create;
try
tvPlanets.BeginUpdate;
with ARecords do
try
LoadFromFile(AFileName);
tvPlanets.DataController.RecordCount := Count - AHeaderLineCount;
for I := 0 to Count - (AHeaderLineCount + 1) do
InitRecord(Strings[I + AHeaderLineCount]);
finally
tvPlanets.EndUpdate;
end;
finally
AValues.Free;
end;
finally
ARecords.Free;
end;
end;
procedure TUnboundSimpleDemoMainForm.SetFilter;
begin
tvPlanets.DataController.Filter.AddItem(nil, tvPlanetsORBITS, foEqual, 'Sun', 'Sun');
tvPlanets.DataController.Filter.Active := True;
end;
end.