WinSkinReg.pas
上传用户:lmk588
上传日期:2013-04-16
资源大小:5120k
文件大小:3k
源码类别:

按钮控件

开发平台:

Delphi

  1. unit WinSkinReg;
  2. interface
  3. {$I Compilers.Inc}
  4. uses  Dialogs, Forms, Classes, SysUtils,
  5. {$ifdef DELPHI_4}
  6.    DsgnIntf,
  7. {$endif DELPHI_4}
  8. {$ifdef DELPHI_5}
  9.    DsgnIntf,
  10. {$endif DELPHI_5}
  11. {$ifdef DELPHI_6}
  12.      DesignIntf,DesignEditors,
  13. {$endif DELPHI_6}
  14. {$ifdef DELPHI_7}
  15.      DesignIntf,DesignEditors,
  16. {$endif DELPHI_7}
  17. {$ifdef CPPB_5}
  18.    DsgnIntf,
  19. {$endif CPPB_5}
  20. {$ifdef CPPB_6}
  21.      DesignIntf,DesignEditors,
  22. {$endif CPPB_6}
  23.    winskindata,skinread,winsubclass,winskinform,WinSkinStore;
  24. procedure Register;
  25. implementation
  26. type
  27. { TWinSkinStore}
  28.   TWinSkinStore = class(TPropertyEditor)
  29.   private
  30.   public
  31.     procedure Edit; override;
  32.     function GetAttributes: TPropertyAttributes; override;
  33.     function GetValue: string; override;
  34.   end;
  35. procedure TWinSkinStore.Edit;
  36. var
  37.   skindata: TSkindata;      //ms
  38.   storeitem: TSkinCollectionItem; //ms
  39.   OpenDialog: TOpenDialog;
  40. begin
  41.   { Execute editor }
  42.   OpenDialog := TOpenDialog.Create(Application);
  43.   OpenDialog.Filter := 'Skin files (*.skn)|*.skn';
  44.   try
  45.     if OpenDialog.Execute then
  46.     begin
  47.       { this entire block by ms }
  48.       storeitem := nil;
  49.       skindata := nil;
  50.       if GetComponent(0) is TSkinCollectionItem then
  51.         storeitem := GetComponent(0) as TSkinCollectionItem;
  52.       if GetComponent(0) is TSkindata then
  53.         skindata := GetComponent(0) as TSkindata;
  54.       if storeitem <> nil then
  55.       begin
  56.         storeitem.LoadFromFile(OpenDialog.FileName);
  57.       end
  58.       else
  59.       if skindata <> nil then
  60.       begin
  61.         skindata.data.clear;
  62.         skindata.data.LoadFromFile(OpenDialog.FileName);
  63.         skindata.SkinFile := '';
  64.       end;
  65.       {
  66.       TSkindata(GetComponent(0)).data.clear;
  67.       TSkindata(GetComponent(0)).data.LoadFromFile(OpenDialog.FileName);
  68.       TSkindata(GetComponent(0)).SkinFile := '';
  69.       }
  70.     end;
  71.     Modified;
  72.   finally
  73.     OpenDialog.Free;
  74.   end;
  75. end;
  76. function TWinSkinStore.GetAttributes: TPropertyAttributes;
  77. begin
  78.   Result := [paDialog];
  79. end;
  80. function TWinSkinStore.GetValue: string;
  81. var
  82.   skindata: TSkindata;      //ms
  83.   storeitem: TSkinCollectionItem; //ms
  84. begin
  85.   // ms
  86.   storeitem := nil;
  87.   skindata := nil;
  88.   if GetComponent(0) is TSkinCollectionItem then
  89.     storeitem := GetComponent(0) as TSkinCollectionItem;
  90.   if GetComponent(0) is TSkindata then
  91.     skindata := GetComponent(0) as TSkindata;
  92.   if storeitem <> nil then
  93.   begin
  94.     if storeitem.DataSize > 0 then
  95.       Result := '(SkinData)'
  96.     else
  97.       Result := '(Empty)'
  98.   end;
  99.   if skindata <> nil then
  100.   begin
  101.     if TSkindata(GetComponent(0)).data.size > 0 then
  102.     //    Result := '('+TSeSkinEngine(GetComponent(0)).SkinSource.SkinName+')'
  103.       Result := '(SkinData)'
  104.     else
  105.       Result := '(Empty)'
  106.   end;
  107. end;
  108. procedure Register;
  109. begin
  110.   RegisterComponents('VCLSkin', [TSkinData, TSkinStore]);
  111.   RegisterPropertyEditor(TypeInfo(String), TSkinData, 'SkinStore',TWinSkinStore);
  112.   // ms
  113.   RegisterPropertyEditor(TypeInfo(String), TSkinCollectionItem, 'SkinData',TWinSkinStore);
  114. end;
  115. end.