Componentes.Terceros.DevExp.../official/x.19/ExpressQuantumGrid 5/Demos/Delphi/StylesMultiDemo/StylesMultiDemoMain.pas
2007-09-09 11:27:22 +00:00

295 lines
8.3 KiB
ObjectPascal

unit StylesMultiDemoMain;
interface
uses
Windows, Messages, Forms, SysUtils, cxStyles, cxCustomData, cxGraphics, cxFilter,
cxEdit, DB, cxDBData, Dialogs, cxGridCustomPopupMenu, cxGridPopupMenu,
Classes, ActnList, ImgList, Controls, Menus, StdCtrls, ExtCtrls,
cxButtons, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxData,
cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid,
ComCtrls, cxContainer, cxRadioGroup, cxListBox, cxDataStorage,
cxLookAndFeelPainters, cxGroupBox, cxLookAndFeels, cxGridStyleSheetsPreview;
type
TStylesMultiDemoMainForm = class(TForm)
mmMain: TMainMenu;
miAbout: TMenuItem;
miFile: TMenuItem;
miOptions: TMenuItem;
miExit: TMenuItem;
sbMain: TStatusBar;
lbDescrip: TLabel;
tvProjects: TcxGridDBTableView;
lvProjects: TcxGridLevel;
cxGrid: TcxGrid;
miLookFeel: TMenuItem;
miKind: TMenuItem;
miFlat: TMenuItem;
miStandard: TMenuItem;
miUltraFlat: TMenuItem;
miNativeStyle: TMenuItem;
pnlLeft: TPanel;
tvProjectsID: TcxGridDBColumn;
tvProjectsNAME: TcxGridDBColumn;
tvProjectsMANAGERID: TcxGridDBColumn;
lvTeam: TcxGridLevel;
tvTeam: TcxGridDBTableView;
tvTeamPROJECTID: TcxGridDBColumn;
tvTeamUSERID: TcxGridDBColumn;
tvTeamFUNCTION: TcxGridDBColumn;
Splitter: TSplitter;
cxGridPopupMenu1: TcxGridPopupMenu;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
gbUserDefined: TcxGroupBox;
RadioGroup: TcxRadioGroup;
gbPredefined: TcxGroupBox;
cbUserStyleSheets: TComboBox;
btnLoad: TcxButton;
btnSave: TcxButton;
lbPredefinedStyleSheets: TcxListBox;
btnEdit: TcxButton;
pnlCurrentStyleSheet: TPanel;
LookAndFeelController: TcxLookAndFeelController;
procedure miAboutClick(Sender: TObject);
procedure miExitClick(Sender: TObject);
procedure miNativeStyleClick(Sender: TObject);
procedure miLookAndFeelKindClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure RadioGroupClick(Sender: TObject);
procedure cbUserStyleSheetsChange(Sender: TObject);
procedure lbPredefinedStyleSheetsClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
function GetCurrentStyleSheet: TcxGridTableViewStyleSheet;
procedure CreateUserStyleSheetsList;
procedure CreatePredefinedStyleSheetsList;
procedure UpdateGridStyleSheets(const AStyleSheet: TcxGridTableViewStyleSheet);
procedure ChangeVisibility(AType: Integer);
procedure SetPredefinedStyleSheets;
procedure SetUserDefinedStyleSheets;
procedure ClearUserDefinedStyleSheets;
procedure LoadUserDefinedStyleSheets(AFileName: TFileName);
procedure SaveUserDefinedStyleSheets(AFileName: TFileName);
end;
var
StylesMultiDemoMainForm: TStylesMultiDemoMainForm;
implementation
{$R *.dfm}
uses
StylesMultiDemoData, cxStyleSheetEditor, AboutDemoForm;
const
cNone = 0;
cPredefined = 1;
cUserDefined = 2;
procedure TStylesMultiDemoMainForm.miAboutClick(Sender: TObject);
begin
ShowAboutDemoForm;
end;
procedure TStylesMultiDemoMainForm.miExitClick(Sender: TObject);
begin
Close;
end;
procedure TStylesMultiDemoMainForm.miNativeStyleClick(Sender: TObject);
begin
with LookAndFeelController do
begin
NativeStyle := not NativeStyle;
(Sender as TMenuItem).Checked := NativeStyle;
end;
end;
procedure TStylesMultiDemoMainForm.miLookAndFeelKindClick(Sender: TObject);
begin
LookAndFeelController.Kind := TcxLookAndFeelKind(TMenuItem(Sender).MenuIndex);
(Sender as TMenuItem).Checked := True;
end;
procedure TStylesMultiDemoMainForm.FormCreate(Sender: TObject);
begin
CreateUserStyleSheetsList;
CreatePredefinedStyleSheetsList;
SetPredefinedStyleSheets;
end;
procedure TStylesMultiDemoMainForm.CreateUserStyleSheetsList;
var
I: Integer;
begin
with StylesMultiDemoMainDM.strepUserDefined do
begin
cbUserStyleSheets.Clear;
for I := 0 to StyleSheetCount - 1 do
cbUserStyleSheets.Items.AddObject(StyleSheets[I].Caption, StyleSheets[I]);
cbUserStyleSheets.ItemIndex := 0;
end;
end;
procedure TStylesMultiDemoMainForm.CreatePredefinedStyleSheetsList;
var
I: Integer;
begin
with StylesMultiDemoMainDM.strepPredefined do
begin
lbPredefinedStyleSheets.Clear;
for I := 0 to StyleSheetCount - 1 do
lbPredefinedStyleSheets.Items.AddObject(StyleSheets[I].Caption, StyleSheets[I]);
lbPredefinedStyleSheets.ItemIndex := 0;
end;
end;
procedure TStylesMultiDemoMainForm.UpdateGridStyleSheets(const AStyleSheet: TcxGridTableViewStyleSheet);
procedure UpdateView(const AView: TcxGridDBTableView);
begin
with AView do
begin
BeginUpdate;
Styles.StyleSheet := AStyleSheet;
EndUpdate;
end;
end;
begin
if GetCurrentStyleSheet = AStyleSheet then
Exit;
UpdateView(tvProjects);
UpdateView(tvTeam);
tvProjects.DataController.ClearDetails; // refresh detail level
if AStyleSheet <> nil then
pnlCurrentStyleSheet.Caption := AStyleSheet.Caption
else
pnlCurrentStyleSheet.Caption := '';
end;
procedure TStylesMultiDemoMainForm.btnSaveClick(Sender: TObject);
begin
with SaveDialog do
if Execute then
SaveUserDefinedStyleSheets(FileName);
end;
procedure TStylesMultiDemoMainForm.btnLoadClick(Sender: TObject);
begin
with OpenDialog do
if Execute then
LoadUserDefinedStyleSheets(FileName);
end;
procedure TStylesMultiDemoMainForm.RadioGroupClick(Sender: TObject);
begin
case TcxRadioGroup(Sender).ItemIndex of
cNone:
UpdateGridStyleSheets(nil);
cPredefined:
SetPredefinedStyleSheets;
cUserDefined:
SetUserDefinedStyleSheets;
end;
ChangeVisibility(TcxRadioGroup(Sender).ItemIndex);
end;
procedure TStylesMultiDemoMainForm.SetUserDefinedStyleSheets;
begin
with cbUserStyleSheets do
if Items.Count > 0 then
UpdateGridStyleSheets(TcxGridTableViewStyleSheet(Items.Objects[ItemIndex]));
end;
procedure TStylesMultiDemoMainForm.SetPredefinedStyleSheets;
begin
with lbPredefinedStyleSheets do
if Items.Count > 0 then
UpdateGridStyleSheets(TcxGridTableViewStyleSheet(Items.Objects[ItemIndex]));
end;
procedure TStylesMultiDemoMainForm.ChangeVisibility(AType: Integer);
begin
cbUserStyleSheets.Enabled := AType = cUserDefined;
gbUserDefined.Enabled := AType = cUserDefined;
btnEdit.Enabled := AType = cUserDefined;
btnLoad.Enabled := AType = cUserDefined;
btnSave.Enabled := AType = cUserDefined;
lbPredefinedStyleSheets.Enabled := AType = cPredefined;
end;
procedure TStylesMultiDemoMainForm.cbUserStyleSheetsChange(
Sender: TObject);
begin
SetUserDefinedStyleSheets;
end;
procedure TStylesMultiDemoMainForm.lbPredefinedStyleSheetsClick(
Sender: TObject);
begin
SetPredefinedStyleSheets;
end;
procedure TStylesMultiDemoMainForm.btnEditClick(
Sender: TObject);
begin
with cbUserStyleSheets do
ShowcxStyleSheetEditor(TcxGridTableViewStyleSheet(Items.Objects[ItemIndex]), nil);
end;
function TStylesMultiDemoMainForm.GetCurrentStyleSheet: TcxGridTableViewStyleSheet;
begin
Result := TcxGridTableViewStyleSheet(tvProjects.Styles.StyleSheet);
end;
procedure TStylesMultiDemoMainForm.LoadUserDefinedStyleSheets(AFileName: TFileName);
begin
UpdateGridStyleSheets(nil);
ClearUserDefinedStyleSheets;
LoadStyleSheetsFromIniFile(AFileName, StylesMultiDemoMainDM.strepUserDefined,
TcxGridTableViewStyleSheet);
CreateUserStyleSheetsList;
SetUserDefinedStyleSheets;
end;
procedure TStylesMultiDemoMainForm.SaveUserDefinedStyleSheets(AFileName: TFileName);
var
AList: TList;
begin
AList := TList.Create;
try
PopulateStyleSheetsList(AList);
SaveStyleSheetsToIniFile(AFileName, AList);
finally
AList.Free;
end;
end;
procedure TStylesMultiDemoMainForm.ClearUserDefinedStyleSheets;
begin
with StylesMultiDemoMainDM.strepUserDefined do
begin
Clear;
ClearStyleSheets;
end;
end;
procedure TStylesMultiDemoMainForm.FormActivate(Sender: TObject);
begin
OpenDialog.InitialDir := ExtractFileDir(Application.ExeName);
SaveDialog.InitialDir := OpenDialog.InitialDir;
end;
end.