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

📄 ksskinreg.pas

📁 小区水费管理系统源代码水费收费管理系统 水费收费管理系统
💻 PAS
字号:
{==============================================================================

  SkinEngine's Menus
  Copyright (C) 2000-2002 by Evgeny Kryukov
  All rights reserved

  All conTeThements of this file and all other files included in this archive
  are Copyright (C) 2002 Evgeny Kryukov. Use and/or distribution of
  them requires acceptance of the License Agreement.

  See License.txt for licence information

  $Id: KsSkinReg.pas,v 1.2 2002/08/14 19:03:12 Evgeny Exp $

===============================================================================}

unit KsSkinReg;

{$I se_define.inc}
{$T-,W-,X+,P+}

interface

uses
  Dialogs, Forms, Classes, SysUtils, Controls,
  {$IFDEF KS_COMPILER6_UP} DesignIntf, DesignEditors {$ELSE} DsgnIntf {$ENDIF};

procedure Register;

implementation {===============================================================}

uses KsSkinVersion, KsSkinForms, KsSkinEngine, KsSkinItems, KsSkinMenus,
  KsSkinButtons, KsSkinCheckBoxs, KsSkinProgress, KsSkinTrackBars, KsSkinPanels,
  KsSkinGroupBoxs, KsSkinScrollBars, KsSkinTabs, KsSkinComboBoxs, KsSkinEdits,
  KsSkinHints, KsSkinListBoxs, KsSkinSpeedButtons, KsSkinSpinButtons,
  KsSkinGrids, KsSkinControlBars, KsSkinToolBars, KsSkinSource,
  KsSkinLabels, KsSkinMessages, ksskinheader, ksskinstatusbar,
  KsSkininplaceedit, ksskinspinedit, ksskinstdcontrol, ksskinsplitter,
  se_controls, se_convert, se_designer;

type

{ TSeSkinStoreProperty }

  TSeSkinStoreProperty = class(TPropertyEditor)
  private
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
  end;

procedure TSeSkinStoreProperty.Edit;
var
  OpenDialog: TOpenDialog;
begin
  { Execute editor }
  OpenDialog := TOpenDialog.Create(Application);
  OpenDialog.Filter := GetDialogFilter;
  try
    if OpenDialog.Execute then
    begin
      TSeSkinEngine(GetComponent(0)).SkinSource.LoadFromFile(OpenDialog.FileName);
      TSeSkinEngine(GetComponent(0)).SkinFile := '';
    end;
    Modified;
  finally
    OpenDialog.Free;
  end;
end;

function TSeSkinStoreProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paDialog];
end;

function TSeSkinStoreProperty.GetValue: string;
begin
  if TSeSkinEngine(GetComponent(0)).SkinSource.Count > 0 then
    Result := '('+TSeSkinEngine(GetComponent(0)).SkinSource.SkinName+')'
  else
    Result := '(Emtpy)'
end;

{ Converter }

type

  TSeCompConverter = class(TDefaultEditor)
  public
    procedure Edit; override;
    procedure ExecuteVerb (Index: Integer); override;
    function GetVerb (Index: Integer): String; override;
    function GetVerbCount: Integer; override;
  end;

procedure TSeCompConverter.Edit;
var
  C: TfrmConvertForm;
  SkinEngine: TSeSkinEngine;
begin
  if Assigned(Component) then
  begin
    C := TfrmConvertForm.CreateForm;
    try
      { Initialization }
      C.ConvertClass := TSeConverter;
      C.ConvertForm := TCustomForm(Component.Owner);
      C.ConvertName := 'SkinEngine';
      C.InitConverter;
      { Set SkinEngine }
      SkinEngine := nil;
      if Component is TSeSkinEngine then
        SkinEngine := TSeSkinEngine(Component);
      if Component is TSeSkinForm then
        SkinEngine := TSeSkinForm(Component).SkinEngine;

      if (SkinEngine <> nil) and (C.Converter <> nil) and (C.Converter is TSeConverter) then
        TSeConverter(C.Converter).SkinEngine := SkinEngine;
      { Show }
      C.ShowModal;
    finally
      { Free }
      C.Free;
    end;
  end;
end;

procedure TSeCompConverter.ExecuteVerb (Index: Integer);
begin
  if Index = 0 then
    Edit;
end;

function TSeCompConverter.GetVerbCount: Integer;
begin
  Result := 1;
end;

function TSeCompConverter.GetVerb(Index: Integer): String;
begin
  if Index = 0 then
    Result := 'Component Converter...'
  else
    Result := '';
end; 

type

{ TSeVersionPropertyEditor }

  TSeVersionPropertyEditor = class(TPropertyEditor)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: String; override;
  end;

{ TSeVersionPropertyEditor ====================================================}

procedure TSeVersionPropertyEditor.Edit;
begin
  ShowVersion;
