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

📄 winskindata.pas

📁 超级报表系统软件VclSkin.v2.60.4.29.完整源代码版.rar
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit WinSkinData;

{$WARNINGS OFF}
{$HINTS OFF}
{$RANGECHECKS OFF}

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms,
     IniFiles, Dialogs, FileCtrl,SkinRead,WinSkinStore,imgutil,ImgList;

const
  CN_SkinChanged = WM_USER + $3001;
  CN_CaptionBtnClick = WM_USER + $3104;
  CN_UPdateMainMenu = WM_USER + $3105;
  NM_COOLSB_CUSTOMDRAW = 0-$aff;
  c_version = '2.60.4.29';
  c_skintag = 33333;
type
  TWinContainer = (xccForm, xccFrame, xccToolbar, xccCoolbar, xccControlbar, xccPanel,
                  xccScrollBox, xccGroupBox, xccTabSheet, xccPageScroller);
  TWinContainers = set of TWinContainer;

  TSkinControlType = (xcMainMenu, xcPopupMenu, xcToolbar, xcControlbar, xcCombo,
                xcCheckBox, xcRadioButton,xcProgress,xcScrollbar,xcEdit,
                xcButton, xcBitBtn, xcSpeedButton, xcPanel, xcGroupBox,xcStatusBar,
                xcTab,xcSystemMenu,xcFastReport);
  TSkinControlTypes = set of TSkinControlType;

  TShemeColor=(csText,csTitleTextActive,csTitleTextNoActive,
         csButtonFace,csButtonText,
         csButtonHilight,csButtonlight,csButtonShadow,csButtonDkshadow,
         csSelectText,csSelectBg,csHilightText,csHilight,
         csMenuBar,csMenuBarText,csMenuText,csMenubg,
         csScrollbar,csTextDisable);
  TShemeColors=array[csText..csTextDisable] of Tcolor;

  TSkinFormType=(sfMainform,sfOnlyThisForm,sfDialog);

  TSkinData = class;
  TOnFormSkin  = procedure(Sender:TObject;aName:string;Var DoSkin:boolean) of object;
  TOnSkinControl = procedure(Sender: TComponent; SkinData: TSkinData; Form, Control: TControl;
                             ControlClass: String; var SkinnedControl: TComponent) of object;

  TDataSkinObject = class(TObject)
  public
    r:Trect;
    Map: TBitMap;
    trans:integer;
    Tile : integer;
    IDName :String;
    frame : integer;
    style : integer;
    Normalcolor,Overcolor,Downcolor:integer;
    Normalcolor2,Overcolor2,Downcolor2:Tcolor;
    constructor Create(AIDName: String);
    destructor Destroy; override;
  end;

  TDataSkinBorder = class(TDataSkinObject)
  public
    MaskMap: TBitMap;
    constructor Create(AIDName: String);
    destructor Destroy; override;
  end;

  TDataSkinTitle = class(TDataSkinObject)
  public
    Aligment,BackGround,FontHeight :integer;
    backleft,backright:integer;
    activetext,inactivetext:Tcolor;
  end;

  TDataSkinButton = class(TDataSkinObject)
  public
    CheckMap,RadioMap:Tbitmap;
    radioframe,checkframe:integer;
    constructor Create(AIDName: String);
    destructor Destroy; override;
  end;

  TDataSkinSysButton = class(TDataSkinObject)
  public
    Action:integer;
    Align :integer;
    XCoord,YCoord:integer;
    CombineOp:integer;
    Visibility,Visibility1 :integer;
  end;

  TSkinControlList = class(TPersistent)
  private
    Fedit: TStrings;
    fCheckbox:Tstrings;
    fRadiobutton:tStrings;
    fcombobox   :TStrings;
    procedure SetEdit(Value:Tstrings);
    procedure SetCheckbox(Value:Tstrings);
    procedure SetRadiobutton(Value:Tstrings);
    procedure Setcombobox(Value:Tstrings);
  public
    constructor Create;
    destructor Destroy; override;
  published
    property Edit: TStrings read Fedit write SetEdit;
    property Checkbox: TStrings read Fcheckbox write SetCheckbox;
    property Combobox: TStrings read Fcombobox write SetCombobox;
    property Radiobutton: TStrings read Fradiobutton write Setradiobutton;
  end;

  TSkinData = class(TComponent)
  private
    fskinfile : string;
    SkinName : string;
    ini : TIniFile;
    fMenuSideBar :Tcolor;
    ms:TMemorystream;
    factive:boolean;
    fdisableTag:integer;
    FContainers: TWinContainers;
    FSkinControls: TSkinControlTypes;
    ftype:TSkinFormType;
    fOnFormSkin:TOnFormSkin;
    fOnSkinChanged :TNotifyevent;
    FOnSkinControl: TOnSkinControl;
    FInDLL : boolean;
    f3rdControls:TStrings;
    fmenuauto : boolean;
    fversion : String;
    procedure ReadMenuBar(var aobject:TDataSkinObject;aname:string);
    procedure ReadProgress(var aobject:TDataSkinborder;aname:string);
    Procedure ReadRGB(Section,aname:string;var value:Tcolor);
    function  GetColor(const s1:string;acolor:Tcolor):Tcolor;
    procedure SetFrame;
    function GetSectionNum(asection,aname:string):integer;
    procedure WriteData (Stream : TStream);
    procedure ReadData (Stream : TStream);
    function GetSkinStore: string;
    procedure SetSkinStore(const Value: string);
    procedure CreateMdibtn(n:integer);
    procedure SetActive( Value: boolean);
    procedure InitControlList;
    procedure SetControlList(Value: TStrings);
  protected
    procedure ReadObject(var aobject:TDataskinobject;aname:string);
    procedure ReadObject2(var aobject:TDataSkinborder;aname,image2:string);
    procedure ReadButton;
    procedure ReadSysButton;
    procedure LoadFromIni(filename:string);
    procedure ReadBord;
    procedure ReadColor;
    procedure ReadTitle(aobject:TDataSkinObject;aname:string);
    procedure DefineProperties (Filer : TFiler); override;
    procedure Loaded; override;
    function LoadSkin:boolean;
    procedure UpdateSkin;
  public
    reader: TSkinReader;
    data :Tmemorystream;
    Empty : boolean;
    Colors: TShemeColors;
    ColorPreset : array of Tcolor;
    SysIcon:Tbitmap;
    Title : TDataSkinTitle;
    SysBtn : array of TDataSkinSysButton;
    Button : TDataSkinButton;
    tab,progress:Tdataskinborder;
    HSpin,VSpin:Tdataskinborder;
    Comboxborder,ExtraImages: TDataSkinObject;
    combox: Tdataskinborder;
    Box,Toolbar : TDataSkinObject;
    StatusBar: TDataSkinObject;
    Header: TDataSkinObject;
    Menubar,MenuItem,MenuitemBG : TDataSkinObject;
    SArrow,HBar,VBar,HSlider,VSlider:TDataSkinObject;
    TrackHorz,TrackVert :TDataSkinObject;
    TrackLeft,Trackright,Tracktop,Trackbottom:TDataSkinObject;
    border:array[1..4] of TDataskinborder;
    sectionlist:Tstringlist;
    BGBrush :HBRUSH;
    MenuMsg:boolean;
    bmpmenu:Timagelist;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure LoadFromFile(value:string);
    procedure LoadFromStream(Stream: TStream);
    procedure LoadFromCollection(astore:TSkinStore;aindex:integer);
    procedure Readbmp(bmp:Tbitmap;fname:string);
    function GetPrecolor(var acolor:Tcolor;n:integer):boolean;
    function GetFileName(s:string):string;
    procedure Uninstall;
    procedure Install;
    procedure DoFormSkin(aname:string;var Doskin:boolean);
    procedure DoSkinChanged;
    procedure AddNestForm(fParent,fNested:TWincontrol);
    procedure UpdateSkinControl(fParent:Tform;acontrol:Twincontrol=nil);
    procedure DeleteGraphicControl(fParent:Tform;acontrol:TGraphicControl);
    procedure UpdateMenu(fParent:Tform);
    procedure UpdateMainMenu(done:boolean);
    procedure SkinForm(ahwnd:THandle);
    procedure InstallThread(aThreadID:integer);
    procedure UnInstallThread(aThreadID:integer);
  published
    property Active : boolean read factive write setactive;
    property DisableTag:integer read fdisabletag write fdisabletag;
    property SkinControls: TSkinControlTypes read fSkinControls write fSkinControls;
    property Skin3rd: TStrings read f3rdControls write SetControllist;
    property SkinFile : String read fskinfile write LoadFromFile;
    property SkinStore: string read GetSkinStore write SetSkinStore;
    property SkinFormtype:TSkinFormType read ftype write ftype;
    property Version : string read fversion write fversion;
    property MenuUpdate: boolean read fmenuauto write fmenuauto;
