📄 ksskinreg.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 + -