WinSkinReg.pas
上传用户:xjwsee
上传日期:2008-08-02
资源大小:796k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

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