//    property InDLL :boolean read findll write findll;
    property OnFormSkin :TOnFormSkin read fOnFormSkin write fOnFormSkin;
    property OnSkinChanged :TNotifyevent read fOnSkinChanged write fOnSkinChanged;
    property OnSkinControl: TOnSkinControl read FOnSkinControl write FOnSkinControl;
  end;

function RGBToColor(R,G,B:Byte): TColor;
function strcolor(s:string):Tcolor;
var  GSkinData:TSkinData;

implementation

uses Winskinform,WinSkinDlg,winsubclass;

constructor TSkinControlList.Create;
begin
    inherited create;
    fedit := TStringList.create;
    fCombobox := TStringList.create;
    fcheckbox := TStringList.create;
    fradiobutton := TStringList.create;
end;

procedure TSkinData.InitControlList;
begin
    f3rdControls.add('TTBDock=Panel');
    f3rdControls.add('TTBToolbar=Panel');

    f3rdControls.add('TImageEnMView=scrollbar');
    f3rdControls.add('TImageEnView=scrollbar');

    f3rdControls.add('TRzButton=button');
    f3rdControls.add('TRzCheckGroup=CheckGroup');
    f3rdControls.add('TRzRadioGroup=Radiogroup');
    f3rdControls.add('TRzRadioButton=Radiobutton');
    f3rdControls.add('TRzCheckBox=Checkbox');
    f3rdControls.add('TRzButtonEdit=Edit');
    f3rdControls.add('TRzDBRadioGroup=Radiogroup');
    f3rdControls.add('TRzDBRadioButton=Radiobutton');
    f3rdControls.add('TRzDBCheckBox=Checkbox');

    f3rdControls.add('TDBCheckboxEh=Checkbox');
    f3rdControls.add('TDBCheckboxEh=Checkbox');
    f3rdControls.add('TLMDCHECKBOX=Checkbox');
    f3rdControls.add('TLMDDBCHECKBOX=Checkbox');

    f3rdControls.add('TLMDRadiobutton=Radiobutton');

    f3rdControls.add('TLMDGROUPBOX=Panel');
    f3rdControls.add('TLMDSIMPLEPANEL=Panel');
    f3rdControls.add('TLMDDBCalendar=Panel');
    f3rdControls.add('TLMDButtonPanel=Panel');
    f3rdControls.add('TLMDLMDCalculator=Panel');
    f3rdControls.add('TLMDHeaderPanel=Panel');
    f3rdControls.add('TLMDTechnicalLine=Panel');
    f3rdControls.add('TLMDLMDClock=Panel');

    f3rdControls.add('TLMDTrackbar=trackbar');

    f3rdControls.add('TLMDListCombobox=combobox');
    f3rdControls.add('TLMDCheckListCombobox=combobox');
    f3rdControls.add('TLMDHeaderListCombobox=combobox');
    f3rdControls.add('TLMDImageCombobox=combobox');
    f3rdControls.add('TLMDColorCombobox=combobox');
    f3rdControls.add('TLMDFontCombobox=combobox');
    f3rdControls.add('TLMDFontSizeCombobox=combobox');
    f3rdControls.add('TLMDFontSizeCombobox=combobox');
    f3rdControls.add('TLMDPrinterCombobox=combobox');
    f3rdControls.add('TLMDDriveCombobox=combobox');
    f3rdControls.add('TLMDCalculatorComboBox=combobox');
    f3rdControls.add('TLMDTrackBarComboBox=combobox');
    f3rdControls.add('TLMDCalendarComboBox=combobox');

    f3rdControls.add('TLMDRADIOGROUP=radiogroup');
    f3rdControls.add('TLMDCheckGroup=CheckGroup');
    f3rdControls.add('TLMDDBRADIOGROUP=radiogroup');
    f3rdControls.add('TLMDDBCheckGroup=CheckGroup');

    f3rdControls.add('TLMDEDIT=Edit');
    f3rdControls.add('TLMDMASKEDIT=Edit');
    f3rdControls.add('TLMDBROWSEEDIT=Edit');
    f3rdControls.add('TLMDEXTSPINEDIT=Edit');
    f3rdControls.add('TLMDCALENDAREDIT=Edit');
    f3rdControls.add('TLMDFILEOPENEDIT=Edit');
    f3rdControls.add('TLMDFILESAVEEDIT=Edit');
    f3rdControls.add('TLMDCOLOREDIT=Edit');

    f3rdControls.add('TLMDDBEDIT=Edit');
    f3rdControls.add('TLMDDBMASKEDIT=Edit');
    f3rdControls.add('TLMDDBEXTSPINEDIT=Edit');
    f3rdControls.add('TLMDDBSPINEDIT=Edit');
    f3rdControls.add('TLMDDBEDITDBLookup=Edit');
    f3rdControls.add('TLMDEDITDBLookup=Edit');

    //combobox
    f3rdControls.add('TDBLookupCombobox=Combobox');
    f3rdControls.add('TWWDBCombobox=Combobox');
    f3rdControls.add('TWWDBLookupCombo=Combobox');
    f3rdControls.add('TWWDBCombobox=Combobox');
    f3rdControls.add('TWWKeyCombo=Combobox') ;
    f3rdControls.add('TWWTempKeyCombo=combobox');
    f3rdControls.add('TWWDBDateTimePicker=Combobox');

    f3rdControls.add('TWWRADIOGROUP=radiogroup');

    f3rdControls.add('TDXDBPICKEDIT=Combobox');
    f3rdControls.add('TDXDBCALCEDIT=Combobox');
    f3rdControls.add('TDXDBIMAGEEDIT=Combobox');
    f3rdControls.add('TDXDBPOPUPEDIT=Combobox');
    f3rdControls.add('TDXDBEXTLOOKUPEDIT=Combobox');
    f3rdControls.add('TDXDBLOOKUPEDIT=Combobox');
    f3rdControls.add('TDXDBDATEEDIT=Combobox');
    f3rdControls.add('TDXDATEEDIT=Combobox');
    f3rdControls.add('TDXPICKEDIT=Combobox');
    f3rdControls.add('TDXPOPUPEDIT=Combobox');
    //edit
    f3rdControls.add('TDXDBCURRENCYEDIT=Edit');
    f3rdControls.add('TDXDBEDIT=Edit');
    f3rdControls.add('TDXDBMASKEDIT=Edit');
    f3rdControls.add('TDXDBHYPERLINKEDIT=Edit');
    f3rdControls.add('TDXEDIT=Edit');
    f3rdControls.add('TDXMASKEDIT=Edit');
    f3rdControls.add('TWWDBEDIT=Edit');
    f3rdControls.add('TDXBUTTONEDIT=Edit');
    f3rdControls.add('TDXCURRENCYEDIT=Edit');
    f3rdControls.add('TDXHYPERLINKEDIT=Edit');

    f3rdControls.add('TOVCPICTUREFIELD=Edit');
    f3rdControls.add('TOVCDBPICTUREFIELD=Edit');
    f3rdControls.add('TOVCSLIDEREDIT=Edit');
    f3rdControls.add('TOVCDBSLIDEREDIT=Edit');
    f3rdControls.add('TOVCSIMPLEFIELD=Edit');
    f3rdControls.add('TOVCDBSIMPLEFIELD=Edit');
    f3rdControls.add('TO32DBFLEXEDIT=Edit');
    f3rdControls.add('TOVCNUMERICFIELD=Edit');
    f3rdControls.add('TOVCDBNUMERICFIELD=Edit');
end;

destructor TSkinControlList.Destroy;
begin
    fedit.free;
    fcombobox.free;
    fradiobutton.free;
    fcheckbox.free;
    inherited destroy;
end;

procedure TSkinControlList.SetEdit(Value: TStrings);
begin
  FEdit.Assign(Value);
end;

procedure TSkinControlList.SetCheckbox(Value: TStrings);
begin
  Fcheckbox.Assign(Value);
end;

procedure TSkinControlList.Setradiobutton(Value: TStrings);
begin
  Fradiobutton.Assign(Value);
end;

procedure TSkinControlList.SetCombobox(Value: TStrings);
begin
  FCombobox.Assign(Value);
end;

constructor TDataSkinObject.Create(AIDName: String);
begin
    inherited create;
    Map:=Tbitmap.create;
    Idname:=aidname;
end;

destructor TDataSkinObject.Destroy;
begin
    map.assign(nil);
    Map.free;
    inherited destroy;
end;

constructor TDataSkinBorder.Create(AIDName: String);
begin
    inherited create(aidname);
    MaskMap:=TBitMap.create;
    Idname:=aidname;
end;

destructor TDataSkinBorder.Destroy;
begin
    MaskMap.free;
    inherited destroy;
end;

constructor TDataSkinButton.Create(AIDName: String);
begin
    inherited create(aidname);
    CheckMap :=Tbitmap.create;
    RadioMap :=Tbitmap.create;
end;

destructor TDataSkinButton.Destroy;
begin
    CheckMap.free;
    RadioMap.free;
    inherited destroy;
end;

constructor TSkinData.Create(AOwner: TComponent);
var i: integer;
begin
  inherited Create(AOwner);
  ftype := sfMainform;
  data := TMemorystream.create;
  Empty := True;
  sysicon:=Tbitmap.create;
  MenuMsg:=true;
  findll := false;
  f3rdControls:=TStringlist.create;
  initcontrollist;
  Button := TDataSkinButton.create('Buttons');
  border[1]:=TDataskinborder.create('Left');
  border[2]:=TDataskinborder.create('Right');
  border[3]:=TDataskinborder.create('Top');
  border[4]:=TDataskinborder.create('Bottom');
  Title := TDataSkinTitle.create('Title');
  fmenuauto := true;
//  if gSkindata=nil then gskindata:=self;
  fdisabletag:=99;
  FContainers := [xccForm, xccFrame, xccToolbar, xccCoolbar, xccControlbar, xccPanel,
                  xccScrollBox, xccGroupBox, xccTabSheet, xccPageScroller];
  FSkinControls := [xcMainMenu, xcPopupMenu, xcToolbar, xcControlbar, xcCombo,
                xcCheckBox, xcRadioButton,xcProgress,xcScrollbar,xcedit,
                xcButton,xcedit, xcBitBtn, xcSpeedButton, xcPanel, xcGroupBox,

⌨️ 快捷键说明

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