git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@8 05c56307-c608-d34a-929d-697000501d7a
488 lines
15 KiB
ObjectPascal
488 lines
15 KiB
ObjectPascal
unit EditorsStylesDemoMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
|
|
Dialogs, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxTreeView,
|
|
cxControls, cxContainer, cxListView, cxListBox, cxLookAndFeels, cxStyles, StdCtrls,
|
|
Menus, ImgList, ActnList, cxTrackBar, cxProgressBar, ComCtrls, ExtCtrls, cxHint,
|
|
cxLookAndFeelPainters, cxImage, cxButtons, ToolWin, JPEG, cxSplitter,
|
|
cxLabel, EditorsStylesDemoBase, cxGroupBox, cxMemo, cxSpinEdit, cxFontNameComboBox,
|
|
cxPC;
|
|
|
|
type
|
|
TEditorsStylesDemoDemoMainForm = class(TForm)
|
|
ilMain: TImageList;
|
|
mmMain: TMainMenu;
|
|
miFile: TMenuItem;
|
|
miExit: TMenuItem;
|
|
miAbout: TMenuItem;
|
|
lbDescrip: TLabel;
|
|
sbMain: TStatusBar;
|
|
LookAndFeelController: TcxLookAndFeelController;
|
|
OpenDialog: TOpenDialog;
|
|
cxGroupBox: TcxGroupBox;
|
|
miStyle: TMenuItem;
|
|
cxGroupBox1: TcxGroupBox;
|
|
cxTreeView: TcxTreeView;
|
|
cxSplitter: TcxSplitter;
|
|
gbDescription: TcxGroupBox;
|
|
cxSplitter1: TcxSplitter;
|
|
cxHintStyleController: TcxHintStyleController;
|
|
miStyleCurrentPage: TMenuItem;
|
|
miStyleAllPages: TMenuItem;
|
|
miCurDisplayStyle: TMenuItem;
|
|
miCurDefLightBlue: TMenuItem;
|
|
miCurDefLightGray: TMenuItem;
|
|
miCurDefWood: TMenuItem;
|
|
miCurHintStyle: TMenuItem;
|
|
miDefDisplayStyle: TMenuItem;
|
|
miDefHintStyle: TMenuItem;
|
|
miDefLightBlue: TMenuItem;
|
|
miDefLightGray: TMenuItem;
|
|
miDefWood: TMenuItem;
|
|
miHintStyleLightInfo: TMenuItem;
|
|
miHintStyleLightSlideLeft: TMenuItem;
|
|
miHintStyleBlueSlideUp: TMenuItem;
|
|
miHintStyleRoundedInfo: TMenuItem;
|
|
miCurHintStyleRoundedInfo: TMenuItem;
|
|
miCurHintStyleBlueSlideUp: TMenuItem;
|
|
miCurHintStyleLightSlideLeft: TMenuItem;
|
|
miCurHintStyleLightInfo: TMenuItem;
|
|
miFileOpen: TMenuItem;
|
|
miFileSave: TMenuItem;
|
|
N1: TMenuItem;
|
|
N2: TMenuItem;
|
|
miUltraFlat: TMenuItem;
|
|
miStandard: TMenuItem;
|
|
miFlat: TMenuItem;
|
|
miKind: TMenuItem;
|
|
miLookFeel: TMenuItem;
|
|
miNativeStyle: TMenuItem;
|
|
N3: TMenuItem;
|
|
nohints1: TMenuItem;
|
|
N4: TMenuItem;
|
|
nohints2: TMenuItem;
|
|
miCurDefRainyDay: TMenuItem;
|
|
miCurDefBrick: TMenuItem;
|
|
miCurDefDeepSea: TMenuItem;
|
|
miDefRainyDay: TMenuItem;
|
|
miDefBrick: TMenuItem;
|
|
miDefDeepSea: TMenuItem;
|
|
miCurHintStyleStandard: TMenuItem;
|
|
miHintStyleStandard: TMenuItem;
|
|
PageControl: TcxPageControl;
|
|
procedure miLookAndFeelKindClick(Sender: TObject);
|
|
procedure miNativeStyleClick(Sender: TObject);
|
|
procedure btnHistoryClick(Sender: TObject);
|
|
procedure miAboutClick(Sender: TObject);
|
|
procedure miExitClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure cxTreeViewChange(Sender: TObject; Node: TTreeNode);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure miHintStyleClick(Sender: TObject);
|
|
procedure miCurHintStyleClick(Sender: TObject);
|
|
procedure miCurDisplayStyleClick(Sender: TObject);
|
|
procedure miDefaultDisplayStyleClick(Sender: TObject);
|
|
procedure miFileOpenClick(Sender: TObject);
|
|
procedure miFileSaveClick(Sender: TObject);
|
|
procedure nohints2Click(Sender: TObject);
|
|
procedure PageControlChange(Sender: TObject);
|
|
private
|
|
FDefaultHintStyle: Boolean;
|
|
FDefaultDisplayStyle: Boolean;
|
|
FCurrentDisplayStyle: TcxStyleSheetType;
|
|
procedure AdjustDescriptionsPageControl;
|
|
procedure SetNoHintStyle;
|
|
procedure SetStandardHintStyle;
|
|
procedure UncheckMenuItems(AItems: TMenuItem);
|
|
procedure UpdateFileNameStatusPanel(AFileName: string);
|
|
procedure FillTreeViewItems;
|
|
procedure SetLightInfoHintStyle;
|
|
procedure SetLightSlideLeftHintStyle;
|
|
procedure SetBlueSlideUpHintStyle;
|
|
procedure SetRoundedInfoHintStyle;
|
|
procedure SetHintStyle(AHintType: TcxHintType);
|
|
procedure AdjustFileMenu;
|
|
public
|
|
property DefaultHintStyle: Boolean read FDefaultHintStyle write FDefaultHintStyle;
|
|
property DefaultDisplayStyle: Boolean read FDefaultDisplayStyle write FDefaultDisplayStyle;
|
|
end;
|
|
|
|
var
|
|
EditorsStylesDemoDemoMainForm: TEditorsStylesDemoDemoMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
dxUxTheme, AboutDemoForm;
|
|
|
|
var
|
|
ActiveFrame: TEditorsStylesDemoBaseFrame;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.btnHistoryClick(Sender: TObject);
|
|
var
|
|
AMenuItem: TMenuItem;
|
|
begin
|
|
AMenuItem := TcxButton(Sender).DropDownMenu.Items[0];
|
|
AMenuItem.OnClick(AMenuItem);
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miAboutClick(Sender: TObject);
|
|
begin
|
|
ShowAboutDemoForm;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miExitClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
AdjustDescriptionsPageControl;
|
|
FillTreeViewItems;
|
|
cxTreeView.Items.GetFirstNode.Expand(True);
|
|
cxTreeView.Items.GetFirstNode.Selected := True;
|
|
cxTreeViewChange(Sender, cxTreeView.Items.GetFirstNode);
|
|
FDefaultHintStyle := False;
|
|
FDefaultDisplayStyle := False;
|
|
FCurrentDisplayStyle := shtLightBlue;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.cxTreeViewChange(Sender: TObject;
|
|
Node: TTreeNode);
|
|
|
|
procedure ClickCorrespondingHintMenuItem(AHintType: TcxHintType;
|
|
ADefaultHintStyle: Boolean);
|
|
var
|
|
AMenuItem: TMenuItem;
|
|
begin
|
|
if not ADefaultHintStyle then
|
|
begin
|
|
if AHintType = hcstNoHint then
|
|
AMenuItem := miCurHintStyle[Integer(AHintType) + 1]
|
|
else
|
|
AMenuItem := miCurHintStyle[Integer(AHintType)];
|
|
AMenuItem.OnClick(AMenuItem);
|
|
end;
|
|
end;
|
|
|
|
procedure AdjustFrameDisplayStyle(AFrame: TEditorsStylesDemoBaseFrame;
|
|
ADefaultDisplayStyle: Boolean);
|
|
begin
|
|
if ADefaultDisplayStyle then
|
|
ActiveFrame.ChangeDisplayStyle(FCurrentDisplayStyle)
|
|
else
|
|
begin
|
|
miCurDisplayStyle.Items[Integer(AFrame.DisplayStyle)].Checked := True;
|
|
AFrame.DisplayStyle := AFrame.DisplayStyle;
|
|
end;
|
|
end;
|
|
|
|
procedure AdjustFileNameStatusPanel;
|
|
begin
|
|
sbMain.Panels[1].Text := ExtractFileName(ActiveFrame.FileName);
|
|
end;
|
|
|
|
procedure AdjustNotePane(AFrame: TEditorsStylesDemoBaseFrame);
|
|
begin
|
|
gbDescription.Color := AFrame.GetStyleBackgroundColor;
|
|
gbDescription.CaptionBkColor := AFrame.GetStyleBackgroundColor;
|
|
end;
|
|
var
|
|
AFrame: TEditorsStylesDemoBaseFrame;
|
|
AControlClassName: string;
|
|
begin
|
|
AControlClassName := '';
|
|
if Node <> nil then
|
|
begin
|
|
if Node.Parent <> nil then
|
|
begin
|
|
AControlClassName := Node.Text;
|
|
Node := Node.Parent;
|
|
end;
|
|
AFrame := TEditorsStylesDemoBaseFrame(Node.Data);
|
|
if (ActiveFrame <> nil) then
|
|
ActiveFrame.Flickering := False;
|
|
if (AFrame <> nil) and (AControlClassName <> '') then
|
|
AFrame.FlickerControls(AControlClassName);
|
|
if ActiveFrame <> AFrame then
|
|
begin
|
|
if (ActiveFrame <> nil) and (AFrame <> nil) then
|
|
begin
|
|
ActiveFrame.Visible := False;
|
|
ActiveFrame.Parent := nil;
|
|
end;
|
|
ActiveFrame := AFrame;
|
|
ActiveFrame.Parent := cxGroupBox;
|
|
ActiveFrame.Visible := True;
|
|
ClickCorrespondingHintMenuItem(ActiveFrame.HintStyle, DefaultHintStyle);
|
|
AdjustFrameDisplayStyle(ActiveFrame, DefaultDisplayStyle);
|
|
AdjustFileMenu;
|
|
AdjustNotePane(AFrame);
|
|
PageControl.ActivePage := PageControl.Pages[Node.Index];
|
|
AdjustFileNameStatusPanel;
|
|
miStyle.Visible := AFrame.StyleMenuVisible;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.FillTreeViewItems;
|
|
var
|
|
I: Integer;
|
|
ANode: TTreeNode;
|
|
AStrings: TStringList;
|
|
|
|
procedure AddChildNodes(AExtEditorTypes: TcxExtEditorTypes);
|
|
var
|
|
J: Integer;
|
|
begin
|
|
cxGetEditorsNamesListByTypes(AStrings, AExtEditorTypes);
|
|
for J := 0 to AStrings.Count - 1 do
|
|
cxTreeView.Items.AddChild(ANode, AStrings[J]);
|
|
ANode.AlphaSort;
|
|
end;
|
|
|
|
begin
|
|
cxTreeView.Items.Clear;
|
|
AStrings := TStringList.Create;
|
|
for I := 0 to EditorsStylesDemoFrameManager.FramesCount - 1 do
|
|
begin
|
|
EditorsStylesDemoFrameManager[I].OnFileNameChanged := UpdateFileNameStatusPanel;
|
|
ANode := cxTreeView.Items.AddChildObject(
|
|
nil, EditorsStylesDemoFrameManager[I].Name, EditorsStylesDemoFrameManager[I]);
|
|
AddChildNodes(EditorsStylesDemoFrameManager[I].GetExtEditorTypes(EditorsStylesDemoFrameManager[I]));
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
ActiveFrame.Close;
|
|
ActiveFrame.Parent := nil;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetBlueSlideUpHintStyle;
|
|
begin
|
|
if not ShowHint then ShowHint := True;
|
|
with cxHintStyleController do
|
|
begin
|
|
HintStyle.Standard := False;
|
|
HintStyle.Animate := cxhaSlideUpward;
|
|
HintStyle.Color := 15580039;
|
|
HintStyle.Font.Color := 11353897;
|
|
HintStyle.Font.Height := -13;
|
|
HintStyle.Font.Style := [];
|
|
HintStyle.IconType := cxhiCustom;
|
|
HintStyle.IconSize := cxisDefault;
|
|
HintStyle.Rounded := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetLightInfoHintStyle;
|
|
begin
|
|
if not ShowHint then ShowHint := True;
|
|
with cxHintStyleController do
|
|
begin
|
|
HintStyle.Standard := False;
|
|
HintStyle.Animate := cxhaFadeIn;
|
|
HintStyle.Color := clInfoBk;
|
|
HintStyle.Font.Color := clBlack;
|
|
HintStyle.Font.Height := -11;
|
|
HintStyle.Font.Style := [];
|
|
HintStyle.IconType := cxhiInformation;
|
|
HintStyle.IconSize := cxisDefault;
|
|
HintStyle.Rounded := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetLightSlideLeftHintStyle;
|
|
begin
|
|
if not ShowHint then ShowHint := True;
|
|
with cxHintStyleController do
|
|
begin
|
|
HintStyle.Standard := False;
|
|
HintStyle.Animate := cxhaSlideFromLeft;
|
|
HintStyle.Color := $00EDCBB6;
|
|
HintStyle.Font.Color := clBlack;
|
|
HintStyle.Font.Height := -13;
|
|
HintStyle.Font.Style := [];
|
|
HintStyle.IconType := cxhiCurrentApplication;
|
|
HintStyle.IconSize := cxisSmall;
|
|
HintStyle.Rounded := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetRoundedInfoHintStyle;
|
|
begin
|
|
if not ShowHint then ShowHint := True;
|
|
with cxHintStyleController do
|
|
begin
|
|
HintStyle.Standard := False;
|
|
HintStyle.Animate := cxhaFadeIn;
|
|
HintStyle.Color := clInfoBk;
|
|
HintStyle.Font.Color := clBlack;
|
|
HintStyle.Font.Height := -11;
|
|
HintStyle.Font.Style := [];
|
|
HintStyle.IconType := cxhiInformation;
|
|
HintStyle.IconSize := cxisDefault;
|
|
HintStyle.Rounded := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.AdjustDescriptionsPageControl;
|
|
var
|
|
I: Integer;
|
|
APage: TcxTabSheet;
|
|
begin
|
|
for I := 0 to EditorsStylesDemoFrameManager.FramesCount - 1 do
|
|
begin
|
|
APage := TcxTabSheet.Create(PageControl);
|
|
APage.PageControl := PageControl;
|
|
APage.Caption := EditorsStylesDemoFrameManager[I].BriefName;
|
|
EditorsStylesDemoFrameManager[I].pnlDescription.Parent := APage;
|
|
EditorsStylesDemoFrameManager[I].pnlDescription.Visible := True;
|
|
EditorsStylesDemoFrameManager[I].pnlDescription.Align := alClient;
|
|
EditorsStylesDemoFrameManager[I].memDescrip.Properties.WordWrap := True;
|
|
APage.ImageIndex := APage.TabIndex;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetNoHintStyle;
|
|
begin
|
|
ShowHint := False;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetStandardHintStyle;
|
|
begin
|
|
if not ShowHint then ShowHint := True;
|
|
cxHintStyleController.HintStyle.Standard := True;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.SetHintStyle(AHintType: TcxHintType);
|
|
begin
|
|
case AHintType of
|
|
hcstLightInfo:
|
|
SetLightInfoHintStyle;
|
|
hcstLightSlideLeft:
|
|
SetLightSlideLeftHintStyle;
|
|
hcstBlueSlideUp:
|
|
SetBlueSlideUpHintStyle;
|
|
hcstRoundedInfo:
|
|
SetRoundedInfoHintStyle;
|
|
hcstStandard:
|
|
SetStandardHintStyle;
|
|
hcstNoHint:
|
|
SetNoHintStyle;
|
|
else
|
|
SetLightInfoHintStyle;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miHintStyleClick(
|
|
Sender: TObject);
|
|
begin
|
|
DefaultHintStyle := True;
|
|
UncheckMenuItems(miCurHintStyle);
|
|
TMenuItem(Sender).Checked := True;
|
|
SetHintStyle(TcxHintType(TMenuItem(Sender).Tag));
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.UncheckMenuItems(AItems: TMenuItem);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to AItems.Count - 1 do
|
|
AItems[I].Checked := False;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miCurHintStyleClick(
|
|
Sender: TObject);
|
|
begin
|
|
DefaultHintStyle := False;
|
|
UncheckMenuItems(miDefHintStyle);
|
|
TMenuItem(Sender).Checked := True;
|
|
ActiveFrame.HintStyle := TcxHintType(TMenuItem(Sender).Tag);
|
|
SetHintStyle(TcxHintType(TMenuItem(Sender).Tag));
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miCurDisplayStyleClick(Sender: TObject);
|
|
begin
|
|
TMenuItem(Sender).Checked := True;
|
|
UncheckMenuItems(miDefDisplayStyle);
|
|
DefaultDisplayStyle := False;
|
|
ActiveFrame.DisplayStyle := TcxStyleSheetType(TMenuItem(Sender).Tag);
|
|
gbDescription.Color := ActiveFrame.GetStyleBackgroundColor;
|
|
gbDescription.CaptionBkColor := ActiveFrame.GetStyleBackgroundColor;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miDefaultDisplayStyleClick(Sender: TObject);
|
|
begin
|
|
TMenuItem(Sender).Checked := True;
|
|
UncheckMenuItems(miCurDisplayStyle);
|
|
DefaultDisplayStyle := True;
|
|
FCurrentDisplayStyle := TcxStyleSheetType(TMenuItem(Sender).Tag);
|
|
ActiveFrame.ChangeDisplayStyle(TcxStyleSheetType(TMenuItem(Sender).Tag));
|
|
gbDescription.Color := ActiveFrame.GetStyleBackgroundColor;
|
|
gbDescription.CaptionBkColor := ActiveFrame.GetStyleBackgroundColor;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miFileOpenClick(Sender: TObject);
|
|
begin
|
|
ActiveFrame.OpenFile(Self);
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miFileSaveClick(Sender: TObject);
|
|
begin
|
|
ActiveFrame.SaveFile(Self);
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.AdjustFileMenu;
|
|
begin
|
|
miFileOpen.Visible := ActiveFrame.MenuOpenFileVisible;
|
|
miFileSave.Visible := ActiveFrame.MenuSaveFileVisible;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.UpdateFileNameStatusPanel(
|
|
AFileName: string);
|
|
begin
|
|
sbMain.Panels[1].Text := ExtractFileName(AFileName);
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miLookAndFeelKindClick(Sender: TObject);
|
|
begin
|
|
LookAndFeelController.Kind := TcxLookAndFeelKind(TMenuItem(Sender).MenuIndex);
|
|
(Sender as TMenuItem).Checked := True;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.miNativeStyleClick(Sender: TObject);
|
|
begin
|
|
with LookAndFeelController do
|
|
begin
|
|
NativeStyle := not NativeStyle;
|
|
(Sender as TMenuItem).Checked := NativeStyle;
|
|
end;
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.nohints2Click(Sender: TObject);
|
|
begin
|
|
DefaultHintStyle := True;
|
|
UncheckMenuItems(miCurHintStyle);
|
|
TMenuItem(Sender).Checked := True;
|
|
SetHintStyle(TcxHintType(TMenuItem(Sender).Tag));
|
|
end;
|
|
|
|
procedure TEditorsStylesDemoDemoMainForm.PageControlChange(Sender: TObject);
|
|
var
|
|
APageIndex: Integer;
|
|
begin
|
|
APageIndex := PageControl.ActivePage.TabIndex;
|
|
if APageIndex <> -1 then
|
|
gbDescription.Caption := EditorsStylesDemoFrameManager[APageIndex].Description;
|
|
end;
|
|
|
|
end.
|