end;

function TSeVersionPropertyEditor.GetAttributes: TPropertyAttributes;
begin
  Result := inherited GetAttributes + [paDialog, paReadOnly];
end;

function TSeVersionPropertyEditor.GetValue: String;
begin
  Result := 'About ' + sSeSkinVersionPropText;
end;

{ Toolbar editor }

type

  TSeSkinToolbarEditor = class(TComponentEditor)
  public
    function GetVerbCount: Integer; override;
    function GetVerb( Index: Integer ): string; override;
    procedure ExecuteVerb( Index: Integer ); override;
  end;

function TSeSkinToolbarEditor.GetVerbCount: Integer;
begin
  Result := 3;
end;

function TSeSkinToolbarEditor.GetVerb(Index: Integer): string;
begin
  with Component as TSeSkinToolbar do
  begin
    case Index of
      0: Result := 'Add Button';
      1: Result := 'Add Divider';
      2: Result := 'Add Container';
    end; { case }
  end;
end;

procedure TSeSkinToolbarEditor.ExecuteVerb(Index: Integer);
var
  btnButton: TSeSkinSpeedButton;
  btnDiv: TSeSpeedDivider;
  btnCont: TSeSpeedContainer;
begin
  case Index of
    0: { Speedbutton }
    begin
      btnButton := TSeSkinSpeedButton.Create(Designer.GetRoot);
      btnButton.Name := Designer.UniqueName(btnButton.ClassName);
      btnButton.Parent := TWinControl(Component);
      btnButton.Left := 1000;
      btnButton.Top := 1000;

      Designer.SelectComponent(btnButton);
    end;
    1: { Divider }
    begin
      btnDiv := TSeSpeedDivider.Create(Designer.GetRoot);
      btnDiv.Name := Designer.UniqueName(btnDiv.ClassName);
      btnDiv.Parent := TWinControl(Component);
      btnDiv.Left := 1000;
      btnDiv.Top := 1000;

      Designer.SelectComponent(btnDiv);
    end;
    2: { Container }
    begin
      btnCont := TseSpeedContainer.Create(Designer.GetRoot);
      btnCont.Name := Designer.UniqueName(btnCont.ClassName);
      btnCont.Parent := TWinControl(Component);
      btnCont.Left := 1000;
      btnCont.Top := 1000;

      Designer.SelectComponent(btnCont);
    end;
  end;

  if Component is TSeSkinToolbar then
    TSeSkinToolbar(Component).Realign;

  Designer.Modified;
end;

{ Register classes ============================================================}

procedure Register;
begin
  RegisterComponents('SkinEngine', [TSeSkinEngine, TSeSkinForm,  
    TSeSkinMenuBar, TSeSkinPopupMenu, TSeSkinLabel, TSeSkinButton, TSeSkinCheckBox,
    TSeSkinRadioButton, TSeSkinProgressBar, TSeSkinTrackBar, TSeSkinPanel,
    TSeSkinGroupBox, TSeSkinScrollBar, TSeSkinTabControl, TSeSkinPageControl,
    TSeSkinComboBox, TSeSkinEdit, TSeSkinListBox, TSeSkinSpeedButton,
    TSeSkinSpinButton, TSeSkinHint, TSeSkinMessage, TSeSkinRadioGroup,
    TSeSkinControlBar, TSeSkinToolBar, TSeSkinDrawGrid, TSeSkinStringGrid,
    TSeSkinHeaderControl, TSeSkinStatusBar, TSeSkinSpinEdit, TSeSkinSplitter,
    TSeSkinEditButton, TSeSkinMaskEdit, TSeSkinMemo, TSeSkinScrollBox,
    TSeSkinSTreeView, TSeSkinSListView]);

  RegisterNoIcon([TSeSkinItem]);

  { Version }
  RegisterPropertyEditor(TypeInfo(TSeSkinVersion), nil, '', TSeVersionPropertyEditor);
  { Converter }
  RegisterComponentEditor(TSeSkinForm, TSeCompConverter);
  RegisterComponentEditor(TSeSkinEngine, TSeCompConverter);
  { Toolbar Editors }
  RegisterComponentEditor(TSeSkinToolbar, TSeSkinToolbarEditor);
  { Menu item }
  RegisterComponentEditor(TSeCustomPopupMenu, TSePopupMenuEditor);
  RegisterComponentEditor(TSeCustomMenuBar, TSeMenuBarEditor);
  RegisterPropertyEditor(TypeInfo(TSeCustomItem), nil, '', TSeItemsPropertyEditor);
  RegisterPropertyEditor(TypeInfo(TSeSkinItem), nil, '', TSeItemsPropertyEditor);
  { Skin store }
  RegisterPropertyEditor(TypeInfo(String), TSeSkinEngine, 'SkinStore', TSeSkinStoreProperty);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -