⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icomponenteditorthemepanel.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{*******************************************************}
{                                                       }
{       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 + -