📄 icomponenteditorthemepanel.pas
字号:
{*******************************************************}
{ }
{ TiComponentEditorThemePanel Component }
{ }
{ Copyright (c) 1997,2003 Iocomp Software }
{ }
{*******************************************************}
{$I iInclude.inc}
{$ifdef iVCL}unit iComponentEditorThemePanel;{$endif}
{$ifdef iCLX}unit QiComponentEditorThemePanel;{$endif}
interface
uses
{$I iIncludeUses.inc}
{$IFDEF MSWINDOWS}Registry,{$ENDIF}
{$IFDEF LINUX} IniFiles,{$ENDIF}
{$IFDEF iVCL} iTypes, iGPFunctions, iClasses, iEditorBasicComponents;{$ENDIF}
{$IFDEF iCLX} QiTypes, QiGPFunctions, QiClasses, QiEditorBasicComponents;{$ENDIF}
const
UserFileSuffix = 'User.xml';
IocompFileSuffix = '.xml';
DeleteSchemeMessage = 'Are you sure you want to permanentely delete this scheme entry?';
XMLFileExceptionMessage = 'Error Loading Scheme. XML File Malformed';
UserThemeOpenErrorMessage = 'Error Reading User-Defined Theme Settings';
IocompThemeOpenErrorMessage = 'Error Reading Pre-Defined Theme Settings';
IocompThemeSaveErrorMessage = 'Error Saving User-Defined Theme Settings';
NoNameEnteredErrorMessage = 'No name was entered. Aborting Save.';
CleanSchemesMessage = 'Are you sure you want to clean this scheme of missing/erroneous properties?';
CleanAllSchemesMessage = 'Are you sure you want to clean ALL SCHEMES of missing/erroneous properties?';
AcceptChangesNotAssignedEM = 'OnAcceptChanges event not assigned. Scheme clean aborted.';
SchemeComboWidth = 184;
ButtonOffset = 3;
SchemeOffset = 39;
SquareOffset = 2;
SquareSize = 10;
type
TiThemeComboBox = class(TComboBox)
protected
procedure Change; override;
procedure DoEnter; override;
{$IFDEF COMPILER_6_UP}procedure CloseUp; override;{$ENDIF}
{$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override; {$endif}
end;
TiComponentEditorThemePanel = class(TCustomControl)
private
FCreationComplete : Boolean;
FAcceptPreviewButton : TiComponentEditorButton;
FPreviewErrorLabel1 : TLabel;
FPreviewErrorLabel2 : TLabel;
FScheme1Combo : TiThemeComboBox;
FScheme2Combo : TiThemeComboBox;
FScheme3Combo : TiThemeComboBox;
FScheme4Combo : TiThemeComboBox;
FScheme5Combo : TiThemeComboBox;
FScheme1ComboLabel : TLabel;
FScheme2ComboLabel : TLabel;
FScheme3ComboLabel : TLabel;
FScheme4ComboLabel : TLabel;
FScheme5ComboLabel : TLabel;
FScheme1AddButton : TiComponentEditorButton;
FScheme2AddButton : TiComponentEditorButton;
FScheme3AddButton : TiComponentEditorButton;
FScheme4AddButton : TiComponentEditorButton;
FScheme5AddButton : TiComponentEditorButton;
FScheme1DeleteButton : TiComponentEditorButton;
FScheme2DeleteButton : TiComponentEditorButton;
FScheme3DeleteButton : TiComponentEditorButton;
FScheme4DeleteButton : TiComponentEditorButton;
FScheme5DeleteButton : TiComponentEditorButton;
FPreviewGroupBox : TiComponentEditorGroupBox;
FPreviewScrollBox : TScrollBox;
FSchemeFound : Boolean;
FLegendLabel : TLabel;
FPreDefinedLabel : TLabel;
FUserDefinedLabel : TLabel;
FPreDefinedShape : TShape;
FUserDefinedShape : TShape;
FScheme1PropertyNames : TStringList;
FScheme2PropertyNames : TStringList;
FScheme3PropertyNames : TStringList;
FScheme4PropertyNames : TStringList;
FScheme5PropertyNames : TStringList;
FScheme1TypeList : TStringList;
FScheme2TypeList : TStringList;
FScheme3TypeList : TStringList;
FScheme4TypeList : TStringList;
FScheme5TypeList : TStringList;
FiComponentPreview : TWinControl;
FScheme1EnableModify : Boolean;
FScheme2EnableModify : Boolean;
FScheme3EnableModify : Boolean;
FScheme4EnableModify : Boolean;
FScheme5EnableModify : Boolean;
FScheme1IsOverall : Boolean;
FScheme2IsOverall : Boolean;
FScheme3IsOverall : Boolean;
FScheme4IsOverall : Boolean;
FScheme5IsOverall : Boolean;
FScheme1Show : Boolean;
FScheme2Show : Boolean;
FScheme3Show : Boolean;
FScheme4Show : Boolean;
FScheme5Show : Boolean;
FScheme1Title : String;
FScheme2Title : String;
FScheme3Title : String;
FScheme4Title : String;
FScheme5Title : String;
FSchemeCount : Integer;
FAutoAcceptPreview : Boolean;
FOnAcceptChanges : TNotifyEvent;
FAutoCenterLargeComponent : Boolean;
procedure ClearAllSchemes;
procedure SetiComponentPreview (const Value: TWinControl);
procedure SetScheme1PropertyNames (const Value: TStringList);
procedure SetScheme2PropertyNames (const Value: TStringList);
procedure SetScheme3PropertyNames (const Value: TStringList);
procedure SetScheme4PropertyNames (const Value: TStringList);
procedure SetScheme5PropertyNames (const Value: TStringList);
procedure SetScheme1Show (const Value: Boolean);
procedure SetScheme2Show (const Value: Boolean);
procedure SetScheme3Show (const Value: Boolean);
procedure SetScheme4Show (const Value: Boolean);
procedure SetScheme5Show (const Value: Boolean);
procedure SetScheme1Title (const Value: String);
procedure SetScheme2Title (const Value: String);
procedure SetScheme3Title (const Value: String);
procedure SetScheme4Title (const Value: String);
procedure SetScheme5Title (const Value: String);
procedure Scheme1ComboChange (Sender: TObject);
procedure Scheme2ComboChange (Sender: TObject);
procedure Scheme3ComboChange (Sender: TObject);
procedure Scheme4ComboChange (Sender: TObject);
procedure Scheme5ComboChange (Sender: TObject);
procedure Scheme1ComboDropDown (Sender: TObject);
procedure Scheme2ComboDropDown (Sender: TObject);
procedure Scheme3ComboDropDown (Sender: TObject);
procedure Scheme4ComboDropDown (Sender: TObject);
procedure Scheme5ComboDropDown (Sender: TObject);
procedure SetScheme1EnableModify (const Value: Boolean);
procedure SetScheme2EnableModify (const Value: Boolean);
procedure SetScheme3EnableModify (const Value: Boolean);
procedure SetScheme4EnableModify (const Value: Boolean);
procedure SetScheme5EnableModify (const Value: Boolean);
procedure Scheme1AddButtonClick (Sender: TObject);
procedure Scheme2AddButtonClick (Sender: TObject);
procedure Scheme3AddButtonClick (Sender: TObject);
procedure Scheme4AddButtonClick (Sender: TObject);
procedure Scheme5AddButtonClick (Sender: TObject);
procedure Scheme1DeleteButtonClick(Sender: TObject);
procedure Scheme2DeleteButtonClick(Sender: TObject);
procedure Scheme3DeleteButtonClick(Sender: TObject);
procedure Scheme4DeleteButtonClick(Sender: TObject);
procedure Scheme5DeleteButtonClick(Sender: TObject);
procedure AcceptPreviewButtonClick(Sender: TObject);
procedure LoadFromXMLFile;
function SaveToXMLFile: Boolean;
procedure ClearSelectedSchemes;
procedure SchemeComboChange (SchemeCombo: TComboBox; IsOverall: Boolean; SchemeDeleteButton: TiComponentEditorButton);
procedure SchemeAdd (SchemeCombo: TComboBox; SchemeTypeTitle: String; SchemeTypeList, SchemePropertyNames: TStringList);
procedure CreateNewScheme (SchemeName: String; SchemeList: TStringList; PropertyNameList: TStringList);
procedure SeparateNameValue (AText: String; var Name, Value: String);
function CombineNameValue (Name, Value: String): String;
function GetSchemeTypeListByName (Name: String): TStringList;
function UserSchemeNameExist (Name: String; SchemeTypeList: TStringList): Integer;
procedure LoadSchemes (FileStream: TiXMLMemoryStream; SchemeListClass: TiSchemeListClass);
procedure SaveSchemeType (Stream: TiXMLMemoryStream; SchemeTypeList: TStringList; SchemeTitle: String);
procedure GetThemePaths (var IocompPathName, UserPathName: String);
procedure TransferSchemeData (TypeList: TStringList);
procedure SetProperty (Instance: TPersistent; PropertyNameString, PropertyValueString: String);
function GetProperty (Instance: TPersistent; PropertyNameString: String): String;
function GetPropertyInfo (var Instance: TPersistent; PropertyNameString: String): PPropInfo;
{$IFDEF iVCL}procedure ComboBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState );{$ENDIF}
{$IFDEF iCLX}procedure ComboBoxDrawItem(Control: TObject; Index: Integer; Rect: TRect; State: TOwnerDrawState; var Handled: Boolean);{$ENDIF}
procedure SetAutoAcceptPreview (const Value: Boolean);
procedure OpenMaintenance(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure CleanScheme (SchemeTypeList, SchemePropertyNames: TStringList; NoConfirmation: Boolean);
protected
procedure DoEnter; override;
procedure DoResize;
procedure ScrollBoxResize(Sender: TObject);
{$IFDEF iVCL}procedure CreateParams(var Params: TCreateParams); override; {$endif}
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ResetThemePanel;
procedure ReCenterPreview;
property iComponentPreview : TWinControl read FiComponentPreview write SetiComponentPreview;
property OnAcceptChanges : TNotifyEvent read FOnAcceptChanges write FOnAcceptChanges;
procedure CleanAllSchemes();
function GetSchemeList (Index: Integer) : TStringList;
function GetSchemeName (Index: Integer) : String;
published
property Scheme1EnableModify : Boolean read FScheme1EnableModify write SetScheme1EnableModify;
property Scheme2EnableModify : Boolean read FScheme2EnableModify write SetScheme2EnableModify;
property Scheme3EnableModify : Boolean read FScheme3EnableModify write SetScheme3EnableModify;
property Scheme4EnableModify : Boolean read FScheme4EnableModify write SetScheme4EnableModify;
property Scheme5EnableModify : Boolean read FScheme5EnableModify write SetScheme5EnableModify;
property Scheme1IsOverall : Boolean read FScheme1IsOverall write FScheme1IsOverall;
property Scheme2IsOverall : Boolean read FScheme2IsOverall write FScheme2IsOverall;
property Scheme3IsOverall : Boolean read FScheme3IsOverall write FScheme3IsOverall;
property Scheme4IsOverall : Boolean read FScheme4IsOverall write FScheme4IsOverall;
property Scheme5IsOverall : Boolean read FScheme5IsOverall write FScheme5IsOverall;
property Scheme1PropertyNames : TStringList read FScheme1PropertyNames write SetScheme1PropertyNames;
property Scheme2PropertyNames : TStringList read FScheme2PropertyNames write SetScheme2PropertyNames;
property Scheme3PropertyNames : TStringList read FScheme3PropertyNames write SetScheme3PropertyNames;
property Scheme4PropertyNames : TStringList read FScheme4PropertyNames write SetScheme4PropertyNames;
property Scheme5PropertyNames : TStringList read FScheme5PropertyNames write SetScheme5PropertyNames;
property Scheme1Show : Boolean read FScheme1Show write SetScheme1Show;
property Scheme2Show : Boolean read FScheme2Show write SetScheme2Show;
property Scheme3Show : Boolean read FScheme3Show write SetScheme3Show;
property Scheme4Show : Boolean read FScheme4Show write SetScheme4Show;
property Scheme5Show : Boolean read FScheme5Show write SetScheme5Show;
property Scheme1Title : String read FScheme1Title write SetScheme1Title;
property Scheme2Title : String read FScheme2Title write SetScheme2Title;
property Scheme3Title : String read FScheme3Title write SetScheme3Title;
property Scheme4Title : String read FScheme4Title write SetScheme4Title;
property Scheme5Title : String read FScheme5Title write SetScheme5Title;
property AutoAcceptPreview : Boolean read FAutoAcceptPreview write SetAutoAcceptPreview;
property SchemeCount : Integer read FSchemeCount write FSchemeCount;
property Align default alClient;
end;
implementation
{$IFDEF iVCL}uses iComponentEditorThemePanelAddDialog, iComponentEditorThemePanelMaintenance;{$ENDIF}
{$IFDEF iCLX}uses QiComponentEditorThemePanelAddDialog, QiComponentEditorThemePanelMaintenance;{$ENDIF}
//****************************************************************************************************************************************************
constructor TiComponentEditorThemePanel.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csCaptureMouse, csClickEvents, csDoubleClicks, csReplicatable, csOpaque];
FSchemeCount := 5;
Width := 500;
Height := 250;
Align := alClient;
{$IFDEF iVCL}
Ctl3D := True;
{$ENDIF}
FScheme1Title := 'Preset Scheme';
FScheme2Title := 'Color Scheme';
FScheme3Title := 'Scheme3';
FScheme4Title := 'Scheme4';
FScheme5Title := 'Scheme5';
FScheme1Show := True;
FScheme2Show := True;
FScheme3Show := False;
FScheme4Show := False;
FScheme5Show := False;
FScheme1EnableModify := True;
FScheme2EnableModify := True;
FScheme3EnableModify := True;
FScheme4EnableModify := True;
FScheme5EnableModify := True;
FScheme1IsOverall := True;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -