git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@7 05c56307-c608-d34a-929d-697000501d7a
295 lines
8.3 KiB
ObjectPascal
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.
|