bsSkinData.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:113k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {*******************************************************************}
  2. {                                                                   }
  3. {       Almediadev Visual Component Library                         }
  4. {       BusinessSkinForm                                            }
  5. {       Version 1.98                                                }
  6. {                                                                   }
  7. {       Copyright (c) 2000-2003 Almediadev                          }
  8. {       ALL RIGHTS RESERVED                                         }
  9. {                                                                   }
  10. {       Home:  http://www.almdev.com                                }
  11. {       Support: support@almdev.com                                 }
  12. {                                                                   }
  13. {*******************************************************************}
  14. unit bsSkinData;
  15. {$P+,S-,W-,R-}
  16. {$WARNINGS OFF}
  17. {$HINTS OFF}
  18. interface
  19. uses Windows, Messages, SysUtils, Classes, Graphics, bsUtils, Forms,
  20.      IniFiles, bsZLib;
  21. type
  22.   TbsStdCommand = (cmClose, cmMaximize, cmMinimize, cmSysMenu, cmDefault, cmRollUp);
  23.   TbsMorphKind = (mkDefault, mkGradient, mkLeftGradient, mkRightGradient,
  24.                   mkLeftSlide, mkRightSlide, mkPush);
  25.   TbsInActiveEffect = (ieBrightness, ieDarkness, ieGrayScale,
  26.                        ieNoise, ieSplitBlur, ieInvert);
  27.   TbsDataSkinControl = class(TObject)
  28.   public
  29.     IDName: String;
  30.     PictureIndex: Integer;
  31.     MaskPictureIndex: Integer;
  32.     SkinRect: TRect;
  33.     constructor Create(AIDName: String);
  34.     procedure LoadFromFile(IniFile: TCustomIniFile); virtual;
  35.     procedure SaveToFile(IniFile: TCustomIniFile); virtual;
  36.   end;
  37.   TbsDataSkinBevel = class(TbsDataSkinControl)
  38.   public
  39.     LightColor: TColor;
  40.     DarkColor: TColor;
  41.     constructor Create(AIDName: String);
  42.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  43.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  44.   end;
  45.   TbsDataSkinTreeView = class(TbsDataSkinControl)
  46.   public
  47.     FontName: String;
  48.     FontStyle: TFontStyles;
  49.     FontHeight: Integer;
  50.     FontColor: TColor;
  51.     BGColor: TColor;
  52.     constructor Create(AIDName: String);
  53.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  54.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  55.   end;
  56.   TbsDataSkinSlider = class(TbsDataSkinControl)
  57.   public
  58.     HRulerRect: TRect;
  59.     HThumbRect: TRect;
  60.     VRulerRect: TRect;
  61.     VThumbRect: TRect;
  62.     EdgeSize: Integer;
  63.     BGColor: TColor;
  64.     PointsColor: TColor;
  65.     constructor Create(AIDName: String);
  66.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  67.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  68.   end;
  69.   TbsDataSkinListView = class(TbsDataSkinControl)
  70.   public
  71.     FontName: String;
  72.     FontStyle: TFontStyles;
  73.     FontHeight: Integer;
  74.     FontColor: TColor;
  75.     BGColor: TColor;
  76.     constructor Create(AIDName: String);
  77.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  78.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  79.   end;
  80.   TbsDataSkinRichEdit = class(TbsDataSkinControl)
  81.   public
  82.     FontName: String;
  83.     FontStyle: TFontStyles;
  84.     FontHeight: Integer;
  85.     FontColor: TColor;
  86.     BGColor: TColor;
  87.     constructor Create(AIDName: String);
  88.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  89.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  90.   end;
  91.   TbsDataSkinMainMenuBar = class(TbsDataSkinControl)
  92.   public
  93.     ItemsRect: TRect;
  94.     MenuBarItem: String;
  95.     CloseButton: String;
  96.     MaxButton: String;
  97.     MinButton: String;
  98.     SysMenuButton: String;
  99.     TrackMarkColor, TrackMarkActiveColor: Integer;
  100.     constructor Create(AIDName: String);
  101.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  102.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  103.   end;
  104.   TbsDataSkinTabControl = class(TbsDataSkinControl)
  105.   public
  106.     TabRect, ActiveTabRect, FocusTabRect, MouseInTabRect: TRect;
  107.     ClRect: TRect;
  108.     TabsBGRect: TRect;
  109.     LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
  110.     TabLeftOffset, TabRightOffset: Integer;
  111.     FontName: String;
  112.     FontStyle: TFontStyles;
  113.     FontHeight: Integer;
  114.     FontColor, ActiveFontColor, FocusFontColor, MouseInFontColor: TColor;
  115.     UpDown: String;
  116.     BGPictureIndex: Integer;
  117.     constructor Create(AIDName: String);
  118.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  119.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  120.   end;
  121.   TbsDataSkinGridControl = class(TbsDataSkinControl)
  122.   public
  123.     FixedCellRect, SelectCellRect, FocusCellRect: TRect;
  124.     //
  125.     FixedCellLeftOffset, FixedCellRightOffset: Integer;
  126.     FixedCellTextRect: TRect;
  127.     //
  128.     CellLeftOffset, CellRightOffset: Integer;
  129.     CellTextRect: TRect;
  130.     //
  131.     LinesColor, BGColor: TColor;
  132.     FontName: String;
  133.     FontStyle: TFontStyles;
  134.     FontHeight: Integer;
  135.     FontColor, SelectFontColor, FocusFontColor: TColor;
  136.     FixedFontName: String;
  137.     FixedFontStyle: TFontStyles;
  138.     FixedFontHeight: Integer;
  139.     FixedFontColor: TColor;
  140.     constructor Create(AIDName: String);
  141.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  142.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  143.   end;
  144.   TbsDataSkinCustomControl = class(TbsDataSkinControl)
  145.   public
  146.     LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
  147.     ClRect: TRect;
  148.     constructor Create(AIDName: String);
  149.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  150.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  151.   end;
  152.   TbsDataSkinControlBar = class(TbsDataSkinCustomControl)
  153.   public
  154.     ItemRect: TRect;
  155.     BGPictureIndex: Integer;
  156.     constructor Create(AIDName: String);
  157.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  158.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  159.   end;
  160.   TbsDataSkinUpDownControl = class(TbsDataSkinCustomControl)
  161.   public
  162.     UpButtonRect, ActiveUpButtonRect, DownUpButtonRect: TRect;
  163.     DownButtonRect, ActiveDownButtonRect, DownDownButtonRect: TRect;
  164.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  165.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  166.   end;
  167.   
  168.   TbsDataSkinComboBox = class(TbsDataSkinCustomControl)
  169.   public
  170.     //
  171.     SItemRect, FocusItemRect: TRect;
  172.     ItemLeftOffset, ItemRightOffset: Integer;
  173.     ItemTextRect: TRect;
  174.     FontName: String;
  175.     FontStyle: TFontStyles;
  176.     FontHeight: Integer;
  177.     FontColor, FocusFontColor: TColor;
  178.     ButtonRect,
  179.     ActiveButtonRect,
  180.     DownButtonRect,
  181.     UnEnabledButtonRect: TRect;
  182.     //
  183.     ListBoxName: String;
  184.     constructor Create(AIDName: String);
  185.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  186.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  187.   end;
  188.   TbsDataSkinListBox = class(TbsDataSkinCustomControl)
  189.   public
  190.     //
  191.     SItemRect, ActiveItemRect, FocusItemRect: TRect;
  192.     ItemLeftOffset, ItemRightOffset: Integer;
  193.     ItemTextRect: TRect;
  194.     FontName: String;
  195.     FontStyle: TFontStyles;
  196.     FontHeight: Integer;
  197.     FontColor, ActiveFontColor, FocusFontColor: TColor;
  198.     //
  199.     CaptionRect: TRect;
  200.     CaptionFontName: String;
  201.     CaptionFontStyle: TFontStyles;
  202.     CaptionFontHeight: Integer;
  203.     CaptionFontColor: TColor;
  204.     //
  205.     UpButtonRect, ActiveUpButtonRect, DownUpButtonRect: TRect;
  206.     DownButtonRect, ActiveDownButtonRect, DownDownButtonRect: TRect;
  207.     CheckButtonRect, ActiveCheckButtonRect, DownCheckButtonRect: TRect;
  208.     //
  209.     HScrollBarName: String;
  210.     VScrollBarName: String;
  211.     BothScrollBarName: String;
  212.     constructor Create(AIDName: String);
  213.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  214.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  215.   end;
  216.   TbsDataSkinCheckListBox = class(TbsDataSkinListBox)
  217.   public
  218.     UnCheckImageRect, CheckImageRect: TRect;
  219.     ItemCheckRect: TRect;
  220.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  221.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  222.   end;
  223.   TbsDataSkinScrollBarControl = class(TbsDataSkinCustomControl)
  224.   public
  225.     TrackArea: TRect;
  226.     UpButtonRect, ActiveUpButtonRect, DownUpButtonRect: TRect;
  227.     DownButtonRect, ActiveDownButtonRect, DownDownButtonRect: TRect;
  228.     ThumbRect, ActiveThumbRect, DownThumbRect: TRect;
  229.     ThumbOffset1, ThumbOffset2: Integer;
  230.     GlyphRect, ActiveGlyphRect, DownGlyphRect: TRect;
  231.     constructor Create(AIDName: String);
  232.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  233.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  234.  end;
  235.  TbsDataSkinSpinEditControl = class(TbsDataSkinCustomControl)
  236.  public
  237.    FontName: String;
  238.    FontStyle: TFontStyles;
  239.    FontHeight: Integer;
  240.    FontColor: TColor;
  241.    UpButtonRect, ActiveUpButtonRect, DownUpButtonRect: TRect;
  242.    DownButtonRect, ActiveDownButtonRect, DownDownButtonRect: TRect;
  243.    constructor Create(AIDName: String);
  244.    procedure LoadFromFile(IniFile: TCustomIniFile); override;
  245.    procedure SaveToFile(IniFile: TCustomIniFile); override;
  246.  end;
  247.   TbsDataSkinEditControl = class(TbsDataSkinCustomControl)
  248.   public
  249.     ActiveSkinRect: TRect;
  250.     FontName: String;
  251.     FontStyle: TFontStyles;
  252.     FontHeight: Integer;
  253.     FontColor, DisabledFontColor: TColor;
  254.     ActiveFontColor: TColor;
  255.     ButtonRect: TRect;
  256.     ActiveButtonRect: TRect;
  257.     DownButtonRect: TRect;
  258.     constructor Create(AIDName: String);
  259.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  260.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  261.   end;
  262.   TbsDataSkinMemoControl = class(TbsDataSkinEditControl)
  263.   public
  264.     BGColor: TColor;
  265.     ActiveBGColor: TColor;
  266.     constructor Create(AIDName: String);
  267.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  268.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  269.   end;
  270.   TbsDataSkinStdLabelControl = class(TbsDataSkinControl)
  271.   public
  272.     FontName: String;
  273.     FontStyle: TFontStyles;
  274.     FontHeight: Integer;
  275.     FontColor: TColor;
  276.     ActiveFontColor: TColor;
  277.     constructor Create(AIDName: String);
  278.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  279.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  280.   end;
  281.   TbsDataSkinLabelControl = class(TbsDataSkinCustomControl)
  282.   public
  283.     FontName: String;
  284.     FontStyle: TFontStyles;
  285.     FontHeight: Integer;
  286.     FontColor: TColor;
  287.     constructor Create(AIDName: String);
  288.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  289.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  290.   end;
  291.   TbsDataSkinSplitterControl = class(TbsDataSkinCustomControl);
  292.   
  293.   TbsDataSkinGaugeControl = class(TbsDataSkinCustomControl)
  294.   public
  295.     ProgressArea, ProgressRect: TRect;
  296.     Vertical: Boolean;
  297.     BeginOffset, EndOffset: Integer;
  298.     FontName: String;
  299.     FontStyle: TFontStyles;
  300.     FontHeight: Integer;
  301.     FontColor: TColor;
  302.     constructor Create(AIDName: String);
  303.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  304.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  305.   end;
  306.   TbsDataSkinTrackBarControl = class(TbsDataSkinCustomControl)
  307.   public
  308.     TrackArea, ButtonRect, ActiveButtonRect: TRect;
  309.     Vertical: Boolean;
  310.     constructor Create(AIDName: String);
  311.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  312.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  313.   end;
  314.   TbsDataSkinButtonControl = class(TbsDataSkinCustomControl)
  315.   public
  316.     FontName: String;
  317.     FontStyle: TFontStyles;
  318.     FontHeight: Integer;
  319.     FontColor, ActiveFontColor, DownFontColor, DisabledFontColor: TColor;
  320.     ActiveSkinRect, DownSkinRect, DisabledSkinRect: TRect;
  321.     Morphing: Boolean;
  322.     MorphKind: TbsMorphKind;
  323.     constructor Create(AIDName: String);
  324.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  325.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  326.   end;
  327.   TbsDataSkinMenuButtonControl = class(TbsDataSkinButtonControl)
  328.   public
  329.     TrackButtonRect: TRect;
  330.     constructor Create(AIDName: String);
  331.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  332.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  333.   end;
  334.   TbsDataSkinCheckRadioControl = class(TbsDataSkinCustomControl)
  335.   public
  336.     FontName: String;
  337.     FontStyle: TFontStyles;
  338.     FontHeight: Integer;
  339.     FontColor, ActiveFontColor, UnEnabledFontColor: TColor;
  340.     ActiveSkinRect: TRect;
  341.     CheckImageArea, TextArea,
  342.     CheckImageRect, UnCheckImageRect: TRect;
  343.     ActiveCheckImageRect, ActiveUnCheckImageRect: TRect;
  344.     UnEnabledCheckImageRect, UnEnabledUnCheckImageRect: TRect;
  345.     Morphing: Boolean;
  346.     MorphKind: TbsMorphKind;
  347.     FrameFontColor: TColor;
  348.     constructor Create(AIDName: String);
  349.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  350.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  351.   end;
  352.   TbsDataSkinScrollBoxControl = class(TbsDataSkinCustomControl)
  353.   public
  354.     BGPictureIndex: Integer;
  355.     constructor Create(AIDName: String);
  356.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  357.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  358.   end;
  359.   TbsDataSkinPanelControl = class(TbsDataSkinCustomControl)
  360.   public
  361.     CaptionRect: TRect;
  362.     RollUpMarkerRect: TRect;
  363.     RestoreMarkerRect: TRect;
  364.     Alignment: TAlignment;
  365.     FontName: String;
  366.     FontStyle: TFontStyles;
  367.     FontHeight: Integer;
  368.     FontColor: TColor;
  369.     BGPictureIndex: Integer;
  370.     CheckImageRect, UnCheckImageRect: TRect; 
  371.     constructor Create(AIDName: String);
  372.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  373.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  374.   end;
  375.   TbsDataSkinExPanelControl = class(TbsDataSkinCustomControl)
  376.   public
  377.     //
  378.     RollHSkinRect, RollVSkinRect: TRect;
  379.     RollLeftOffset, RollRightOffset,
  380.     RollTopOffset, RollBottomOffset: Integer;
  381.     RollVCaptionRect, RollHCaptionRect: TRect;
  382.     //
  383.     CloseButtonRect, CloseButtonActiveRect, CloseButtonDownRect: TRect;
  384.     HRollButtonRect, HRollButtonActiveRect, HRollButtonDownRect: TRect;
  385.     HRestoreButtonRect, HRestoreButtonActiveRect, HRestoreButtonDownRect: TRect;
  386.     VRollButtonRect, VRollButtonActiveRect, VRollButtonDownRect: TRect;
  387.     VRestoreButtonRect, VRestoreButtonActiveRect, VRestoreButtonDownRect: TRect;
  388.     //
  389.     CaptionRect: TRect;
  390.     FontName: String;
  391.     FontStyle: TFontStyles;
  392.     FontHeight: Integer;
  393.     FontColor: TColor;
  394.     constructor Create(AIDName: String);
  395.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  396.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  397.   end;
  398.   TbsDataSkinObject = class(TObject)
  399.   public
  400.     IDName: String;
  401.     Hint: String;
  402.     SkinRectInAPicture: Boolean;
  403.     SkinRect: TRect;
  404.     ActiveSkinRect: TRect;
  405.     ActivePictureIndex: Integer;
  406.     Morphing: Boolean;
  407.     MorphKind: TbsMorphKind;
  408.     constructor Create(AIDName: String);
  409.     procedure LoadFromFile(IniFile: TCustomIniFile); virtual;
  410.     procedure SaveToFile(IniFile: TCustomIniFile); virtual;
  411.   end;
  412.   TbsDataUserObject = class(TbsDataSkinObject)
  413.   public
  414.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  415.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  416.   end;
  417.   TbsDataSkinButton = class(TbsDataSkinObject)
  418.   public
  419.     DownRect: TRect;
  420.     DisableSkinRect: TRect;
  421.     constructor Create(AIDName: String);
  422.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  423.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  424.   end;
  425.   TbsDataSkinStdButton = class(TbsDataSkinButton)
  426.   public
  427.     Command: TbsStdCommand;
  428.     RestoreRect: TRect;
  429.     RestoreActiveRect: TRect;
  430.     RestoreDownRect: TRect;
  431.     RestoreInActiveRect: TRect;
  432.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  433.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  434.   end;
  435.   TbsDataSkinMainMenuBarButton = class(TbsDataSkinStdButton);
  436.   TbsDataSkinPopupWindow = class(TObject)
  437.   public
  438.     WindowPictureIndex: Integer;
  439.     MaskPictureIndex: Integer;
  440.     LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
  441.     ItemsRect: TRect;
  442.     ScrollMarkerColor, ScrollMarkerActiveColor: Integer;
  443.     constructor Create;
  444.     procedure LoadFromFile(IniFile: TCustomIniFile);
  445.     procedure SaveToFile(IniFile: TCustomIniFile);
  446.   end;
  447.   TbsDataSkinHintWindow = class(TObject)
  448.   public
  449.     WindowPictureIndex: Integer;
  450.     MaskPictureIndex: Integer;
  451.     LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
  452.     ClRect: TRect;
  453.     FontName: String;
  454.     FontStyle: TFontStyles;
  455.     FontHeight: Integer;
  456.     FontColor: TColor;
  457.     constructor Create;
  458.     procedure LoadFromFile(IniFile: TCustomIniFile);
  459.     procedure SaveToFile(IniFile: TCustomIniFile);
  460.   end;
  461.   TbsDataSkinMenuItem = class(TbsDataSkinObject)
  462.   public
  463.     DividerRect: TRect;
  464.     DividerLO, DividerRO: Integer;
  465.     ItemLO, ItemRO: Integer;
  466.     FontName: String;
  467.     FontHeight: Integer;
  468.     FontStyle: TFontStyles;
  469.     UnEnabledFontColor, FontColor, ActiveFontColor: TColor;
  470.     TextRct: TRect;
  471.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  472.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  473.   end;
  474.   TbsDataSkinMainMenuItem = class(TbsDataSkinObject)
  475.   public
  476.     DownRect: TRect;
  477.     FontName: String;
  478.     FontHeight: Integer;
  479.     FontStyle: TFontStyles;
  480.     FontColor, ActiveFontColor, DownFontColor, UnEnabledFontColor: TColor;
  481.     TextRct: TRect;
  482.     ItemLO, ItemRO: Integer;
  483.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  484.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  485.   end;
  486.   TbsDataSkinMainMenuBarItem = class(TbsDataSkinMainMenuItem);
  487.   TbsDataSkinCaption = class(TbsDataSkinObject)
  488.   public
  489.     FontName: String;
  490.     FontHeight: Integer;
  491.     FontStyle: TFontStyles;
  492.     FontColor, ActiveFontColor: TColor;
  493.     ShadowColor, ActiveShadowColor: TColor;
  494.     Shadow: Boolean;
  495.     Alignment: TAlignment;
  496.     TextRct: TRect;
  497.     FrameRect, ActiveFrameRect: TRect;
  498.     FrameLeftOffset, FrameRightOffset: Integer;
  499.     FrameTextRect: TRect;
  500.     procedure LoadFromFile(IniFile: TCustomIniFile); override;
  501.     procedure SaveToFile(IniFile: TCustomIniFile); override;
  502.   end;
  503.   TbsStoredSkin = class(TComponent)
  504.   protected
  505.     FFileName: String;
  506.     FIniStrings: TStrings;
  507.     procedure ClearBitMaps;
  508.   public
  509.     FPicture, FInActivePicture, FMask: TBitMap;
  510.     FActivePictures: TList;
  511.     procedure SetFileName(Value: String);
  512.     procedure SetIniStrings(Value: TStrings);
  513.     constructor Create(AOwner: TComponent); override;
  514.     destructor Destroy; override;
  515.     procedure LoadFromFile(AFileName: String);
  516.     procedure ReadData(Reader: TStream);
  517.     procedure WriteData(Writer: TStream);
  518.     procedure DefineProperties(Filer: TFiler); override;
  519.   published
  520.     property FileName: String read FFileName write SetFileName;
  521.     property IniStrings: TStrings read FIniStrings write SetIniStrings;
  522.   end;
  523.   TbsCompressedStoredSkin = class(TComponent)
  524.   private
  525.     FFileName: String;
  526.     FCompressedStream: TMemoryStream;
  527.     procedure SetFileName(Value: String);
  528.     function GetEmpty: Boolean;
  529.   protected
  530.     procedure ReadData(Reader: TStream);
  531.     procedure WriteData(Writer: TStream);
  532.     procedure DefineProperties(Filer: TFiler); override;
  533.   public
  534.     constructor Create(AOwner: TComponent); override;
  535.     destructor Destroy; override;
  536.     procedure LoadFromIniFile(AFileName: String);
  537.     procedure LoadFromCompressFile(AFileName: String);
  538.     procedure SaveToCompressFile(AFileName: String);
  539.     procedure DeCompressToStream(var S: TMemoryStream);
  540.     property Empty: Boolean read GetEmpty;
  541.   published
  542.     property FileName: String read FFileName write SetFileName;
  543.   end;
  544.   TbsSkinData = class(TComponent)
  545.   protected
  546.     FStoredSkin: TbsStoredSkin;
  547.     FCompressedStoredSkin: TbsCompressedStoredSkin;
  548.     Names: TStrings;
  549.     procedure Notification(AComponent: TComponent;
  550.                            Operation: TOperation); override;
  551.     procedure SetStoredSkin(Value: TbsStoredSkin);
  552.     procedure SetCompressedStoredSkin(Value: TbsCompressedStoredSkin);
  553.     procedure LoadNames;
  554.     procedure EraseSections(F: TCustomIniFile);
  555.     procedure WriteFormInfo(F: TCustomIniFile);
  556.     procedure ReadFormInfo(F: TCustomIniFile);
  557.     procedure WriteObjects(F: TCustomIniFile);
  558.     procedure ReadObjects(F: TCustomIniFile);
  559.     procedure WriteCtrls(F: TCustomIniFile);
  560.     procedure ReadCtrls(F: TCustomIniFile);
  561.     procedure WriteActivePictures(F: TCustomIniFile);
  562.     procedure ReadActivePictures(F: TCustomIniFile; Path: String);
  563.     procedure GetObjectTypeName(S: String; var AName, AType: String);
  564.   public
  565.     //
  566.     ButtonsRect, CaptionRect: TRect;
  567.     ButtonsOffset: Integer;
  568.     CapButtonsInLeft: Boolean; 
  569.     //
  570.     AutoRenderingInActiveImage: Boolean;
  571.     InActiveEffect: TbsInActiveEffect;
  572.     BuildMode: Boolean;
  573.     PopupWindow: TbsDataSkinPopupWindow;
  574.     HintWindow: TbsDataSkinHintWindow;
  575.     Empty: Boolean;
  576.     FPicture, FInActivePicture, FMask: TBitMap;
  577.     FActivePictures: TList;
  578.     FPictureName, FInActivePictureName, FMaskName: String;
  579.     FActivePicturesNames: TStrings;
  580.     ObjectList: TList;
  581.     CtrlList: TList;
  582.     LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
  583.     BGPictureIndex: Integer;
  584.     MainMenuPopupUp: Boolean;
  585.     MaskRectArea: TRect;
  586.     HitTestLTPoint,
  587.     HitTestRTPoint,
  588.     HitTestLBPoint,
  589.     HitTestRBPoint: TPoint;
  590.     ClRect: TRect;
  591.     BorderW: Integer;
  592.     SkinName: String;
  593.     SkinAuthor: String;
  594.     AuthorURL: String;
  595.     AuthorEmail: String;
  596.     SkinComments: String;
  597.     procedure AddBitMap(FileName: String);
  598.     procedure DeleteBitMap(Index: Integer);
  599.     procedure SendSkinDataMessage(M: LongInt);
  600.     function GetIndex(AIDName: String): Integer;
  601.     function GetControlIndex(AIDName: String): Integer;
  602.     procedure ClearObjects;
  603.     procedure ClearAll;
  604.     constructor Create(AOwner: TComponent); override;
  605.     destructor Destroy; override;
  606.     procedure LoadFromFile(FileName: String);
  607.     procedure SaveToFile(FileName: String);
  608.     procedure LoadStoredSkin(AStoredSkin: TbsStoredSkin);
  609.     procedure LoadCompressedStoredSkin(AStoredSkin: TbsCompressedStoredSkin);
  610.     procedure ClearSkin;
  611.   published
  612.     property StoredSkin: TbsStoredSkin read FStoredSkin write SetStoredSkin;
  613.     property CompressedStoredSkin: TbsCompressedStoredSkin
  614.       read FCompressedStoredSkin write SetCompressedStoredSkin;
  615.   end;
  616.   function ReadInActiveEffect(IniFile: TCustomIniFile;
  617.                               Section: String; Ident: String): TbsInActiveEffect;
  618.   procedure WriteInActiveEffect(IniFile: TCustomIniFile;
  619.                                 Section: String; Ident: String;
  620.                                 IE: TbsInActiveEffect);
  621.   procedure WriteMorphKind(IniFile: TCustomIniFile;
  622.                            Section: String; Ident: String; MK: TbsMorphKind);
  623.   function ReadMorphKind(IniFile: TCustomIniFile;
  624.                          Section: String; Ident: String): TbsMorphKind;
  625. // Internal messages
  626. const
  627.   WM_BEFORECHANGESKINDATA = WM_USER + 201;
  628.   WM_CHANGESKINDATA = WM_USER + 202;
  629.   WM_AFTERCHANGESKINDATA = WM_USER + 203;
  630. implementation
  631. function CheckSkinFile(F: TCustomIniFile): Boolean;
  632. begin
  633.   Result := F.SectionExists('VERSION') and F.SectionExists('PICTURES') and
  634.             F.SectionExists('FORMINFO') and F.SectionExists('SKINOBJECTS') and
  635.             F.SectionExists('SKINCONTROLS');
  636. end;
  637. procedure WriteInActiveEffect;
  638. var
  639.   S: String;
  640. begin
  641.   case IE of
  642.     ieBrightness: S := 'iebrightness';
  643.     ieDarkness: S := 'iedarkness';
  644.     ieGrayScale: S := 'iegrayscale';
  645.     ieNoise: S := 'ienoise';
  646.     ieSplitBlur: S := 'iesplitblur';
  647.     ieInvert: S := 'ieinvert';
  648.   end;
  649.   IniFile.WriteString(Section, Ident, S);
  650. end;
  651. function ReadInActiveEffect;
  652. var
  653.   S: String;
  654. begin
  655.   S := IniFile.ReadString(Section, Ident, 'iebrightness');
  656.   if S = 'iebrightness'
  657.   then Result := ieBrightness
  658.   else
  659.   if S = 'iedarkness'
  660.   then Result := ieDarkness
  661.   else
  662.   if S = 'iegrayscale'
  663.   then Result := ieGrayScale
  664.   else
  665.   if S = 'ienoise'
  666.   then Result := ieNoise
  667.   else
  668.   if S = 'iesplitblur'
  669.   then Result := ieSplitBlur
  670.   else
  671.   if S = 'ieinvert'
  672.   then Result := ieInvert;
  673. end;
  674. function ReadMorphKind;
  675. var
  676.   S: String;
  677. begin
  678.   S := IniFile.ReadString(Section, Ident, 'mkdefault');
  679.   if S = 'mkdefault'
  680.   then Result := mkDefault
  681.   else
  682.   if S = 'mkgradient'
  683.   then Result := mkGradient
  684.   else
  685.   if S = 'mkleftgradient'
  686.   then Result := mkLeftGradient
  687.   else
  688.   if S = 'mkrightgradient'
  689.   then Result := mkRightGradient
  690.   else
  691.   if S = 'mkleftslide'
  692.   then Result := mkLeftSlide
  693.   else
  694.   if S = 'mkrightslide'
  695.   then Result := mkRightSlide
  696.   else
  697.   if S = 'mkpush'
  698.   then Result := mkPush;
  699. end;
  700. procedure WriteMorphKind;
  701. var
  702.   S: String;
  703. begin
  704.   case MK of
  705.     mkDefault: S := 'mkdefault';
  706.     mkGradient: S := 'mkgradient';
  707.     mkLeftGradient: S := 'mkleftgradient';
  708.     mkRightGradient: S := 'mkrightgradient';
  709.     mkLeftSlide: S := 'mkleftslide';
  710.     mkRightSlide: S := 'mkrightslide';
  711.     mkPush: S := 'mkpush';
  712.   end;
  713.   IniFile.WriteString(Section, Ident, S);
  714. end;
  715. constructor TbsDataSkinControl.Create;
  716. begin
  717.   IDName := AIDName;
  718.   PictureIndex := -1;
  719.   MaskPictureIndex := -1;
  720.   SkinRect := Rect(0, 0, 0, 0);
  721. end;
  722. procedure TbsDataSkinControl.LoadFromFile;
  723. begin
  724.   PictureIndex := IniFile.ReadInteger(IDName, 'pictureindex', -1);
  725.   MaskPictureIndex := IniFile.ReadInteger(IDName, 'maskpictureindex', -1);
  726.   SkinRect := ReadRect(IniFile, IDName, 'skinrect');
  727. end;
  728. procedure TbsDataSkinControl.SaveToFile;
  729. begin
  730.   IniFile.EraseSection(IDName);
  731.   IniFile.WriteInteger(IDName, 'pictureindex', PictureIndex);
  732.   IniFile.WriteInteger(IDName, 'maskpictureindex', MaskPictureIndex);
  733.   WriteRect(IniFile, IDName, 'skinrect', SkinRect);
  734. end;
  735. constructor TbsDataSkinMainMenuBar.Create;
  736. begin
  737.   inherited;
  738.   TrackMarkColor := 0;
  739.   TrackMarkActiveColor := 0;
  740. end;
  741. procedure TbsDataSkinMainMenuBar.LoadFromFile;
  742. begin
  743.   inherited;
  744.   ItemsRect := ReadRect(IniFile, IDName, 'itemsrect');
  745.   MenuBarItem := IniFile.ReadString(IDName, 'menubaritem', '');
  746.   CloseButton := IniFile.ReadString(IDName, 'closebutton', '');
  747.   MinButton := IniFile.ReadString(IDName, 'minbutton', '');
  748.   MaxButton := IniFile.ReadString(IDName, 'maxbutton', '');
  749.   SysMenuButton := IniFile.ReadString(IDName, 'sysmenubutton', '');
  750.   TrackMarkColor := IniFile.ReadInteger(IDName, 'trackmarkcolor', 0);
  751.   TrackMarkActiveColor := IniFile.ReadInteger(IDName, 'trackmarkactivecolor', 0);
  752. end;
  753. procedure TbsDataSkinMainMenuBar.SaveToFile;
  754. begin
  755.   inherited;
  756.   WriteRect(IniFile, IDName, 'itemsrect', ItemsRect);
  757.   IniFile.WriteString(IDName, 'menubaritem', MenuBarItem);
  758.   IniFile.WriteString(IDName, 'closebutton', CloseButton);
  759.   IniFile.WriteString(IDName, 'minbutton', MinButton);
  760.   IniFile.WriteString(IDName, 'maxbutton', MaxButton);
  761.   IniFile.WriteString(IDName, 'sysmenubutton', SysMenuButton);
  762.   IniFile.WriteInteger(IDName, 'trackmarkcolor', TrackMarkColor);
  763.   IniFile.WriteInteger(IDName, 'trackmarkactivecolor', TrackMarkActiveColor);
  764. end;
  765. procedure TbsDataSkinUpDownControl.LoadFromFile(IniFile: TCustomIniFile);
  766. begin
  767.   inherited;
  768.   UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
  769.   ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
  770.   DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
  771.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  772.   ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
  773.   DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
  774.   LTPoint := Point(0, 0);
  775.   RTPoint := Point(0, 0);
  776.   LBPoint := Point(0, 0);
  777.   RBPoint := Point(0, 0);
  778.   ClRect := NullRect;
  779. end;
  780. procedure TbsDataSkinUpDownControl.SaveToFile(IniFile: TCustomIniFile);
  781. begin
  782.   LTPoint := Point(0, 0);
  783.   RTPoint := Point(0, 0);
  784.   LBPoint := Point(0, 0);
  785.   RBPoint := Point(0, 0);
  786.   ClRect := NullRect;
  787.   inherited;
  788.   WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
  789.   WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
  790.   WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
  791.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  792.   WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
  793.   WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
  794. end;
  795. constructor TbsDataSkinListBox.Create(AIDName: String);
  796. begin
  797.   inherited;
  798.   FontName := 'Arial';
  799.   FontStyle := [];
  800.   FontHeight := 14;
  801.   FontColor := 0;
  802.   HScrollBarName := '';
  803.   VScrollBarName := '';
  804.   BothScrollBarName := '';
  805.   CaptionFontName := 'Arial';
  806.   CaptionFontStyle := [];
  807.   CaptionFontHeight := 14;
  808.   CaptionFontColor := 0;
  809. end;
  810. procedure TbsDataSkinListBox.LoadFromFile;
  811. begin
  812.   inherited;
  813.   //
  814.   SItemRect := ReadRect(IniFile, IDName, 'itemrect');
  815.   ActiveItemRect := ReadRect(IniFile, IDName, 'activeitemrect');
  816.   FocusItemRect := ReadRect(IniFile, IDName, 'focusitemrect');
  817.   ItemLeftOffset := IniFile.ReadInteger(IDName, 'itemleftoffset', 0);
  818.   ItemRightOffset := IniFile.ReadInteger(IDName, 'itemrightoffset', 0);
  819.   ItemTextRect := ReadRect(IniFile, IDName, 'itemtextrect');
  820.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  821.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  822.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  823.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  824.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  825.   FocusFontColor := IniFile.ReadInteger(IDName, 'focusfontcolor', 0);
  826.   //
  827.   CaptionRect := ReadRect(IniFile, IDName, 'captionrect');
  828.   CaptionFontName := IniFile.ReadString(IDName, 'captionfontname', 'Arial');
  829.   CaptionFontHeight := IniFile.ReadInteger(IDName, 'captionfontheight', 14);
  830.   CaptionFontStyle := ReadFontStyles(IniFile, IDName, 'captionfontstyle');
  831.   CaptionFontColor := IniFile.ReadInteger(IDName, 'captionfontcolor', 0);
  832.   //
  833.   UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
  834.   ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
  835.   DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
  836.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  837.   ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
  838.   DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
  839.   CheckButtonRect := ReadRect(IniFile, IDName, 'checkbuttonrect');
  840.   ActiveCheckButtonRect := ReadRect(IniFile, IDName, 'activecheckbuttonrect');
  841.   DownCheckButtonRect := ReadRect(IniFile, IDName, 'downcheckbuttonrect');
  842.   //
  843.   VScrollBarName := IniFile.ReadString(IDName, 'vscrollbarname', 'vscrollbar');
  844.   HScrollBarName := IniFile.ReadString(IDName, 'hscrollbarname', 'hscrollbar');
  845.   BothScrollBarName := IniFile.ReadString(IDName, 'bothhscrollbarname', 'bothhscrollbar');
  846. end;
  847. procedure TbsDataSkinListBox.SaveToFile;
  848. begin
  849.   inherited;
  850.   WriteRect(IniFile, IDName, 'itemrect', SItemRect);
  851.   WriteRect(IniFile, IDName, 'activeitemrect', ActiveItemRect);
  852.   WriteRect(IniFile, IDName, 'focusitemrect', FocusItemRect);
  853.   IniFile.WriteInteger(IDName, 'itemleftoffset', ItemLeftOffset);
  854.   IniFile.WriteInteger(IDName, 'itemrightoffset', ItemRightOffset);
  855.   WriteRect(IniFile, IDName, 'itemtextrect', ItemTextRect);
  856.   IniFile.WriteString(IDName, 'fontname', FontName);
  857.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  858.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  859.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  860.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  861.   IniFile.WriteInteger(IDName, 'focusfontcolor', FocusFontColor);
  862.   //
  863.   WriteRect(IniFile, IDName, 'captionrect', CaptionRect);
  864.   IniFile.WriteString(IDName, 'captionfontname', CaptionFontName);
  865.   IniFile.WriteInteger(IDName, 'captionfontheight', CaptionFontHeight);
  866.   WriteFontStyles(IniFile, IDName, 'captionfontstyle', CaptionFontStyle);
  867.   IniFile.WriteInteger(IDName, 'captionfontcolor', CaptionFontColor);
  868.   //
  869.   WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
  870.   WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
  871.   WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
  872.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  873.   WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
  874.   WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
  875.   WriteRect(IniFile, IDName, 'checkbuttonrect', CheckButtonRect);
  876.   WriteRect(IniFile, IDName, 'activecheckbuttonrect', ActiveCheckButtonRect);
  877.   WriteRect(IniFile, IDName, 'downcheckbuttonrect', DownCheckButtonRect);
  878.   //
  879.   IniFile.WriteString(IDName, 'vscrollbarname', VScrollBarName);
  880.   IniFile.WriteString(IDName, 'hscrollbarname', HScrollBarName);
  881.   IniFile.WriteString(IDName, 'bothhscrollbarname', BothScrollBarName);
  882. end;
  883. procedure TbsDataSkinCheckListBox.LoadFromFile;
  884. begin
  885.   inherited;
  886.   ItemCheckRect := ReadRect(IniFile, IDName, 'itemcheckrect');
  887.   CheckImageRect := ReadRect(IniFile, IDName, 'checkimagerect');
  888.   UnCheckImageRect := ReadRect(IniFile, IDName, 'uncheckimagerect');
  889. end;
  890. procedure TbsDataSkinCheckListBox.SaveToFile;
  891. begin
  892.   inherited;
  893.   WriteRect(IniFile, IDName, 'itemcheckrect', ItemCheckRect);
  894.   WriteRect(IniFile, IDName, 'uncheckimagerect', UnCheckImageRect);
  895.   WriteRect(IniFile, IDName, 'checkimagerect', CheckImageRect);
  896. end;
  897. constructor TbsDataSkinComboBox.Create(AIDName: String);
  898. begin
  899.   inherited;
  900.   FontName := 'Arial';
  901.   FontStyle := [];
  902.   FontHeight := 14;
  903.   FontColor := 0;
  904.   FocusFontColor := 0;
  905.   ListBoxName := '';
  906. end;
  907. procedure TbsDataSkinComboBox.LoadFromFile;
  908. begin
  909.   inherited;
  910.   //
  911.   SItemRect := ReadRect(IniFile, IDName, 'itemrect');
  912.   FocusItemRect := ReadRect(IniFile, IDName, 'focusitemrect');
  913.   ItemLeftOffset := IniFile.ReadInteger(IDName, 'itemleftoffset', 0);
  914.   ItemRightOffset := IniFile.ReadInteger(IDName, 'itemrightoffset', 0);
  915.   ItemTextRect := ReadRect(IniFile, IDName, 'itemtextrect');
  916.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  917.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  918.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  919.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  920.   FocusFontColor := IniFile.ReadInteger(IDName, 'focusfontcolor', 0);
  921.   //
  922.   ListBoxName := IniFile.ReadString(IDName, 'listboxname', '');
  923.   //
  924.   ButtonRect := ReadRect(IniFile, IDName, 'buttonrect');
  925.   ActiveButtonRect := ReadRect(IniFile, IDName, 'activebuttonrect');
  926.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  927.   UnEnabledButtonRect := ReadRect(IniFile, IDName, 'unenabledbuttonrect');
  928.   //
  929. end;
  930. procedure TbsDataSkinComboBox.SaveToFile;
  931. begin
  932.   inherited;
  933.   WriteRect(IniFile, IDName, 'itemrect', SItemRect);
  934.   WriteRect(IniFile, IDName, 'focusitemrect', FocusItemRect);
  935.   IniFile.WriteInteger(IDName, 'itemleftoffset', ItemLeftOffset);
  936.   IniFile.WriteInteger(IDName, 'itemrightoffset', ItemRightOffset);
  937.   WriteRect(IniFile, IDName, 'itemtextrect', ItemTextRect);
  938.   IniFile.WriteString(IDName, 'fontname', FontName);
  939.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  940.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  941.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  942.   IniFile.WriteInteger(IDName, 'focusfontcolor', FocusFontColor);
  943.   //
  944.   WriteRect(IniFile, IDName, 'buttonrect', ButtonRect);
  945.   WriteRect(IniFile, IDName, 'activebuttonrect', ActiveButtonRect);
  946.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  947.   WriteRect(IniFile, IDName, 'unenabledbuttonrect', UnEnabledButtonRect);
  948.   //
  949.   IniFile.WriteString(IDName, 'listboxname', ListBoxName);
  950. end;
  951. constructor TbsDataSkinControlBar.Create(AIDName: String);
  952. begin
  953.   inherited;
  954.   BGPictureIndex := -1;
  955. end;
  956. procedure TbsDataSkinControlBar.LoadFromFile;
  957. begin
  958.   inherited;
  959.   ItemRect := ReadRect(IniFile, IDName, 'itemrect');
  960.   BGPictureIndex := IniFile.ReadInteger(IDName, 'bgpictureindex', -1);
  961. end;
  962. procedure TbsDataSkinControlBar.SaveToFile;
  963. begin
  964.   inherited;
  965.   WriteRect(IniFile, IDName, 'itemrect', ItemRect);
  966.   IniFile.WriteInteger(IDName, 'bgpictureindex', BGPictureIndex);
  967. end;
  968. constructor TbsDataSkinSlider.Create;
  969. begin
  970.   inherited;
  971.   BGColor := 0;
  972. end;
  973. procedure TbsDataSkinSlider.LoadFromFile;
  974. begin
  975.   inherited;
  976.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  977.   HRulerRect := ReadRect(IniFile, IDName, 'hrulerrect');
  978.   HThumbRect := ReadRect(IniFile, IDName, 'hthumbrect');
  979.   VRulerRect := ReadRect(IniFile, IDName, 'vrulerrect');
  980.   VThumbRect := ReadRect(IniFile, IDName, 'vthumbrect');
  981.   EdgeSize := IniFile.ReadInteger(IDName, 'edgesize', 0);
  982.   PointsColor := IniFile.ReadInteger(IDName, 'pointscolor', 0);
  983. end;
  984. procedure TbsDataSkinSlider.SaveToFile;
  985. begin
  986.   inherited;
  987.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  988.   WriteRect(IniFile, IDName, 'hrulerrect', HRulerRect);
  989.   WriteRect(IniFile, IDName, 'hthumbrect', HThumbRect);
  990.   WriteRect(IniFile, IDName, 'vrulerrect', VRulerRect);
  991.   WriteRect(IniFile, IDName, 'vthumbrect', VThumbRect);
  992.   IniFile.WriteInteger(IDName, 'edgesize', EdgeSize);
  993.   IniFile.WriteInteger(IDName, 'pointscolor', PointsColor);
  994. end;
  995. constructor TbsDataSkinBevel.Create;
  996. begin
  997.   inherited;
  998.   LightColor := 0;
  999.   DarkColor := 0;
  1000. end;
  1001. procedure TbsDataSkinBevel.LoadFromFile;
  1002. begin
  1003.   inherited;
  1004.   LightColor := IniFile.ReadInteger(IDName, 'lightcolor', 0);
  1005.   DarkColor := IniFile.ReadInteger(IDName, 'darkcolor', 0);
  1006. end;
  1007. procedure TbsDataSkinBevel.SaveToFile;
  1008. begin
  1009.   inherited;
  1010.   IniFile.WriteInteger(IDName, 'lightcolor', LightColor);
  1011.   IniFile.WriteInteger(IDName, 'darkcolor', DarkColor);
  1012. end;
  1013. constructor TbsDataSkinTreeView.Create;
  1014. begin
  1015.   inherited;
  1016.   FontName := 'Arial';
  1017.   FontStyle := [];
  1018.   FontHeight := 14;
  1019.   FontColor := 0;
  1020.   BGColor := clWhite;
  1021. end;
  1022. procedure TbsDataSkinTreeView.LoadFromFile;
  1023. begin
  1024.   inherited;
  1025.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1026.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1027.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1028.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1029.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  1030. end;
  1031. procedure TbsDataSkinTreeView.SaveToFile;
  1032. begin
  1033.   inherited;
  1034.   IniFile.WriteString(IDName, 'fontname', FontName);
  1035.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1036.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1037.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1038.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  1039. end;
  1040. constructor TbsDataSkinListView.Create;
  1041. begin
  1042.   inherited;
  1043.   FontName := 'Arial';
  1044.   FontStyle := [];
  1045.   FontHeight := 14;
  1046.   FontColor := 0;
  1047.   BGColor := clWhite;
  1048. end;
  1049. procedure TbsDataSkinListView.LoadFromFile;
  1050. begin
  1051.   inherited;
  1052.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1053.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1054.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1055.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1056.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  1057. end;
  1058. procedure TbsDataSkinListView.SaveToFile;
  1059. begin
  1060.   inherited;
  1061.   IniFile.WriteString(IDName, 'fontname', FontName);
  1062.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1063.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1064.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1065.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  1066. end;
  1067. constructor TbsDataSkinRichEdit.Create;
  1068. begin
  1069.   inherited;
  1070.   FontName := 'Arial';
  1071.   FontStyle := [];
  1072.   FontHeight := 14;
  1073.   FontColor := 0;
  1074.   BGColor := clWhite;
  1075. end;
  1076. procedure TbsDataSkinRichEdit.LoadFromFile;
  1077. begin
  1078.   inherited;
  1079.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1080.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1081.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1082.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1083.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  1084. end;
  1085. procedure TbsDataSkinRichEdit.SaveToFile;
  1086. begin
  1087.   inherited;
  1088.   IniFile.WriteString(IDName, 'fontname', FontName);
  1089.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1090.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1091.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1092.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  1093. end;
  1094. constructor TbsDataSkinTabControl.Create(AIDName: String);
  1095. begin
  1096.   inherited;
  1097.   FontName := 'Arial';
  1098.   FontStyle := [];
  1099.   FontHeight := 14;
  1100.   FontColor := 0;
  1101.   ActiveFontColor := 0;
  1102.   FocusFontColor := 0;
  1103.   UpDown := '';
  1104.   BGPictureIndex := -1;
  1105. end;
  1106. procedure TbsDataSkinTabControl.LoadFromFile;
  1107. begin
  1108.   inherited;
  1109.   TabRect := ReadRect(IniFile, IDName, 'tabrect');
  1110.   ActiveTabRect := ReadRect(IniFile, IDName, 'activetabrect');
  1111.   FocusTabRect := ReadRect(IniFile, IDName, 'focustabrect');
  1112.   MouseInTabRect := ReadRect(IniFile, IDName, 'mouseintabrect');
  1113.   ClRect := ReadRect(IniFile, IDName, 'clientrect');
  1114.   BGPictureIndex := IniFile.ReadInteger(IDName, 'bgpictureindex', -1);
  1115.   LTPoint := ReadPoint(IniFile, IDName, 'lefttoppoint');
  1116.   RTPoint := Readpoint(IniFile, IDName, 'righttoppoint');
  1117.   LBPoint := ReadPoint(IniFile, IDName, 'leftbottompoint');
  1118.   RBPoint := ReadPoint(IniFile, IDName, 'rightbottompoint');
  1119.   TabLeftOffset := IniFile.ReadInteger(IDName, 'tableftoffset', 0);
  1120.   TabRightOffset := IniFile.ReadInteger(IDName, 'tabrightoffset', 0);
  1121.   TabsBGRect := ReadRect(IniFile, IDName, 'tabsbgrect');
  1122.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1123.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1124.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1125.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1126.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1127.   FocusFontColor := IniFile.ReadInteger(IDName, 'focusfontcolor', 0);
  1128.   MouseInFontColor := IniFile.ReadInteger(IDName, 'mouseinfontcolor', 0);
  1129.   UpDown := IniFile.ReadString(IDName, 'updown', '');
  1130. end;
  1131. procedure TbsDataSkinTabControl.SaveToFile;
  1132. begin
  1133.   inherited;
  1134.   WriteRect(IniFile, IDName, 'tabrect', TabRect);
  1135.   WriteRect(IniFile, IDName, 'activetabrect', ActiveTabRect);
  1136.   WriteRect(IniFile, IDName, 'focustabrect', FocusTabRect);
  1137.   WriteRect(IniFile, IDName, 'mouseintabrect',  MouseInTabRect);
  1138.   WriteRect(IniFile, IDName, 'clientrect', ClRect);
  1139.   IniFile.WriteInteger(IDName, 'bgpictureindex', BGPictureIndex);
  1140.   WritePoint(IniFile, IDName, 'lefttoppoint', LTPoint);
  1141.   writePoint(IniFile, IDName, 'righttoppoint', RTPoint);
  1142.   WritePoint(IniFile, IDName, 'leftbottompoint', LBPoint);
  1143.   WritePoint(IniFile, IDName, 'rightbottompoint', RBPoint);
  1144.   IniFile.WriteInteger(IDName, 'tableftoffset', TabLeftOffset);
  1145.   IniFile.WriteInteger(IDName, 'tabrightoffset', TabRightOffset);
  1146.   WriteRect(IniFile, IDName, 'tabsbgrect', TabsBGRect);
  1147.   IniFile.WriteString(IDName, 'fontname', FontName);
  1148.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1149.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1150.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1151.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1152.   IniFile.WriteInteger(IDName, 'focusfontcolor', FocusFontColor);
  1153.   IniFile.WriteInteger(IDName, 'mouseinfontcolor', MouseInFontColor);
  1154.   IniFile.WriteString(IDName, 'updown', UpDown);
  1155. end;
  1156. constructor TbsDataSkinGridControl.Create;
  1157. begin
  1158.   inherited;
  1159.   FontName := 'Arial';
  1160.   FontStyle := [];
  1161.   FontHeight := 14;
  1162.   FontColor := 0;
  1163.   FixedFontName := 'Arial';
  1164.   FixedFontStyle := [];
  1165.   FixedFontHeight := 14;
  1166.   FixedFontColor := 0;
  1167. end;
  1168. procedure TbsDataSkinGridControl.LoadFromFile(IniFile: TCustomIniFile);
  1169. begin
  1170.   inherited;
  1171.   FixedCellRect := ReadRect(IniFile, IDName, 'fixedcellrect');
  1172.   SelectCellRect := ReadRect(IniFile, IDName, 'selectcellrect');
  1173.   FocusCellRect := ReadRect(IniFile, IDName, 'focuscellrect');
  1174.   //
  1175.   FixedCellLeftOffset := IniFile.ReadInteger(IDName, 'fixedcellleftoffset', 0);
  1176.   FixedCellRightOffset := IniFile.ReadInteger(IDName, 'fixedcellrightoffset', 0);
  1177.   FixedCellTextRect := ReadRect(IniFile, IDName, 'fixedcelltextrect');
  1178.   //
  1179.   CellLeftOffset := IniFile.ReadInteger(IDName, 'cellleftoffset', 0);
  1180.   CellRightOffset := IniFile.ReadInteger(IDName, 'cellrightoffset', 0);
  1181.   CellTextRect := ReadRect(IniFile, IDName, 'celltextrect');
  1182.   //
  1183.   LinesColor := IniFile.ReadInteger(IDName, 'linescolor', 0);
  1184.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  1185.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1186.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1187.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1188.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1189.   SelectFontColor := IniFile.ReadInteger(IDName, 'selectfontcolor', 0);
  1190.   FocusFontColor := IniFile.ReadInteger(IDName, 'focusfontcolor', 0);
  1191.   //
  1192.   FixedFontName := IniFile.ReadString(IDName, 'fixedfontname', 'Arial');
  1193.   FixedFontHeight := IniFile.ReadInteger(IDName, 'fixedfontheight', 14);
  1194.   FixedFontStyle := ReadFontStyles(IniFile, IDName, 'fixedfontstyle');
  1195.   FixedFontColor := IniFile.ReadInteger(IDName, 'fixedfontcolor', 0);
  1196. end;
  1197. procedure TbsDataSkinGridControl.SaveToFile(IniFile: TCustomIniFile);
  1198. begin
  1199.   inherited;
  1200.   WriteRect(IniFile, IDName, 'fixedcellrect', FixedCellRect);
  1201.   WriteRect(IniFile, IDName, 'selectcellrect', SelectCellRect);
  1202.   WriteRect(IniFile, IDName, 'focuscellrect', FocusCellRect);
  1203.   //
  1204.   IniFile.WriteInteger(IDName, 'fixedcellleftoffset', FixedCellLeftOffset);
  1205.   IniFile.WriteInteger(IDName, 'fixedcellrightoffset', FixedCellRightOffset);
  1206.   WriteRect(IniFile, IDName, 'fixedcelltextrect', FixedCellTextRect);
  1207.   //
  1208.   IniFile.WriteInteger(IDName, 'cellleftoffset', CellLeftOffset);
  1209.   IniFile.WriteInteger(IDName, 'cellrightoffset', CellRightOffset);
  1210.   WriteRect(IniFile, IDName, 'celltextrect', CellTextRect);
  1211.   //
  1212.   IniFile.WriteInteger(IDName, 'linescolor', LinesColor);
  1213.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  1214.   IniFile.WriteString(IDName, 'fontname', FontName);
  1215.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1216.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1217.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1218.   IniFile.WriteInteger(IDName, 'selectfontcolor', SelectFontColor);
  1219.   IniFile.WriteInteger(IDName, 'focusfontcolor', FocusFontColor);
  1220.   //
  1221.   IniFile.WriteString(IDName, 'fixedfontname', FixedFontName);
  1222.   IniFile.WriteInteger(IDName, 'fixedfontheight', FixedFontHeight);
  1223.   WriteFontStyles(IniFile, IDName, 'fixedfontstyle', FixedFontStyle);
  1224.   IniFile.WriteInteger(IDName, 'fixedfontcolor', FixedFontColor);
  1225. end;
  1226. constructor TbsDataSkinCustomControl.Create;
  1227. begin
  1228.   inherited;
  1229.   LTPoint := Point(0, 0);
  1230.   RBPoint := Point(0, 0);
  1231.   LBPoint := Point(0, 0);
  1232.   RTPoint := Point(0, 0);
  1233.   ClRect := Rect(0, 0, 0, 0);
  1234.   MaskPictureIndex := -1;
  1235. end;
  1236. procedure TbsDataSkinCustomControl.LoadFromFile;
  1237. begin
  1238.   inherited;
  1239.   LTPoint := ReadPoint(IniFile, IDName, 'lefttoppoint');
  1240.   RTPoint := ReadPoint(IniFile, IDName, 'righttoppoint');
  1241.   LBPoint := ReadPoint(IniFile, IDName, 'leftbottompoint');
  1242.   RBPoint := ReadPoint(IniFile, IDName, 'rightbottompoint');
  1243.   ClRect := ReadRect(IniFile, IDName, 'clientrect');
  1244. end;
  1245. procedure TbsDataSkinCustomControl.SaveToFile;
  1246. begin
  1247.   inherited;
  1248.   WritePoint(IniFile, IDName, 'lefttoppoint', LTPoint);
  1249.   WritePoint(IniFile, IDName, 'righttoppoint', RTPoint);
  1250.   WritePoint(IniFile, IDName, 'leftbottompoint', LBPoint);
  1251.   WritePoint(IniFile, IDName, 'rightbottompoint', RBPoint);
  1252.   WriteRect(IniFile, IDName, 'clientrect', ClRect);
  1253. end;
  1254. constructor TbsDataSkinSpinEditControl.Create;
  1255. begin
  1256.   inherited;
  1257.   FontName := 'Arial';
  1258.   FontStyle := [];
  1259.   FontHeight := 12;
  1260.   FontColor := 0;
  1261. end;
  1262. procedure TbsDataSkinSpinEditControl.LoadFromFile;
  1263. begin
  1264.   inherited;
  1265.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1266.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1267.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1268.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1269.   UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
  1270.   ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
  1271.   DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
  1272.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  1273.   ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
  1274.   DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
  1275. end;
  1276. procedure TbsDataSkinSpinEditControl.SaveToFile;
  1277. begin
  1278.   inherited;
  1279.   IniFile.WriteString(IDName, 'fontname', FontName);
  1280.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1281.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1282.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1283.   WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
  1284.   WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
  1285.   WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
  1286.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  1287.   WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
  1288.   WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
  1289. end;
  1290. constructor TbsDataSkinEditControl.Create;
  1291. begin
  1292.   inherited;
  1293.   FontName := 'Arial';
  1294.   FontStyle := [];
  1295.   FontHeight := 12;
  1296.   FontColor := 0;
  1297.   ActiveFontColor := 0;
  1298. end;
  1299. procedure TbsDataSkinEditControl.LoadFromFile;
  1300. begin
  1301.   inherited;
  1302.   ActiveSkinRect := ReadRect(IniFile, IDName, 'activeskinrect');
  1303.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1304.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1305.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1306.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1307.   DisabledFontColor := IniFile.ReadInteger(IDName, 'disabledfontcolor', 0);
  1308.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1309.   ButtonRect := ReadRect(IniFile, IDName, 'buttonrect');
  1310.   ActiveButtonRect := ReadRect(IniFile, IDName, 'activebuttonrect');
  1311.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  1312. end;
  1313. procedure TbsDataSkinEditControl.SaveToFile;
  1314. begin
  1315.   inherited;
  1316.   WriteRect(IniFile, IDName, 'activeskinrect', ActiveSkinRect);
  1317.   IniFile.WriteString(IDName, 'fontname', FontName);
  1318.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1319.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1320.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1321.   IniFile.WriteInteger(IDName, 'disabledfontcolor', DisabledFontColor);
  1322.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1323.   WriteRect(IniFile, IDName, 'buttonrect', ButtonRect);
  1324.   WriteRect(IniFile, IDName, 'activebuttonrect', ActiveButtonRect);
  1325.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  1326. end;
  1327. constructor TbsDataSkinMemoControl.Create(AIDName: String);
  1328. begin
  1329.   inherited;
  1330. end;
  1331. procedure TbsDataSkinMemoControl.LoadFromFile;
  1332. begin
  1333.   inherited;
  1334.   BGColor := IniFile.ReadInteger(IDName, 'bgcolor', 0);
  1335.   ActiveBGColor := IniFile.ReadInteger(IDName, 'activebgcolor', 0);
  1336. end;
  1337. procedure TbsDataSkinMemoControl.SaveToFile;
  1338. begin
  1339.   inherited;
  1340.   IniFile.WriteInteger(IDName, 'bgcolor', BGColor);
  1341.   IniFile.WriteInteger(IDName, 'activebgcolor', ActiveBGColor);
  1342. end;
  1343. constructor TbsDataSkinStdLabelControl.Create;
  1344. begin
  1345.   inherited;
  1346.   FontName := 'Arial';
  1347.   FontStyle := [];
  1348.   FontHeight := 12;
  1349.   FontColor := 0;
  1350.   ActiveFontColor := clBlue;
  1351. end;
  1352. procedure TbsDataSkinStdLabelControl.LoadFromFile;
  1353. begin
  1354.   inherited;
  1355.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1356.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1357.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1358.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1359.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', clBlue);
  1360. end;
  1361. procedure TbsDataSkinStdLabelControl.SaveToFile;
  1362. begin
  1363.   inherited;
  1364.   IniFile.WriteString(IDName, 'fontname', FontName);
  1365.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1366.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1367.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1368.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1369. end;
  1370. constructor TbsDataSkinLabelControl.Create;
  1371. begin
  1372.   inherited;
  1373.   FontName := 'Arial';
  1374.   FontStyle := [];
  1375.   FontHeight := 12;
  1376.   FontColor := 0;
  1377. end;
  1378. procedure TbsDataSkinLabelControl.LoadFromFile;
  1379. begin
  1380.   inherited;
  1381.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1382.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1383.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1384.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1385. end;
  1386. procedure TbsDataSkinLabelControl.SaveToFile;
  1387. begin
  1388.   inherited;
  1389.   IniFile.WriteString(IDName, 'fontname', FontName);
  1390.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1391.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1392.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1393. end;
  1394. constructor TbsDataSkinScrollBarControl.Create;
  1395. begin
  1396.   inherited;
  1397.   ThumbOffset1 := 0;
  1398.   ThumbOffset2 := 0;
  1399. end;
  1400. procedure TbsDataSkinScrollBarControl.LoadFromFile;
  1401. begin
  1402.   inherited;
  1403.   TrackArea := ReadRect(IniFile, IDName, 'trackarea');
  1404.   UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
  1405.   ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
  1406.   DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
  1407.   DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
  1408.   ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
  1409.   DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
  1410.   ThumbRect := ReadRect(IniFile, IDName, 'thumbrect');
  1411.   ActiveThumbRect := ReadRect(IniFile, IDName, 'activethumbrect');
  1412.   DownThumbRect := ReadRect(IniFile, IDName, 'downthumbrect');
  1413.   ThumbOffset1 := IniFile.ReadInteger(IDName, 'thumboffset1', 0);
  1414.   ThumbOffset2 := IniFile.ReadInteger(IDName, 'thumboffset2', 0);
  1415.   GlyphRect := ReadRect(IniFile, IDName, 'glyphrect');
  1416.   ActiveGlyphRect := ReadRect(IniFile, IDName, 'activeglyphrect');
  1417.   DownGlyphRect := ReadRect(IniFile, IDName, 'downglyphrect');
  1418. end;
  1419. procedure TbsDataSkinScrollBarControl.SaveToFile;
  1420. begin
  1421.   inherited;
  1422.   WriteRect(IniFile, IDName, 'trackarea', TrackArea);
  1423.   WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
  1424.   WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
  1425.   WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
  1426.   WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
  1427.   WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
  1428.   WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
  1429.   WriteRect(IniFile, IDName, 'thumbrect', ThumbRect);
  1430.   WriteRect(IniFile, IDName, 'activethumbrect', ActiveThumbRect);
  1431.   WriteRect(IniFile, IDName, 'downthumbrect', DownThumbRect);
  1432.   IniFile.WriteInteger(IDName, 'thumboffset1', ThumbOffset1);
  1433.   IniFile.WriteInteger(IDName, 'thumboffset2', ThumbOffset2);
  1434.   WriteRect(IniFile, IDName, 'glyphrect', GlyphRect);
  1435.   WriteRect(IniFile, IDName, 'activeglyphrect', ActiveGlyphRect);
  1436.   WriteRect(IniFile, IDName, 'downglyphrect', DownGlyphRect);
  1437. end;
  1438. constructor TbsDataSkinTrackBarControl.Create;
  1439. begin
  1440.   inherited;
  1441.   TrackArea := NullRect;
  1442.   ButtonRect := NullRect;
  1443.   ActiveButtonRect := NullRect;
  1444.   Vertical := False;
  1445. end;
  1446. procedure TbsDataSkinTrackBarControl.LoadFromFile;
  1447. begin
  1448.   inherited;
  1449.   TrackArea := ReadRect(IniFile, IDName, 'trackarea');
  1450.   ButtonRect := ReadRect(IniFile, IDName, 'buttonrect');
  1451.   ActiveButtonRect := ReadRect(IniFile, IDName, 'activebuttonrect');
  1452.   Vertical := ReadBoolean(IniFile, IDName, 'vertical');
  1453. end;
  1454. procedure TbsDataSkinTrackBarControl.SaveToFile;
  1455. begin
  1456.   inherited;
  1457.   WriteRect(IniFile, IDName, 'trackarea', TrackArea);
  1458.   WriteRect(IniFile, IDName, 'buttonrect', ButtonRect);
  1459.   WriteRect(IniFile, IDName, 'activebuttonrect', ActiveButtonRect);
  1460.   WriteBoolean(IniFile, IDName, 'vertical', Vertical);
  1461. end;
  1462. constructor TbsDataSkinGaugeControl.Create;
  1463. begin
  1464.   inherited;
  1465.   ProgressArea := NullRect;
  1466.   ProgressRect := NullRect;
  1467.   Vertical := False;
  1468.   BeginOffset := 0;
  1469.   EndOffset := 0;
  1470.   FontName := 'Arial';
  1471.   FontStyle := [];
  1472.   FontHeight := 14;
  1473.   FontColor := 0;
  1474. end;
  1475. procedure TbsDataSkinGaugeControl.LoadFromFile;
  1476. begin
  1477.   inherited;
  1478.   ProgressArea := ReadRect(IniFile, IDName, 'progressarea');
  1479.   ProgressRect := ReadRect(IniFile, IDName, 'progressrect');
  1480.   BeginOffset := IniFile.ReadInteger(IDName, 'beginoffset', 0);
  1481.   EndOffset := IniFile.ReadInteger(IDName, 'endoffset', 0);
  1482.   Vertical := ReadBoolean(IniFile, IDName, 'vertical');
  1483.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1484.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1485.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1486.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1487. end;
  1488. procedure TbsDataSkinGaugeControl.SaveToFile;
  1489. begin
  1490.   inherited;
  1491.   WriteRect(IniFile, IDName, 'progressarea', ProgressArea);
  1492.   WriteRect(IniFile, IDName, 'progressrect', ProgressRect);
  1493.   IniFile.WriteInteger(IDName, 'beginoffset', BeginOffset);
  1494.   IniFile.WriteInteger(IDName, 'endoffset', EndOffset);
  1495.   WriteBoolean(IniFile, IDName, 'vertical', Vertical);
  1496.   IniFile.WriteString(IDName, 'fontname', FontName);
  1497.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1498.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1499.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1500. end;
  1501. constructor TbsDataSkinScrollBoxControl.Create(AIDName: String);
  1502. begin
  1503.   inherited;
  1504.   BGPictureIndex := -1;
  1505. end;
  1506. procedure TbsDataSkinScrollBoxControl.LoadFromFile(IniFile: TCustomIniFile);
  1507. begin
  1508.   inherited;
  1509.   BGPictureIndex := IniFile.ReadInteger(IDName, 'bgpictureindex', -1);
  1510. end;
  1511. procedure TbsDataSkinScrollBoxControl.SaveToFile(IniFile: TCustomIniFile);
  1512. begin
  1513.   inherited;
  1514.   IniFile.WriteInteger(IDName, 'bgpictureindex', BGPictureIndex);
  1515. end;
  1516. constructor TbsDataSkinExPanelControl.Create(AIDName: String);
  1517. begin
  1518.   inherited;
  1519.   FontName := 'Arial';
  1520.   FontStyle := [];
  1521.   FontHeight := 12;
  1522.   FontColor := 0;
  1523. end;
  1524. procedure TbsDataSkinExPanelControl.LoadFromFile(IniFile: TCustomIniFile);
  1525. begin
  1526.   inherited;
  1527.   RollHSkinRect := ReadRect(IniFile, IDName, 'rollhskinrect');
  1528.   RollVSkinRect := ReadRect(IniFile, IDName, 'rollvskinrect');
  1529.   RollLeftOffset := IniFile.ReadInteger(IDName, 'rollleftoffset', 0);
  1530.   RollRightOffset := IniFile.ReadInteger(IDName, 'rollrightoffset', 0);
  1531.   RollTopOffset := IniFile.ReadInteger(IDName, 'rolltopoffset', 0);
  1532.   RollBottomOffset := IniFile.ReadInteger(IDName, 'rollbottomoffset', 0);
  1533.   RollVCaptionRect := ReadRect(IniFile, IDName, 'rollvcaptionrect');
  1534.   RollHCaptionRect := ReadRect(IniFile, IDName, 'rollhcaptionrect');
  1535.   //
  1536.   CloseButtonRect := ReadRect(IniFile, IDName, 'closebuttonrect');
  1537.   CloseButtonActiveRect := ReadRect(IniFile, IDName, 'closebuttonactiverect');
  1538.   CloseButtonDownRect := ReadRect(IniFile, IDName, 'closebuttondownrect');
  1539.   HRollButtonRect := ReadRect(IniFile, IDName, 'hrollbuttonrect');
  1540.   HRollButtonActiveRect := ReadRect(IniFile, IDName, 'hrollbuttonactiverect');
  1541.   HRollButtonDownRect := ReadRect(IniFile, IDName, 'hrollbuttondownrect');
  1542.   HRestoreButtonRect := ReadRect(IniFile, IDName, 'hrestorebuttonrect');
  1543.   HRestoreButtonActiveRect := ReadRect(IniFile, IDName, 'hrestorebuttonactiverect');
  1544.   HRestoreButtonDownRect := ReadRect(IniFile, IDName, 'hrestorebuttondownrect');
  1545.   VRollButtonRect := ReadRect(IniFile, IDName, 'vrollbuttonrect');
  1546.   VRollButtonActiveRect := ReadRect(IniFile, IDName, 'vrollbuttonactiverect');
  1547.   VRollButtonDownRect := ReadRect(IniFile, IDName, 'vrollbuttondownrect');
  1548.   VRestoreButtonRect := ReadRect(IniFile, IDName, 'vrestorebuttonrect');
  1549.   VRestoreButtonActiveRect := ReadRect(IniFile, IDName, 'vrestorebuttonactiverect');
  1550.   VRestoreButtonDownRect := ReadRect(IniFile, IDName, 'vrestorebuttondownrect');
  1551.   //
  1552.   CaptionRect := ReadRect(IniFile, IDName, 'captionrect');
  1553.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1554.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1555.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1556.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1557. end;
  1558. procedure TbsDataSkinExPanelControl.SaveToFile(IniFile: TCustomIniFile);
  1559. begin
  1560.   inherited;
  1561.   WriteRect(IniFile, IDName, 'rollhskinrect', RollHSkinRect);
  1562.   WriteRect(IniFile, IDName, 'rollvskinrect', RollVSkinRect);
  1563.   IniFile.WriteInteger(IDName, 'rollleftoffset', RollLeftOffset);
  1564.   IniFile.WriteInteger(IDName, 'rollrightoffset', RollRightOffset);
  1565.   IniFile.WriteInteger(IDName, 'rolltopoffset', RollTopOffset);
  1566.   IniFile.WriteInteger(IDName, 'rollbottomoffset', RollBottomOffset);
  1567.   WriteRect(IniFile, IDName, 'rollvcaptionrect', RollVCaptionRect);
  1568.   WriteRect(IniFile, IDName, 'rollhcaptionrect', RollHCaptionRect);
  1569.   //
  1570.   WriteRect(IniFile, IDName, 'closebuttonrect', CloseButtonRect);
  1571.   WriteRect(IniFile, IDName, 'closebuttonactiverect', CloseButtonActiveRect);
  1572.   WriteRect(IniFile, IDName, 'closebuttondownrect', CloseButtonDownRect);
  1573.   WriteRect(IniFile, IDName, 'hrollbuttonrect', HRollButtonRect);
  1574.   WriteRect(IniFile, IDName, 'hrollbuttonactiverect', HRollButtonActiveRect);
  1575.   WriteRect(IniFile, IDName, 'hrollbuttondownrect', HRollButtonDownRect);
  1576.   WriteRect(IniFile, IDName, 'hrestorebuttonrect', HRestoreButtonRect);
  1577.   WriteRect(IniFile, IDName, 'hrestorebuttonactiverect', HRestoreButtonActiveRect);
  1578.   WriteRect(IniFile, IDName, 'hrestorebuttondownrect', HRestoreButtonDownRect);
  1579.   WriteRect(IniFile, IDName, 'vrollbuttonrect', VRollButtonRect);
  1580.   WriteRect(IniFile, IDName, 'vrollbuttonactiverect', VRollButtonActiveRect);
  1581.   WriteRect(IniFile, IDName, 'vrollbuttondownrect', VRollButtonDownRect);
  1582.   WriteRect(IniFile, IDName, 'vrestorebuttonrect', VRestoreButtonRect);
  1583.   WriteRect(IniFile, IDName, 'vrestorebuttonactiverect', VRestoreButtonActiveRect);
  1584.   WriteRect(IniFile, IDName, 'vrestorebuttondownrect', VRestoreButtonDownRect);
  1585.   //
  1586.   WriteRect(IniFile, IDName, 'captionrect', CaptionRect);
  1587.   IniFile.WriteString(IDName, 'fontname', FontName);
  1588.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1589.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1590.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1591. end;
  1592. constructor TbsDataSkinPanelControl.Create;
  1593. begin
  1594.   inherited;
  1595.   CaptionRect := NullRect;
  1596.   RollUpMarkerRect := NullRect;
  1597.   RestoreMarkerRect := NullRect;
  1598.   FontName := 'Arial';
  1599.   FontStyle := [];
  1600.   FontHeight := 12;
  1601.   FontColor := 0;
  1602.   Alignment := taCenter;
  1603.   BGPictureIndex := -1;
  1604. end;
  1605. procedure TbsDataSkinPanelControl.LoadFromFile;
  1606. begin
  1607.   inherited;
  1608.   BGPictureIndex := IniFile.ReadInteger(IDName, 'bgpictureindex', -1);
  1609.   CaptionRect := ReadRect(IniFile, IDName, 'captionrect');
  1610.   RollUpMarkerRect := ReadRect(IniFile, IDName, 'rollupmarkerrect');
  1611.   RestoreMarkerRect := ReadRect(IniFile, IDName, 'restoremarkerrect');
  1612.   Alignment := ReadAlignment(IniFile, IDName, 'alignment');
  1613.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1614.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1615.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1616.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1617.   CheckImageRect := ReadRect(IniFile, IDName, 'checkimagerect');
  1618.   UnCheckImageRect := ReadRect(IniFile, IDName, 'uncheckimagerect');
  1619. end;
  1620. procedure TbsDataSkinPanelControl.SaveToFile;
  1621. begin
  1622.   inherited;
  1623.   IniFile.WriteInteger(IDName, 'bgpictureindex', BGPictureIndex);
  1624.   WriteRect(IniFile, IDName, 'captionrect', CaptionRect);
  1625.   WriteRect(IniFile, IDName, 'rollupmarkerrect', RollUpMarkerRect);
  1626.   WriteRect(IniFile, IDName, 'restoremarkerrect', RestoreMarkerRect);
  1627.   WriteAlignment(IniFile, IDName, 'alignment', Alignment);
  1628.   IniFile.WriteString(IDName, 'fontname', FontName);
  1629.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1630.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1631.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1632.   WriteRect(IniFile, IDName, 'checkimagerect', CheckImageRect);
  1633.   WriteRect(IniFile, IDName, 'uncheckimagerect', UnCheckImageRect);
  1634. end;
  1635. constructor TbsDataSkinCheckRadioControl.Create;
  1636. begin
  1637.   inherited;
  1638.   Morphing := False;
  1639.   FontName := 'Arial';
  1640.   FontStyle := [];
  1641.   FontHeight := 12;
  1642.   FontColor := 0;
  1643.   ActiveFontColor := 0;
  1644.   UnEnabledFontColor := 0;
  1645.   FontColor := 0;
  1646.   CheckImageArea := NullRect;
  1647.   TextArea := NullRect;
  1648.   ActiveSkinRect := NullRect;
  1649.   CheckImageRect := NullRect;
  1650.   UnCheckImageRect := NullRect;
  1651. end;
  1652. procedure TbsDataSkinCheckRadioControl.LoadFromFile;
  1653. begin
  1654.   inherited;
  1655.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1656.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1657.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1658.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1659.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1660.   UnEnabledFontColor := IniFile.ReadInteger(IDName, 'unenabledfontcolor', 0);
  1661.   FrameFontColor := IniFile.ReadInteger(IDName, 'framefontcolor', 0);
  1662.   ActiveSkinRect := ReadRect(IniFile, IDName, 'activeskinrect');
  1663.   CheckImageArea := ReadRect(IniFile, IDName, 'checkimagearea');
  1664.   TextArea := ReadRect(IniFile, IDName, 'textarea');
  1665.   CheckImageRect := ReadRect(IniFile, IDName, 'checkimagerect');
  1666.   UnCheckImageRect := ReadRect(IniFile, IDName, 'uncheckimagerect');
  1667.   ActiveCheckImageRect := ReadRect(IniFile, IDName, 'activecheckimagerect');
  1668.   ActiveUnCheckImageRect := ReadRect(IniFile, IDName, 'activeuncheckimagerect');
  1669.   UnEnabledCheckImageRect := ReadRect(IniFile, IDName, 'unenabledcheckimagerect');
  1670.   UnEnabledUnCheckImageRect := ReadRect(IniFile, IDName, 'unenableduncheckimagerect');
  1671.   Morphing := ReadBoolean(IniFile, IDName, 'morphing');
  1672.   MorphKind := ReadMorphKind(IniFile, IDName, 'morphkind');
  1673. end;
  1674. procedure TbsDataSkinCheckRadioControl.SaveToFile;
  1675. begin
  1676.   inherited;
  1677.   IniFile.WriteString(IDName, 'fontname', FontName);
  1678.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1679.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1680.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1681.   IniFile.WriteInteger(IDName, 'framefontcolor', FrameFontColor);
  1682.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1683.   IniFile.WriteInteger(IDName, 'unenabledfontcolor', UnEnabledFontColor);
  1684.   WriteRect(IniFile, IDName, 'activeskinrect', ActiveSkinRect);
  1685.   WriteRect(IniFile, IDName, 'checkimagearea', CheckImageArea);
  1686.   WriteRect(IniFile, IDName, 'textarea', TextArea);
  1687.   WriteRect(IniFile, IDName, 'checkimagerect', CheckImageRect);
  1688.   WriteRect(IniFile, IDName, 'uncheckimagerect', UnCheckImageRect);
  1689.   WriteRect(IniFile, IDName, 'activecheckimagerect', ActiveCheckImageRect);
  1690.   WriteRect(IniFile, IDName, 'activeuncheckimagerect', ActiveUnCheckImageRect);
  1691.   WriteRect(IniFile, IDName, 'unenabledcheckimagerect', UnEnabledCheckImageRect);
  1692.   WriteRect(IniFile, IDName, 'unenableduncheckimagerect', UnEnabledUnCheckImageRect);
  1693.   WriteBoolean(IniFile, IDName, 'morphing', Morphing);
  1694.   WriteMorphKind(IniFile, IDName, 'morphkind', MorphKind);
  1695. end;
  1696. constructor TbsDataSkinMenuButtonControl.Create;
  1697. begin
  1698.   inherited;
  1699. end;
  1700. procedure TbsDataSkinMenuButtonControl.LoadFromFile;
  1701. begin
  1702.   inherited;
  1703.   TrackButtonRect := ReadRect(IniFile, IDName, 'trackbuttonrect');
  1704. end;
  1705. procedure TbsDataSkinMenuButtonControl.SaveToFile;
  1706. begin
  1707.   inherited;
  1708.   WriteRect(IniFile, IDName, 'trackbuttonrect', TrackButtonRect);
  1709. end;
  1710. constructor TbsDataSkinButtonControl.Create;
  1711. begin
  1712.   inherited;
  1713.   Morphing := False;
  1714.   FontName := 'Arial';
  1715.   FontStyle := [];
  1716.   FontHeight := 12;
  1717.   FontColor := 0;
  1718.   ActiveFontColor := 0;
  1719.   DownFontColor := 0;
  1720.   FontColor := 0;
  1721.   ActiveSkinRect := NullRect;
  1722.   DownSkinRect := NullRect;
  1723.   DisabledSkinRect := NullRect;
  1724. end;
  1725. procedure TbsDataSkinButtonControl.LoadFromFile;
  1726. begin
  1727.   inherited;
  1728.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1729.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1730.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1731.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1732.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1733.   DownFontColor := IniFile.ReadInteger(IDName, 'downfontcolor', 0);
  1734.   DisabledFontColor := IniFile.ReadInteger(IDName, 'disabledfontcolor', 0);
  1735.   ActiveSkinRect := ReadRect(IniFile, IDName, 'activeskinrect');
  1736.   DownSkinRect := ReadRect(IniFile, IDName, 'downskinrect');
  1737.   DisabledSkinRect := ReadRect(IniFile, IDName, 'disabledskinrect');
  1738.   Morphing := ReadBoolean(IniFile, IDName, 'morphing');
  1739.   MorphKind := ReadMorphKind(IniFile, IDName, 'morphkind');
  1740. end;
  1741. procedure TbsDataSkinButtonControl.SaveToFile;
  1742. begin
  1743.   inherited;
  1744.   IniFile.WriteString(IDName, 'fontname', FontName);
  1745.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1746.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1747.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1748.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1749.   IniFile.WriteInteger(IDName, 'downfontcolor', DownFontColor);
  1750.   IniFile.WriteInteger(IDName, 'disabledfontcolor',   DisabledFontColor);
  1751.   WriteRect(IniFile, IDName, 'activeskinrect', ActiveSkinRect);
  1752.   WriteRect(IniFile, IDName, 'downskinrect', DownSkinRect);
  1753.   WriteRect(IniFile, IDName, 'disabledskinrect', DisabledSkinRect);
  1754.   WriteBoolean(IniFile, IDName, 'morphing', Morphing);
  1755.   WriteMorphKind(IniFile, IDName, 'morphkind', MorphKind);
  1756. end;
  1757. constructor TbsDataSkinObject.Create;
  1758. begin
  1759.   IDName := AIDName;
  1760.   ActivePictureIndex := -1;
  1761.   SkinRect := NullRect;
  1762.   ActiveSkinRect := SkinRect;
  1763.   Morphing := False;
  1764.   Hint := '';
  1765. end;
  1766. procedure TbsDataSkinObject.LoadFromFile;
  1767. begin
  1768.   Hint := IniFile.ReadString(IDName, 'hint', '');
  1769.   ActivePictureIndex := IniFile.ReadInteger(IDName, 'activepictureindex', -1);
  1770.   SkinRectInAPicture := ReadBoolean(IniFile, IDName, 'skinrectinapicture');
  1771.   SkinRect := ReadRect(IniFile, IDName, 'skinrect');
  1772.   ActiveSkinRect := ReadRect(IniFile, IDName, 'activeskinrect');
  1773.   Morphing := ReadBoolean(IniFile, IDName, 'morphing');
  1774.   MorphKind := ReadMorphKind(IniFile, IDName, 'morphkind');
  1775. end;
  1776. procedure TbsDataSkinObject.SaveToFile;
  1777. begin
  1778.   IniFile.EraseSection(IDName);
  1779.   IniFile.WriteString(IDName, 'hint', Hint);
  1780.   IniFile.WriteInteger(IDName, 'activepictureindex', ActivePictureIndex);
  1781.   WriteBoolean(IniFile, IDName, 'skinrectinapicture', SkinRectInAPicture);
  1782.   WriteRect(IniFile, IDName, 'skinrect', SkinRect);
  1783.   WriteRect(IniFile, IDName, 'activeskinrect', ActiveSkinRect);
  1784.   WriteBoolean(IniFile, IDName, 'morphing', Morphing);
  1785.   WriteMorphKind(IniFile, IDName, 'morphkind', MorphKind);
  1786. end;
  1787. procedure TbsDataUserObject.LoadFromFile;
  1788. begin
  1789.   SkinRect := ReadRect(IniFile, IDName, 'skinrect');
  1790. end;
  1791. procedure TbsDataUserObject.SaveToFile;
  1792. begin
  1793.   IniFile.EraseSection(IDName);
  1794.   WriteRect(IniFile, IDName, 'skinrect', SkinRect);
  1795. end;
  1796. constructor TbsDataSkinPopupWindow.Create;
  1797. begin
  1798.   inherited;
  1799.   WindowPictureIndex := -1;
  1800.   MaskPictureIndex := -1;
  1801.   LTPoint := Point(0, 0);
  1802.   LBPoint := Point(0, 0);
  1803.   RTPoint := Point(0, 0);
  1804.   RBPoint := Point(0, 0);
  1805.   ScrollMarkerColor := 0;
  1806.   ScrollMarkerActiveColor := 0;
  1807. end;
  1808. procedure TbsDataSkinPopupWindow.LoadFromFile;
  1809. begin
  1810.   WindowPictureIndex := IniFile.ReadInteger(
  1811.     'POPUPWINDOW', 'windowpictureindex', -1);
  1812.   MaskPictureIndex := IniFile.ReadInteger(
  1813.     'POPUPWINDOW', 'maskpictureindex', -1);
  1814.   LTPoint := ReadPoint(IniFile, 'POPUPWINDOW', 'lefttoppoint');
  1815.   RTPoint := Readpoint(IniFile, 'POPUPWINDOW', 'righttoppoint');
  1816.   LBPoint := ReadPoint(IniFile, 'POPUPWINDOW', 'leftbottompoint');
  1817.   RBPoint := ReadPoint(IniFile, 'POPUPWINDOW', 'rightbottompoint');
  1818.   ItemsRect := ReadRect(IniFile, 'POPUPWINDOW', 'itemsrect');
  1819.   ScrollMarkerColor := IniFile.ReadInteger('POPUPWINDOW', 'scrollmarkercolor', 0);
  1820.   ScrollMarkerActiveColor := IniFile.ReadInteger('POPUPWINDOW', 'scrollmarkeractivecolor', 0);
  1821. end;
  1822. procedure TbsDataSkinPopupWindow.SaveToFile;
  1823. begin
  1824.   IniFile.EraseSection('POPUPWINDOW');
  1825.   IniFile.WriteInteger('POPUPWINDOW', 'windowpictureindex',
  1826.     WindowPictureIndex);
  1827.   IniFile.WriteInteger( 'POPUPWINDOW', 'maskpictureindex',
  1828.     MaskPictureIndex);
  1829.   WritePoint(IniFile, 'POPUPWINDOW', 'lefttoppoint', LTPoint);
  1830.   WritePoint(IniFile, 'POPUPWINDOW', 'righttoppoint', RTPoint);
  1831.   WritePoint(IniFile, 'POPUPWINDOW', 'leftbottompoint', LBPoint);
  1832.   WritePoint(IniFile, 'POPUPWINDOW', 'rightbottompoint', RBPoint);
  1833.   WriteRect(IniFile, 'POPUPWINDOW', 'itemsrect', ItemsRect);
  1834.   IniFile.WriteInteger('POPUPWINDOW', 'scrollmarkercolor', ScrollMarkerColor);
  1835.   IniFile.WriteInteger('POPUPWINDOW', 'scrollmarkeractivecolor', ScrollMarkerActiveColor);
  1836. end;
  1837. constructor TbsDataSkinHintWindow.Create;
  1838. begin
  1839.   inherited;
  1840.   WindowPictureIndex := -1;
  1841.   MaskPictureIndex := -1;
  1842.   LTPoint := Point(0, 0);
  1843.   LBPoint := Point(0, 0);
  1844.   RTPoint := Point(0, 0);
  1845.   RBPoint := Point(0, 0);
  1846.   ClRect := NullRect;
  1847.   FontName := 'Arial';
  1848.   FontStyle := [];
  1849.   FontHeight := 12;
  1850.   FontColor := 0;
  1851. end;
  1852. procedure TbsDataSkinHintWindow.LoadFromFile;
  1853. begin
  1854.   WindowPictureIndex := IniFile.ReadInteger(
  1855.     'HINTWINDOW', 'windowpictureindex', -1);
  1856.   MaskPictureIndex := IniFile.ReadInteger(
  1857.     'HINTWINDOW', 'maskpictureindex', -1);
  1858.   LTPoint := ReadPoint(IniFile, 'HINTWINDOW', 'lefttoppoint');
  1859.   RTPoint := Readpoint(IniFile, 'HINTWINDOW', 'righttoppoint');
  1860.   LBPoint := ReadPoint(IniFile, 'HINTWINDOW', 'leftbottompoint');
  1861.   RBPoint := ReadPoint(IniFile, 'HINTWINDOW', 'rightbottompoint');
  1862.   ClRect := ReadRect(IniFile, 'HINTWINDOW', 'clientrect');
  1863.   FontName := IniFile.ReadString('HINTWINDOW', 'fontname', 'Arial');
  1864.   FontHeight := IniFile.ReadInteger('HINTWINDOW', 'fontheight', 14);
  1865.   FontStyle := ReadFontStyles(IniFile, 'HINTWINDOW', 'fontstyle');
  1866.   FontColor := IniFile.ReadInteger('HINTWINDOW', 'fontcolor', 0);
  1867. end;
  1868. procedure TbsDataSkinHintWindow.SaveToFile;
  1869. begin
  1870.   IniFile.EraseSection('HINTWINDOW');
  1871.   IniFile.WriteInteger('HINTWINDOW', 'windowpictureindex',
  1872.     WindowPictureIndex);
  1873.   IniFile.WriteInteger( 'HINTWINDOW', 'maskpictureindex',
  1874.     MaskPictureIndex);
  1875.   WritePoint(IniFile, 'HINTWINDOW', 'lefttoppoint', LTPoint);
  1876.   WritePoint(IniFile, 'HINTWINDOW', 'righttoppoint', RTPoint);
  1877.   WritePoint(IniFile, 'HINTWINDOW', 'leftbottompoint', LBPoint);
  1878.   WritePoint(IniFile, 'HINTWINDOW', 'rightbottompoint', RBPoint);
  1879.   WriteRect(IniFile, 'HINTWINDOW', 'clientrect', ClRect);
  1880.   IniFile.WriteString('HINTWINDOW', 'fontname', FontName);
  1881.   IniFile.WriteInteger('HINTWINDOW', 'fontheight', FontHeight);
  1882.   WriteFontStyles(IniFile, 'HINTWINDOW', 'fontstyle', FontStyle);
  1883.   IniFile.WriteInteger('HINTWINDOW', 'fontcolor', FontColor);
  1884. end;
  1885. procedure TbsDataSkinMenuItem.LoadFromFile;
  1886. begin
  1887.   inherited;
  1888.   ItemLO := IniFile.ReadInteger(IDName, 'itemleftoffset', 0);
  1889.   ItemRO := IniFile.ReadInteger(IDName, 'itemrightoffset', 0);
  1890.   DividerRect := ReadRect(IniFile, IDName, 'dividerrect');
  1891.   DividerLO := IniFile.ReadInteger(IDName, 'dividerleftoffset', 0);
  1892.   DividerRO := IniFile.ReadInteger(IDName, 'dividerrightoffset', 0);
  1893.   TextRct := ReadRect(IniFile, IDName, 'textrect');
  1894.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1895.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1896.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1897.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1898.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1899.   UnEnabledFontColor := IniFile.ReadInteger(IDName, 'unenabledfontcolor', 0);
  1900. end;
  1901. procedure TbsDataSkinMenuItem.SaveToFile;
  1902. begin
  1903.   inherited;
  1904.   IniFile.WriteInteger(IDName, 'itemleftoffset', ItemLO);
  1905.   IniFile.WriteInteger(IDName, 'itemrightoffset', ItemRO);
  1906.   WriteRect(IniFile, IDName, 'dividerrect', DividerRect);
  1907.   IniFile.WriteInteger(IDName, 'dividerleftoffset', DividerLO);
  1908.   IniFile.WriteInteger(IDName, 'dividerrightoffset', DividerRO);
  1909.   WriteRect(IniFile, IDName, 'textrect', TextRct);
  1910.   IniFile.WriteString(IDName, 'fontname', FontName);
  1911.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1912.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1913.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1914.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1915.   IniFile.WriteInteger(IDName, 'unenabledfontcolor', UnEnabledFontColor);
  1916. end;
  1917. procedure TbsDataSkinMainMenuItem.LoadFromFile;
  1918. begin
  1919.   inherited;
  1920.   ItemLO := IniFile.ReadInteger(IDName, 'itemleftoffset', 0);
  1921.   ItemRO := IniFile.ReadInteger(IDName, 'itemrightoffset', 0);
  1922.   DownRect := ReadRect(IniFile, IDName, 'downrect');
  1923.   TextRct := ReadRect(IniFile, IDName, 'textrect');
  1924.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  1925.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  1926.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  1927.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  1928.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  1929.   DownFontColor := IniFile.ReadInteger(IDName, 'downfontcolor', 0);
  1930.   UnEnabledFontColor := IniFile.ReadInteger(IDName, 'unenabledfontColor', 0);
  1931. end;
  1932. procedure TbsDataSkinMainMenuItem.SaveToFile;
  1933. begin
  1934.   inherited;
  1935.   IniFile.WriteInteger(IDName, 'itemleftoffset', ItemLO);
  1936.   IniFile.WriteInteger(IDName, 'itemrightoffset', ItemRO);
  1937.   WriteRect(IniFile, IDName, 'downrect', DownRect);
  1938.   WriteRect(IniFile, IDName, 'textrect', TextRct);
  1939.   IniFile.WriteString(IDName, 'fontname', FontName);
  1940.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  1941.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  1942.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  1943.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  1944.   IniFile.WriteInteger(IDName, 'downfontcolor', DownFontColor);
  1945.   IniFile.WriteInteger(IDName, 'unenabledfontColor', UnEnabledFontColor);
  1946. end;
  1947. constructor TbsDataSkinButton.Create(AIDName: String);
  1948. begin
  1949.   inherited;
  1950.   DownRect := NullRect;
  1951. end;
  1952. procedure TbsDataSkinButton.SaveToFile;
  1953. begin
  1954.   inherited;
  1955.   WriteRect(IniFile, IDName, 'downrect', DownRect);
  1956.   WriteRect(IniFile, IDName, 'disableskinrsect', DisableSkinRect);
  1957. end;
  1958. procedure TbsDataSkinButton.LoadFromFile;
  1959. begin
  1960.   inherited;
  1961.   DownRect := ReadRect(IniFile, IDName, 'downrect');
  1962.   DisableSkinRect := ReadRect(IniFile, IDName, 'disableskinrsect');
  1963. end;
  1964. procedure TbsDataSkinStdButton.LoadFromFile;
  1965. var
  1966.   S: String;
  1967. begin
  1968.   inherited;
  1969.   S := IniFile.ReadString(IDName, 'command', 'cmdefault');
  1970.   if S = 'cmclose' then Command := cmClose else
  1971.   if S = 'cmmaximize' then Command := cmMaximize else
  1972.   if S = 'cmminimize' then Command := cmMinimize else
  1973.   if S = 'cmsysmenu' then Command := cmSysMenu else
  1974.   if S = 'cmdefault' then Command := cmDefault else
  1975.   Command := cmRollUp;
  1976.   RestoreRect := ReadRect(IniFile, IDName, 'restorerect');
  1977.   RestoreActiveRect := ReadRect(IniFile, IDName, 'restoreactiverect');
  1978.   RestoreDownRect := ReadRect(IniFile, IDName, 'restoredownrect');
  1979.   RestoreInActiveRect := ReadRect(IniFile, IDName, 'restoreinactiverect');
  1980. end;
  1981. procedure TbsDataSkinStdButton.SaveToFile;
  1982. var
  1983.   S: String;
  1984. begin
  1985.   inherited;
  1986.   if Command = cmClose then S := 'cmclose' else
  1987.   if Command = cmMaximize then S := 'cmmaximize' else
  1988.   if Command = cmMinimize then S := 'cmminimize' else
  1989.   if Command = cmSysMenu then S := 'cmsysmenu' else
  1990.   if Command = cmDefault then S := 'cmdefault' else
  1991.   S := 'cmrollup';
  1992.   IniFile.WriteString(IDName, 'command', S);
  1993.   WriteRect(IniFile, IDName, 'restorerect', RestoreRect);
  1994.   WriteRect(IniFile, IDName, 'restoreactiverect', RestoreActiveRect);
  1995.   WriteRect(IniFile, IDName, 'restoredownrect', RestoreDownRect);
  1996.   WriteRect(IniFile, IDName, 'restoreinactiverect', RestoreInActiveRect);
  1997. end;
  1998. procedure TbsDataSkinCaption.SaveToFile;
  1999. begin
  2000.   inherited;
  2001.   WriteRect(IniFile, IDName, 'textrect', TextRct);
  2002.   IniFile.WriteString(IDName, 'fontname', FontName);
  2003.   IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
  2004.   WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
  2005.   IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
  2006.   IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
  2007.   WriteAlignment(IniFile, IDName, 'alignment', Alignment);
  2008.   WriteBoolean(IniFile, IDName, 'shadow', Shadow);
  2009.   IniFile.WriteInteger(IDName, 'shadowcolor', ShadowColor);
  2010.   IniFile.WriteInteger(IDName, 'activeshadowcolor', ActiveShadowColor);
  2011.   WriteRect(IniFile, IDName, 'framerect', FrameRect);
  2012.   WriteRect(IniFile, IDName, 'activeframerect', ActiveFrameRect);
  2013.   WriteRect(IniFile, IDName, 'frametextrect', FrameTextRect);
  2014.   IniFile.WriteInteger(IDName, 'frameleftoffset', FrameLeftOffset);
  2015.   IniFile.WriteInteger(IDName, 'framerightoffset', FrameRightOffset);
  2016. end;
  2017. procedure TbsDataSkinCaption.LoadFromFile;
  2018. begin
  2019.   inherited;
  2020.   TextRct := ReadRect(IniFile, IDName, 'textrect');
  2021.   FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
  2022.   FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
  2023.   FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
  2024.   FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
  2025.   ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
  2026.   Alignment := ReadAlignment(IniFile, IDName, 'alignment');
  2027.   Shadow := ReadBoolean(IniFile, IDName, 'shadow');
  2028.   ShadowColor := IniFile.ReadInteger(IDName, 'shadowcolor', 0);
  2029.   ActiveShadowColor := IniFile.ReadInteger(IDName, 'activeshadowcolor', 0);
  2030.   FrameRect := ReadRect(IniFile, IDName, 'framerect');
  2031.   ActiveFrameRect := ReadRect(IniFile, IDName, 'activeframerect');
  2032.   FrameTextRect := ReadRect(IniFile, IDName, 'frametextrect');
  2033.   FrameLeftOffset := IniFile.ReadInteger(IDName, 'frameleftoffset', 0);
  2034.   FrameRightOffset := IniFile.ReadInteger(IDName, 'framerightoffset', 0);
  2035. end;
  2036. constructor TbsStoredSkin.Create;
  2037. begin
  2038.   inherited Create(AOwner);
  2039.   FPicture := TBitMap.Create;
  2040.   FMask := TBitMap.Create;
  2041.   FInActivePicture := TBitMap.Create;
  2042.   FActivePictures := TList.Create;
  2043.   FIniStrings := TStringList.Create;
  2044.   FFileName := '';
  2045. end;
  2046. destructor TbsStoredSkin.Destroy;
  2047. begin
  2048.   FPicture.Free;
  2049.   FMask.Free;
  2050.   FInActivePicture.Free;
  2051.   FIniStrings.Free;
  2052.   ClearBitMaps;
  2053.   FActivePictures.Free;
  2054.   inherited;
  2055. end;
  2056. procedure TbsStoredSkin.SetFileName;
  2057. begin
  2058.   if (csDesigning in ComponentState) and not
  2059.      (csLoading in ComponentState)
  2060.   then
  2061.     begin
  2062.       FFileName := ExtractFileName(Value);
  2063.       LoadFromFile(Value);
  2064.     end
  2065.   else
  2066.     FFileName := Value;
  2067. end;
  2068. procedure TbsStoredSkin.SetIniStrings;
  2069. begin
  2070.   FIniStrings.Assign(Value);
  2071. end;
  2072. procedure TbsStoredSkin.ClearBitMaps;
  2073. var
  2074.   i, Count: Integer;
  2075. begin
  2076.   Count := FActivePictures.Count;
  2077.   if Count > 0
  2078.   then
  2079.     for i := 0 to Count - 1 do
  2080.     begin
  2081.       TBitMap(FActivePictures.Items[i]).Free;
  2082.     end;
  2083.   FActivePictures.Clear;
  2084. end;
  2085. procedure TbsStoredSkin.DefineProperties(Filer: TFiler);
  2086. begin
  2087.   inherited;
  2088.   Filer.DefineBinaryProperty('Pictures', ReadData, WriteData, True);
  2089. end;
  2090. procedure TbsStoredSkin.ReadData;
  2091. var
  2092.   IsEmpty: Boolean;
  2093.   i, Count: Integer;
  2094. begin
  2095.   Reader.Read(IsEmpty, SizeOf(IsEmpty));
  2096.   if IsEmpty
  2097.   then FPicture.Assign(nil)
  2098.   else FPicture.LoadFromStream(Reader);
  2099.   Reader.Read(IsEmpty, SizeOf(IsEmpty));
  2100.   if IsEmpty
  2101.   then FInActivePicture.Assign(nil)
  2102.   else FInActivePicture.LoadFromStream(Reader);
  2103.   Reader.Read(IsEmpty, SizeOf(IsEmpty));
  2104.   if IsEmpty
  2105.   then FMask.Assign(nil)
  2106.   else FMask.LoadFromStream(Reader);
  2107.   ClearBitMaps;
  2108.   Reader.Read(Count, SizeOf(Count));
  2109.   if Count > 0
  2110.   then
  2111.     for i := 0 to Count - 1 do
  2112.     begin
  2113.       FActivePictures.Add(TBitMap.Create);
  2114.       TBitMap(FActivePictures.Items[i]).LoadFromStream(Reader);
  2115.     end;
  2116. end;
  2117. procedure TbsStoredSkin.WriteData;
  2118. var
  2119.   IsEmpty: Boolean;
  2120.   i, Count: Integer;
  2121. begin
  2122.   IsEmpty := FPicture.Empty;
  2123.   Writer.Write(IsEmpty, SizeOf(IsEmpty));
  2124.   if not IsEmpty then FPicture.SaveToStream(Writer);
  2125.   IsEmpty := FInActivePicture.Empty;
  2126.   Writer.Write(IsEmpty, SizeOf(IsEmpty));
  2127.   if not IsEmpty then FInActivePicture.SaveToStream(Writer);
  2128.   IsEmpty := FMask.Empty;
  2129.   Writer.Write(IsEmpty, SizeOf(IsEmpty));
  2130.   if not IsEmpty then FMask.SaveToStream(Writer);
  2131.   Count := FActivePictures.Count;
  2132.   Writer.Write(Count, SizeOf(Count));
  2133.   if Count > 0
  2134.   then
  2135.     for i := 0 to Count - 1 do
  2136.     begin
  2137.       TBitMap(FActivePictures.Items[i]).SaveToStream(Writer);
  2138.     end;
  2139. end;
  2140. procedure TbsStoredSkin.LoadFromFile;
  2141. var
  2142.   F: TMemIniFile;
  2143.   PNames: TStrings;
  2144.   PName, Path: String;
  2145.   i: Integer;
  2146. begin
  2147.   FIniStrings.LoadFromFile(AFileName);
  2148.   Path := ExtractFilePath(AFileName);
  2149.   F := TMemIniFile.Create(AFileName);
  2150.   // load base pictures
  2151.   PName := F.ReadString('PICTURES', 'picture', '');
  2152.   if PName <> ''
  2153.   then
  2154.     FPicture.LoadFromFile(Path + PName)
  2155.   else
  2156.     FPicture.Assign(nil);
  2157.   PName := F.ReadString('PICTURES', 'inactivepicture', '');
  2158.   if PName <> ''
  2159.   then
  2160.     FInActivePicture.LoadFromFile(Path + PName)
  2161.   else
  2162.     FInActivePicture.Assign(nil);
  2163.   PName := F.ReadString('PICTURES', 'mask', '');
  2164.   if PName <> ''
  2165.   then
  2166.     FMask.LoadFromFile(Path + PName)
  2167.   else
  2168.     FMask.Assign(nil);
  2169.   // load activepictures
  2170.   PNames := TStringList.Create;
  2171.   ReadStrings1(F, 'PICTURES', 'activepictures', PNames);
  2172.   ClearBitMaps;
  2173.   for i := 0 to PNames.Count - 1 do
  2174.   begin
  2175.     FActivePictures.Add(TBitMap.Create);
  2176.     TBitMap(FActivePictures.Items[i]).LoadFromFile(Path + PNames[i]);
  2177.   end;
  2178.   PNames.Free;
  2179.   //
  2180.   F.Free;
  2181. end;
  2182. constructor TbsSkinData.Create(AOwner: TComponent);
  2183. begin
  2184.   inherited Create(AOwner);
  2185.   FStoredSkin := nil;
  2186.   ObjectList := TList.Create;
  2187.   CtrlList := TList.Create;
  2188.   FActivePictures := TList.Create;
  2189.   FPicture := TBitMap.Create;
  2190.   FInActivePicture := TBitMap.Create;
  2191.   FMask := TBitMap.Create;
  2192.   FPictureName := '';
  2193.   FInActivePictureName := '';
  2194.   FMaskName := '';
  2195.   FActivePicturesNames := TStringList.Create;
  2196.   Names := TStringList.Create;
  2197.   SkinName := '';
  2198.   Empty := True;
  2199.   PopupWindow := TbsDataSkinPopupWindow.Create;
  2200.   HintWindow := TbsDataSkinHintWindow.Create;
  2201.   MainMenuPopupUp := False;
  2202.   BuildMode := False;
  2203.   BGPictureIndex := -1;
  2204. end;
  2205. destructor TbsSkinData.Destroy;
  2206. begin
  2207.   Empty := True;
  2208.   ClearObjects;
  2209.   ObjectList.Free;
  2210.   CtrlList.Free;
  2211.   FActivePictures.Free;
  2212.   FPicture.Free;
  2213.   FMask.Free;
  2214.   FInActivePicture.Free;
  2215.   FActivePicturesNames.Free;
  2216.   Names.Free;
  2217.   PopupWindow.Free;
  2218.   HintWindow.Free;
  2219.   inherited Destroy;
  2220. end;
  2221. procedure TbsSkinData.Notification;
  2222. begin
  2223.   inherited Notification(AComponent, Operation);
  2224.   if (Operation = opRemove) and (AComponent = FStoredSkin)
  2225.   then FStoredSkin := nil;
  2226.   if (Operation = opRemove) and (AComponent = FCompressedStoredSkin)
  2227.   then FCompressedStoredSkin := nil;
  2228. end;
  2229. procedure TbsSkinData.SetStoredSkin;
  2230. begin
  2231.   FStoredSkin := Value;
  2232.   if not (csDesigning in ComponentState) and (FStoredSkin <> nil)
  2233.   then
  2234.     LoadStoredSkin(FStoredSkin);
  2235. end;
  2236. procedure TbsSkinData.SetCompressedStoredSkin;
  2237. begin
  2238.   FCompressedStoredSkin := Value;
  2239.   if not (csDesigning in ComponentState) and (FCompressedStoredSkin <> nil)
  2240.   then
  2241.     LoadCompressedStoredSkin(FCompressedStoredSkin);
  2242. end;
  2243. procedure TbsSkinData.LoadNames;
  2244. var
  2245.   i: Integer;
  2246. begin
  2247.   Names.Clear;
  2248.   for i := 0 to ObjectList.Count - 1 do
  2249.     Names.Add(TbsDataSkinObject(ObjectList.Items[i]).IDName);
  2250.   for i := 0 to CtrlList.Count - 1 do
  2251.     Names.Add(TbsDataSkinControl(CtrlList.Items[i]).IDName);
  2252. end;
  2253. procedure TbsSkinData.EraseSections;
  2254. var
  2255.   i: Integer;
  2256. begin
  2257.   if Names.Count = 0 then Exit;
  2258.   for i := 0 to Names.Count - 1 do
  2259.     F.EraseSection(Names[i]);
  2260. end;
  2261. procedure TbsSkinData.SendSkinDataMessage;
  2262. var
  2263.   i: Integer;
  2264.   F: TForm;
  2265. begin
  2266.   F := TForm(Owner);
  2267.   SendMessage(F.Handle, M, Integer(Self), 1000);
  2268.   with Screen do
  2269.    for i := 0 to FormCount - 1 do
  2270.      if Forms[i] <> F
  2271.      then
  2272.        SendMessage(Forms[i].Handle, M, Integer(Self), 1000);
  2273. end;
  2274. function TbsSkinData.GetIndex;
  2275. var
  2276.   i: Integer;
  2277. begin
  2278.   Result := -1;
  2279.   for i := 0 to ObjectList.Count - 1 do
  2280.   begin
  2281.     if AIDName = TbsDataSkinObject(ObjectList.Items[i]).IDName
  2282.     then
  2283.       begin
  2284.         Result := i;
  2285.         Break;
  2286.       end;
  2287.   end;
  2288. end;
  2289. function TbsSkinData.GetControlIndex;
  2290. var
  2291.   i: Integer;
  2292. begin
  2293.   Result := -1;
  2294.   for i := 0 to CtrlList.Count - 1 do
  2295.   begin
  2296.     if AIDName = TbsDataSkinControl(CtrlList.Items[i]).IDName
  2297.     then
  2298.       begin
  2299.         Result := i;
  2300.         Break;
  2301.       end;
  2302.   end;
  2303. end;
  2304. procedure TbsSkinData.ClearObjects;
  2305. var
  2306.   i: Integer;
  2307. begin
  2308.   for i := 0 to ObjectList.Count - 1 do
  2309.     TbsDataSkinObject(ObjectList.Items[i]).Free;
  2310.   ObjectList.Clear;
  2311.   for i := 0 to CtrlList.Count - 1 do
  2312.     TbsDataSkinControl(CtrlList.Items[i]).Free;
  2313.   CtrlList.Clear;
  2314.   for i := 0 to FActivePictures.Count - 1 do
  2315.     TBitMap(FActivePictures.Items[i]).Free;
  2316.   PopupWindow.WindowPictureIndex := -1;
  2317.   HintWindow.WindowPictureIndex := -1;
  2318.   FActivePictures.Clear;
  2319.   FActivePicturesNames.Clear;
  2320. end;
  2321. procedure TbsSkinData.ClearAll;
  2322. begin
  2323.   ClearObjects;
  2324.   FPicture.Assign(nil);
  2325.   FMask.Assign(nil);
  2326.   FInActivePicture.Assign(nil);
  2327.   FPictureName := '';
  2328.   FMaskName := '';
  2329.   Empty := True;
  2330. end;
  2331. const
  2332.   symbols = ',: ';
  2333. procedure TbsSkinData.GetObjectTypeName(S: String; var AName, AType: String);
  2334. var
  2335.   i, j: Integer;
  2336. begin
  2337.   AName := '';
  2338.   AType := '';
  2339.   j := 0;
  2340.   for i := 1 to Length(S) do
  2341.     if S[i] = ':'
  2342.     then
  2343.       begin
  2344.         j := i;
  2345.         Break;
  2346.       end;
  2347.   if j <> 0
  2348.   then
  2349.     begin
  2350.       AName := Copy(S, 1, j - 1);
  2351.       AType := Copy(S, j + 1, Length(S) - j);
  2352.     end;
  2353. end;
  2354. procedure TbsSkinData.WriteObjects;
  2355. var
  2356.   i: Integer;
  2357.   S: String;
  2358. begin
  2359.   F.EraseSection('SKINOBJECTS');
  2360.   F.WriteInteger('SKINOBJECTS', 'count', ObjectList.Count);
  2361.   for i := 0 to ObjectList.Count - 1 do
  2362.   begin
  2363.     S := TbsDataSkinObject(ObjectList.Items[i]).IDName + ':';
  2364.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinMenuItem
  2365.     then S := S + 'menuitem' else
  2366.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinMainMenuBarItem
  2367.     then S := S + 'mainmenubaritem' else
  2368.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinMainMenuBarButton
  2369.     then S := S + 'mainmenubarbutton' else
  2370.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinStdButton
  2371.     then S := S + 'stdbutton' else
  2372.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinButton
  2373.     then S := S + 'button' else
  2374.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataSkinCaption
  2375.     then S := S + 'caption' else
  2376.     if TbsDataSkinObject(ObjectList.Items[i]) is TbsDataUserObject
  2377.     then S := S + 'userobject';
  2378.     F.WriteString('SKINOBJECTS', IntToStr(i), S);
  2379.     TbsDataSkinObject(ObjectList.Items[i]).SaveToFile(F);
  2380.   end;
  2381. end;
  2382. procedure TbsSkinData.WriteCtrls(F: TCustomIniFile);
  2383. var
  2384.   i: Integer;
  2385.   S: String;
  2386. begin
  2387.   F.EraseSection('SKINCONTROLS');
  2388.   F.WriteInteger('SKINCONTROLS', 'count', CtrlList.Count);
  2389.   for i := 0 to CtrlList.Count - 1 do
  2390.   begin
  2391.     S := TbsDataSkinControl(CtrlList.Items[i]).IDName + ':';
  2392.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinPanelControl
  2393.     then S := S + 'panel'
  2394.     else
  2395.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinExPanelControl
  2396.     then S := S + 'expanel'
  2397.     else
  2398.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinMenuButtonControl
  2399.     then S := S + 'menubutton'
  2400.     else
  2401.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinButtonControl
  2402.     then S := S + 'button'
  2403.     else
  2404.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinCheckRadioControl
  2405.     then S := S + 'checkradio'
  2406.     else
  2407.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinGaugeControl
  2408.     then S := S + 'gauge'
  2409.     else
  2410.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinSplitterControl
  2411.     then S := S + 'splitter'
  2412.     else
  2413.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinTrackBarControl
  2414.     then S := S + 'trackbar'
  2415.     else
  2416.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinLabelControl
  2417.     then S := S + 'label'
  2418.     else
  2419.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinStdLabelControl
  2420.     then S := S + 'stdlabel'
  2421.     else
  2422.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinUpDownControl
  2423.     then S := S + 'updown'
  2424.     else
  2425.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinGridControl
  2426.     then S := S + 'grid'
  2427.     else
  2428.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinTabControl
  2429.     then S := S + 'tab'
  2430.     else
  2431.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinMainMenuBar
  2432.     then S := S + 'mainmenubar'
  2433.     else
  2434.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinControlBar
  2435.     then S := S + 'controlbar'
  2436.     else
  2437.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinMemoControl
  2438.     then S := S + 'memo'
  2439.     else
  2440.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinEditControl
  2441.     then S := S + 'edit'
  2442.     else
  2443.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinCheckListBox
  2444.     then S := S + 'checklistbox'
  2445.     else
  2446.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinListBox
  2447.     then S := S + 'listbox'
  2448.     else
  2449.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinComboBox
  2450.     then S := S + 'combobox'
  2451.     else
  2452.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinScrollBarControl
  2453.     then S := S + 'scrollbar'
  2454.     else
  2455.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinSpinEditControl
  2456.     then S := S + 'spinedit'
  2457.     else
  2458.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinScrollBoxControl
  2459.     then S := S + 'scrollbox'
  2460.     else
  2461.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinTreeView
  2462.     then S := S + 'treeview'
  2463.     else
  2464.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinBevel
  2465.     then S := S + 'bevel'
  2466.     else
  2467.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinSlider
  2468.     then S := S + 'slider'
  2469.     else
  2470.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinListView
  2471.     then S := S + 'listview'
  2472.     else
  2473.     if TbsDataSkinControl(CtrlList.Items[i]) is TbsDataSkinRichEdit
  2474.     then S := S + 'richedit';
  2475.     F.WriteString('SKINCONTROLS', IntToStr(i), S);
  2476.     TbsDataSkinControl(CtrlList.Items[i]).SaveToFile(F);
  2477.   end;
  2478. end;
  2479. procedure TbsSkinData.ReadCtrls(F: TCustomIniFile);
  2480. var
  2481.   i, Count: Integer;
  2482.   S, FName, FType: String;
  2483. begin
  2484.   Count := F.ReadInteger('SKINCONTROLS', 'count', 0);
  2485.   for i := 0 to Count - 1 do
  2486.   begin
  2487.     S := F.ReadString('SKINCONTROLS', IntToStr(i), '');
  2488.     GetObjectTypeName(S, FName, FType);
  2489.     if FType = 'panel'
  2490.     then CtrlList.Add(TbsDataSkinPanelControl.Create(FName))
  2491.     else
  2492.     if FType = 'expanel'
  2493.     then CtrlList.Add(TbsDataSkinExPanelControl.Create(FName))
  2494.     else
  2495.     if FType = 'menubutton'
  2496.     then CtrlList.Add(TbsDataSkinMenuButtonControl.Create(FName))
  2497.     else
  2498.     if FType = 'button'
  2499.     then CtrlList.Add(TbsDataSkinButtonControl.Create(FName))
  2500.     else
  2501.     if FType = 'checkradio'
  2502.     then CtrlList.Add(TbsDataSkinCheckRadioControl.Create(FName))
  2503.     else
  2504.     if FType = 'gauge'
  2505.     then CtrlList.Add(TbsDataSkinGaugeControl.Create(FName))
  2506.     else
  2507.     if FType = 'splitter'
  2508.     then CtrlList.Add(TbsDataSkinSplitterControl.Create(FName))
  2509.     else
  2510.     if FType = 'trackbar'
  2511.     then CtrlList.Add(TbsDataSkinTrackBarControl.Create(FName))
  2512.     else
  2513.     if FType = 'label'
  2514.     then CtrlList.Add(TbsDataSkinLabelControl.Create(FName))
  2515.     else
  2516.     if FType = 'stdlabel'
  2517.     then CtrlList.Add(TbsDataSkinStdLabelControl.Create(FName))
  2518.     else
  2519.     if FType = 'updown'
  2520.     then CtrlList.Add(TbsDataSkinUpDownControl.Create(FName))
  2521.     else
  2522.     if FType = 'grid'
  2523.     then CtrlList.Add(TbsDataSkinGridControl.Create(FName))
  2524.     else
  2525.     if FType = 'tab'
  2526.     then CtrlList.Add(TbsDataSkinTabControl.Create(FName))
  2527.     else
  2528.     if FType = 'mainmenubar'
  2529.     then CtrlList.Add(TbsDataSkinMainMenuBar.Create(FName))
  2530.     else
  2531.     if FType = 'controlbar'
  2532.     then CtrlList.Add(TbsDataSkinControlBar.Create(FName))
  2533.     else
  2534.     if FType = 'memo'
  2535.     then CtrlList.Add(TbsDataSkinMemoControl.Create(FName))
  2536.     else
  2537.     if FType = 'edit'
  2538.     then CtrlList.Add(TbsDataSkinEditControl.Create(FName))
  2539.     else
  2540.     if FType = 'checklistbox'
  2541.     then CtrlList.Add(TbsDataSkinCheckListBox.Create(FName))
  2542.     else
  2543.     if FType = 'listbox'
  2544.     then CtrlList.Add(TbsDataSkinListBox.Create(FName))
  2545.     else
  2546.     if FType = 'combobox'
  2547.     then CtrlList.Add(TbsDataSkinComboBox.Create(FName))
  2548.     else
  2549.     if FType = 'scrollbar'
  2550.     then CtrlList.Add(TbsDataSkinScrollBarControl.Create(FName))
  2551.     else
  2552.     if FType = 'spinedit'
  2553.     then CtrlList.Add(TbsDataSkinSpinEditControl.Create(FName))
  2554.     else
  2555.     if FType = 'scrollbox'
  2556.     then CtrlList.Add(TbsDataSkinScrollBoxControl.Create(FName))
  2557.     else
  2558.     if FType = 'treeview'
  2559.     then CtrlList.Add(TbsDataSkinTreeView.Create(FName))
  2560.     else
  2561.     if FType = 'bevel'
  2562.     then CtrlList.Add(TbsDataSkinBevel.Create(FName))
  2563.     else
  2564.     if FType = 'slider'
  2565.     then CtrlList.Add(TbsDataSkinSlider.Create(FName))
  2566.     else
  2567.     if FType = 'listview'
  2568.     then CtrlList.Add(TbsDataSkinListView.Create(FName))
  2569.     else
  2570.     if FType = 'richedit'
  2571.     then CtrlList.Add(TbsDataSkinRichEdit.Create(FName));
  2572.     TbsDataSkinControl(CtrlList[CtrlList.Count - 1]).LoadFromFile(F);
  2573.   end;
  2574. end;
  2575. procedure TbsSkinData.WriteActivePictures;
  2576. begin
  2577.   WriteStrings1(F, 'PICTURES', 'activepictures', FActivePicturesNames);
  2578. end;
  2579. procedure TbsSkinData.ReadActivePictures;
  2580. var
  2581.   i: Integer;
  2582. begin
  2583.   ReadStrings1(F, 'PICTURES', 'activepictures', FActivePicturesNames);
  2584.   for i := 0 to FActivePicturesNames.Count - 1 do
  2585.   begin
  2586.     FActivePictures.Add(TBitMap.Create);
  2587.     TBitMap(FActivePictures.Items[i]).LoadFromFile(Path + FActivePicturesNames[i]);
  2588.   end;
  2589. end;
  2590. procedure TbsSkinData.ReadObjects;
  2591. var
  2592.   i, Count: Integer;
  2593.   S, FName, FType: String;
  2594. begin
  2595.   Count := F.ReadInteger('SKINOBJECTS', 'count', 0);
  2596.   for i := 0 to Count - 1 do
  2597.   begin
  2598.     S := F.ReadString('SKINOBJECTS', IntToStr(i), '');
  2599.     GetObjectTypeName(S, FName, FType);
  2600.     if FType = 'menuitem'
  2601.     then ObjectList.Add(TbsDataSkinMenuItem.Create(FName)) else
  2602.     if FType = 'mainmenubaritem'
  2603.     then ObjectList.Add(TbsDataSkinMainMenuBarItem.Create(FName)) else
  2604.     if FType = 'stdbutton'
  2605.     then ObjectList.Add(TbsDataSkinStdButton.Create(FName)) else
  2606.     if FType = 'mainmenubarbutton'
  2607.     then ObjectList.Add(TbsDataSkinMainMenuBarButton.Create(FName)) else
  2608.     if FType = 'button'
  2609.     then ObjectList.Add(TbsDataSkinButton.Create(FName)) else
  2610.     if FType = 'caption'
  2611.     then ObjectList.Add(TbsDataSkinCaption.Create(FName)) else
  2612.     if FType = 'userobject'
  2613.     then ObjectList.Add(TbsDataUserObject.Create(FName));
  2614.     TbsDataSkinObject(ObjectList[ObjectList.Count - 1]).LoadFromFile(F);
  2615.   end;
  2616. end;
  2617. procedure TbsSkinData.AddBitMap(FileName: String);
  2618. begin
  2619.   FActivePicturesNames.Add(ExtractFileName(FileName));
  2620.   FActivePictures.Add(TBitMap.Create);
  2621.   TBitMap(FActivePictures.Items[FActivePictures.Count - 1]).LoadFromFile(FileName);
  2622. end;
  2623. procedure TbsSkinData.DeleteBitMap(Index: Integer);
  2624. begin
  2625.   FActivePicturesNames.Delete(Index);
  2626.   TBitMap(FActivePictures.Items[Index]).Free;
  2627.   FActivePictures.Delete(Index);
  2628. end;
  2629. procedure TbsSkinData.WriteFormInfo;
  2630. begin
  2631.   WritePoint(F, 'FORMINFO', 'lefttoppoint', LTPoint);
  2632.   Writepoint(F, 'FORMINFO', 'righttoppoint', RTPoint);
  2633.   WritePoint(F, 'FORMINFO', 'leftbottompoint', LBPoint);
  2634.   WritePoint(F, 'FORMINFO', 'rightbottompoint', RBPoint);
  2635.   WriteRect(F, 'FORMINFO', 'clientrect', ClRect);
  2636.   F.WriteInteger('FORMINFO', 'bgpictureindex', BGPictureIndex);
  2637.   WriteRect(F, 'FORMINFO', 'maskrectarea', MaskRectArea);
  2638.   //
  2639.   WritePoint(F, 'FORMINFO', 'hittestlefttoppoint', HitTestLTPoint);
  2640.   WritePoint(F, 'FORMINFO', 'hittestrighttoppoint', HitTestRTPoint);
  2641.   WritePoint(F, 'FORMINFO', 'hittestleftbottompoint', HitTestLBPoint);
  2642.   WritePoint(F, 'FORMINFO', 'hittestrightbottompoint', HitTestRBPoint);
  2643.   //
  2644.   WriteRect(F, 'FORMINFO', 'buttonsrect', ButtonsRect);
  2645.   WriteRect(F, 'FORMINFO', 'captionrect', CaptionRect);
  2646.   F.WriteInteger('FORMINFO', 'buttonsoffset', ButtonsOffset);
  2647.   WriteBoolean(F, 'FORMINFO', 'buttonsinleft', CapButtonsInLeft);
  2648.   WriteBoolean(F, 'FORMINFO', 'mainmenupopupup', MainMenuPopupUp);
  2649.   F.WriteInteger('FORMINFO', 'borderwidth', BorderW);
  2650.   WriteBoolean(F, 'FORMINFO', 'autorenderinginactiveimage', AutoRenderingInActiveImage);
  2651.   WriteInActiveEffect(F, 'FORMINFO', 'inactiveeffect', InActiveEffect);
  2652. end;
  2653. procedure TbsSkinData.ReadFormInfo;
  2654. begin
  2655.   LTPoint := ReadPoint(F, 'FORMINFO', 'lefttoppoint');
  2656.   RTPoint := Readpoint(F, 'FORMINFO', 'righttoppoint');
  2657.   LBPoint := ReadPoint(F, 'FORMINFO', 'leftbottompoint');
  2658.   RBPoint := ReadPoint(F, 'FORMINFO', 'rightbottompoint');
  2659.   ClRect := ReadRect(F, 'FORMINFO', 'clientrect');
  2660.   BGPictureIndex := F.ReadInteger('FORMINFO', 'bgpictureindex', -1);
  2661.   //
  2662.   MaskRectArea := ReadRect(F, 'FORMINFO', 'maskrectarea');
  2663.   HitTestLTPoint := ReadPoint(F, 'FORMINFO', 'hittestlefttoppoint');
  2664.   HitTestRTPoint := ReadPoint(F, 'FORMINFO', 'hittestrighttoppoint');
  2665.   HitTestLBPoint := ReadPoint(F, 'FORMINFO', 'hittestleftbottompoint');
  2666.   HitTestRBPoint := ReadPoint(F, 'FORMINFO', 'hittestrightbottompoint');
  2667.   //
  2668.   if FMaskName <> ''
  2669.   then
  2670.     begin
  2671.       if isNullRect(MaskRectArea)
  2672.       then
  2673.         MaskRectArea := ClRect
  2674.       else
  2675.         begin
  2676.           if MaskRectArea.Left > ClRect.Left
  2677.           then MaskRectArea.Left := ClRect.Left;
  2678.           if MaskRectArea.Top > ClRect.Top
  2679.           then MaskRectArea.Top := ClRect.Top;
  2680.           if MaskRectArea.Right < ClRect.Right
  2681.           then MaskRectArea.Right := ClRect.Right;
  2682.           if MaskRectArea.Bottom < ClRect.Bottom
  2683.           then MaskRectArea.Bottom := ClRect.Bottom;
  2684.         end;
  2685.       if isNullPoint(HitTestLTPoint) then  HitTestLTPoint := LTPoint;
  2686.       if isNullPoint(HitTestRTPoint) then  HitTestRTPoint := RTPoint;
  2687.       if isNullPoint(HitTestLBPoint) then  HitTestLBPoint := LBPoint;
  2688.       if isNullPoint(HitTestRBPoint) then  HitTestRBPoint := RBPoint;
  2689.     end;
  2690.   //
  2691.   ButtonsRect := ReadRect(F, 'FORMINFO', 'buttonsrect');
  2692.   CaptionRect := ReadRect(F, 'FORMINFO', 'captionrect');
  2693.   ButtonsOffset := F.ReadInteger('FORMINFO', 'buttonsoffset', 0);
  2694.   CapButtonsInLeft := ReadBoolean(F, 'FORMINFO', 'buttonsinleft');
  2695.   //
  2696.   MainMenuPopupUp := ReadBoolean(F, 'FORMINFO', 'mainmenupopupup');
  2697.   BorderW := F.ReadInteger('FORMINFO', 'borderwidth', 0);
  2698.   AutoRenderingInActiveImage := ReadBoolean(F, 'FORMINFO', 'autorenderinginactiveimage');
  2699.   InActiveEffect := ReadInActiveEffect(F, 'FORMINFO', 'inactiveeffect');
  2700.   //
  2701.   if (RBPoint.X - LTPoint.X  <> 0) and
  2702.      (RBPoint.Y - LTPoint.Y <> 0)
  2703.   then
  2704.     begin
  2705.       if LTPoint.X < CLRect.Left then LTPoint.X := CLRect.Left;
  2706.       if LTPoint.Y < CLRect.Top then LTPoint.Y := CLRect.Top;
  2707.       if RTPoint.X > CLRect.Right then RTPoint.X := CLRect.Right;
  2708.       if RTPoint.Y < CLRect.Top then RTPoint.Y := CLRect.Top;
  2709.       if LBPoint.X < CLRect.Left then LBPoint.X := CLRect.Left;
  2710.       if LBPoint.Y > CLRect.Bottom then LBPoint.Y := CLRect.Bottom;
  2711.       if RBPoint.X > CLRect.Right then RBPoint.X := CLRect.Right;
  2712.       if RBPoint.Y > CLRect.Bottom then RBPoint.Y := CLRect.Bottom;
  2713.     end;
  2714. end;
  2715. const
  2716.   SkinDataFileFormat = 1;
  2717. procedure TbsSkinData.SaveToFile;
  2718. var
  2719.   F: TIniFile;
  2720.   Version: Integer;
  2721. begin
  2722.   //
  2723.   F := TIniFile.Create(FileName);
  2724.   if BuildMode
  2725.   then
  2726.     begin
  2727.       EraseSections(F);
  2728.       LoadNames;
  2729.     end;  
  2730.   //
  2731.   F.EraseSection('VERSION');
  2732.   Version := SkinDataFileFormat;
  2733.   F.WriteInteger('VERSION', 'ver', Version);
  2734.   F.WriteString('VERSION', 'skinname', SkinName);
  2735.   F.WriteString('VERSION', 'skinauthor', SkinAuthor);
  2736.   F.WriteString('VERSION', 'authoremail', AuthorEmail);
  2737.   F.WriteString('VERSION', 'authorurl', AuthorURL);
  2738.   F.WriteString('VERSION', 'skincomments', SkinComments);
  2739.   //
  2740.   F.EraseSection('PICTURES');
  2741.   F.WriteString('PICTURES', 'picture', FPictureName);
  2742.   F.WriteString('PICTURES', 'inactivepicture', FInActivePictureName);
  2743.   F.WriteString('PICTURES', 'mask', FMaskName);
  2744.   WriteActivePictures(F);
  2745.   //
  2746.   F.EraseSection('FORMINFO');
  2747.   WriteFormInfo(F);
  2748.   //
  2749.   F.EraseSection('POPUPWINDOW');
  2750.   PopupWindow.SaveToFile(F);
  2751.   //
  2752.   F.EraseSection('HINTWINDOW');
  2753.   HintWindow.SaveToFile(F);
  2754.   //
  2755.   WriteObjects(F);
  2756.   //
  2757.   WriteCtrls(F);
  2758.   //
  2759.   F.Free;
  2760. end;
  2761. procedure TbsSkinData.LoadFromFile;
  2762. var
  2763.   F: TIniFile;
  2764.   FilePath: String;
  2765. begin
  2766.   Empty := True;
  2767.   SendSkinDataMessage(WM_BEFORECHANGESKINDATA);
  2768.   ClearAll;
  2769.   F := TIniFile.Create(FileName);
  2770.   if not CheckSkinFile(F)
  2771.   then
  2772.     begin
  2773.       SendSkinDataMessage(WM_CHANGESKINDATA);
  2774.       SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2775.       F.Free;
  2776.       Exit;
  2777.     end;
  2778.   FilePath := ExtractFilePath(FileName);
  2779.   //
  2780.   SkinName := F.ReadString('VERSION', 'skinname', '');
  2781.   SkinAuthor := F.ReadString('VERSION', 'skinauthor', '');
  2782.   AuthorEmail := F.ReadString('VERSION', 'authoremail', '');
  2783.   AuthorURL := F.ReadString('VERSION', 'authorurl', '');
  2784.   SkinComments := F.ReadString('VERSION', 'skincomments', '');
  2785.   //
  2786.   FPictureName := F.ReadString('PICTURES', 'picture', '');
  2787.   FInActivePictureName := F.ReadString('PICTURES', 'inactivepicture', '');
  2788.   FMaskName := F.ReadString('PICTURES', 'mask', '');
  2789.   if FPictureName <> ''
  2790.   then
  2791.     FPicture.LoadFromFile(FilePath + FPictureName)
  2792.   else
  2793.     FPicture.Assign(nil);
  2794.   if FInActivePictureName <> ''
  2795.   then
  2796.     FInActivePicture.LoadFromFile(FilePath + FInActivePictureName)
  2797.   else
  2798.     FInActivePicture.Assign(nil);
  2799.   if FMaskName <> ''
  2800.   then
  2801.     FMask.LoadFromFile(FilePath + FMaskName)
  2802.   else
  2803.     FMask.Assign(nil);
  2804.   ReadActivePictures(F, FilePath);
  2805.   //
  2806.   ReadFormInfo(F);
  2807.   //
  2808.   PopupWindow.LoadFromFile(F);
  2809.   //
  2810.   HintWindow.LoadFromFile(F);
  2811.   //
  2812.   ReadObjects(F);
  2813.   //
  2814.   ReadCtrls(F);
  2815.   //
  2816.   if BuildMode then LoadNames;
  2817.   F.UpdateFile;
  2818.   F.Free;
  2819.   Empty := False;
  2820.   SendSkinDataMessage(WM_CHANGESKINDATA);
  2821.   SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2822. end;
  2823. procedure TbsSkinData.LoadCompressedStoredSkin(AStoredSkin: TbsCompressedStoredSkin);
  2824. var
  2825.   TmpStream: TMemoryStream;
  2826.   CV: Integer;
  2827.   FIniStrings: TStrings;
  2828.   F: TMemIniFile;
  2829.   IsEmpty: Boolean;
  2830.   i, Count: Integer;
  2831. begin
  2832.   if AStoredSkin.Empty then Exit;
  2833.   Empty := True;
  2834.   SendSkinDataMessage(WM_BEFORECHANGESKINDATA);
  2835.   ClearAll;
  2836.   TmpStream := TMemoryStream.Create;
  2837.   AStoredSkin.DeCompressToStream(TmpStream);
  2838.   TmpStream.Seek(0, 0);
  2839.   TmpStream.Read(CV, SizeOf(CV));
  2840.   if CV <> 1
  2841.   then
  2842.     begin
  2843.       TmpStream.Free;
  2844.       Exit;
  2845.     end;
  2846.   //
  2847.   TmpStream.Read(IsEmpty, SizeOf(IsEmpty));
  2848.   if IsEmpty
  2849.   then FPicture.Assign(nil)
  2850.   else FPicture.LoadFromStream(TmpStream);
  2851.   TmpStream.Read(IsEmpty, SizeOf(IsEmpty));
  2852.   if IsEmpty
  2853.   then FInActivePicture.Assign(nil)
  2854.   else FInActivePicture.LoadFromStream(TmpStream);
  2855.   TmpStream.Read(IsEmpty, SizeOf(IsEmpty));
  2856.   if IsEmpty
  2857.   then FMask.Assign(nil)
  2858.   else FMask.LoadFromStream(TmpStream);
  2859.   TmpStream.Read(Count, SizeOf(Count));
  2860.   if Count > 0
  2861.   then
  2862.     for i := 0 to Count - 1 do
  2863.     begin
  2864.       FActivePictures.Add(TBitMap.Create);
  2865.       TBitMap(FActivePictures.Items[i]).LoadFromStream(TmpStream);
  2866.     end;
  2867.   //
  2868.   FIniStrings := TStringList.Create;
  2869.   FIniStrings.LoadFromStream(TmpStream);
  2870.   F := TMemIniFile.Create('');
  2871.   F.SetStrings(FIniStrings);
  2872.   //
  2873.   SkinName := F.ReadString('VERSION', 'skinname', '');
  2874.   SkinAuthor := F.ReadString('VERSION', 'skinauthor', '');
  2875.   AuthorEmail := F.ReadString('VERSION', 'authoremail', '');
  2876.   AuthorURL := F.ReadString('VERSION', 'authorurl', '');
  2877.   SkinComments := F.ReadString('VERSION', 'skincomments', '');
  2878.   ReadFormInfo(F);
  2879.   PopupWindow.LoadFromFile(F);
  2880.   HintWindow.LoadFromFile(F);
  2881.   ReadObjects(F);
  2882.   ReadCtrls(F);
  2883.   //
  2884.   FIniStrings.Free;
  2885.   F.Free;
  2886.   TmpStream.Free;
  2887.   //
  2888.   Empty := False;
  2889.   SendSkinDataMessage(WM_CHANGESKINDATA);
  2890.   SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2891. end;
  2892. procedure TbsSkinData.LoadStoredSkin;
  2893. var
  2894.   F: TMemIniFile;
  2895.   i: Integer;
  2896. begin
  2897.   Empty := True;
  2898.   SendSkinDataMessage(WM_BEFORECHANGESKINDATA);
  2899.   ClearAll;
  2900.   F := TMemIniFile.Create('');
  2901.   F.SetStrings(AStoredSkin.FIniStrings);
  2902.   //
  2903.   if not CheckSkinFile(F)
  2904.   then
  2905.     begin
  2906.       SendSkinDataMessage(WM_CHANGESKINDATA);
  2907.       SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2908.       F.Free;
  2909.       Exit;
  2910.     end;
  2911.   //
  2912.   SkinName := F.ReadString('VERSION', 'skinname', '');
  2913.   SkinAuthor := F.ReadString('VERSION', 'skinauthor', '');
  2914.   AuthorEmail := F.ReadString('VERSION', 'authoremail', '');
  2915.   AuthorURL := F.ReadString('VERSION', 'authorurl', '');
  2916.   SkinComments := F.ReadString('VERSION', 'skincomments', '');
  2917.   // load base pictures
  2918.   FPicture.Assign(AStoredSkin.FPicture);
  2919.   FInActivePicture.Assign(AStoredSkin.FInActivePicture);
  2920.   FMask.Assign(AStoredSkin.FMask);
  2921.   // load activepictures
  2922.   if AStoredSkin.FActivePictures.Count > 0
  2923.   then
  2924.     for i := 0 to AStoredSkin.FActivePictures.Count - 1 do
  2925.     begin
  2926.       FActivePictures.Add(TBitMap.Create);
  2927.       TBitMap(FActivePictures.Items[i]).Assign(TBitMap(AStoredSkin.FActivePictures.Items[i]));
  2928.     end;
  2929.   ReadFormInfo(F);
  2930.   //
  2931.   PopupWindow.LoadFromFile(F);
  2932.   //
  2933.   HintWindow.LoadFromFile(F);
  2934.   //
  2935.   ReadObjects(F);
  2936.   //
  2937.   ReadCtrls(F);
  2938.   //
  2939.   F.Free;
  2940.   Empty := False;
  2941.   SendSkinDataMessage(WM_CHANGESKINDATA);
  2942.   SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2943. end;
  2944. procedure TbsSkinData.ClearSkin;
  2945. begin
  2946.   ClearAll;
  2947.   SendSkinDataMessage(WM_BEFORECHANGESKINDATA);
  2948.   SendSkinDataMessage(WM_CHANGESKINDATA);
  2949.   SendSkinDataMessage(WM_AFTERCHANGESKINDATA);
  2950. end;
  2951. constructor TbsCompressedStoredSkin.Create(AOwner: TComponent);
  2952. begin
  2953.   inherited;
  2954.   FCompressedStream := TMemoryStream.Create;
  2955. end;
  2956. destructor TbsCompressedStoredSkin.Destroy;
  2957. begin
  2958.   FCompressedStream.Free;
  2959.   inherited;
  2960. end;
  2961. function TbsCompressedStoredSkin.GetEmpty: Boolean;
  2962. begin
  2963.   Result := FCompressedStream.Size = 0;
  2964. end;
  2965. procedure TbsCompressedStoredSkin.SetFileName;
  2966. begin
  2967.   if (csDesigning in ComponentState) and not
  2968.      (csLoading in ComponentState)
  2969.   then
  2970.     begin
  2971.       FFileName := ExtractFileName(Value);
  2972.       LoadFromIniFile(Value);
  2973.     end
  2974.   else
  2975.     FFileName := Value;
  2976. end;
  2977. procedure TbsCompressedStoredSkin.DefineProperties(Filer: TFiler);
  2978. begin
  2979.   inherited;
  2980.   Filer.DefineBinaryProperty('CompressedData', ReadData, WriteData, True);
  2981. end;
  2982. const
  2983.   CompressVersion = 1;
  2984. procedure TbsCompressedStoredSkin.ReadData;
  2985. begin
  2986.   FCompressedStream.LoadFromStream(Reader);
  2987. end;
  2988. procedure TbsCompressedStoredSkin.WriteData;
  2989. begin
  2990.   FCompressedStream.SaveToStream(Writer);
  2991. end;
  2992. procedure TbsCompressedStoredSkin.DeCompressToStream;
  2993. begin
  2994.   DecompressStream(S, FCompressedStream);
  2995. end;
  2996. procedure TbsCompressedStoredSkin.LoadFromIniFile(AFileName: String);
  2997. var
  2998.   TmpStream: TMemoryStream;
  2999.   F: TMemIniFile;
  3000.   Path: String;
  3001.   FIniStrings: TStrings;
  3002.   BitMapName: String;
  3003.   BitMap: TBitMap;
  3004.   IsEmpty: Boolean;
  3005.   i, Count, CV: Integer;
  3006.   PNames: TStrings;
  3007. begin
  3008.   FIniStrings := TStringList.Create;
  3009.   FIniStrings.LoadFromFile(AFileName);
  3010.   F := TMemIniFile.Create(AFileName);
  3011.   if not CheckSkinFile(F)
  3012.   then
  3013.     begin
  3014.       F.Free;
  3015.       FIniStrings.Free;
  3016.       Exit;
  3017.     end;
  3018.   Path := ExtractFilePath(AFileName);
  3019.   FCompressedStream.Clear;
  3020.   TmpStream := TMemoryStream.Create;
  3021.   //
  3022.   CV := CompressVersion;
  3023.   TmpStream.Write(CV, SizeOf(CV));
  3024.   // load bitmaps to stream
  3025.   BitMap := TBitMap.Create;
  3026.   //
  3027.   BitMapName := F.ReadString('PICTURES', 'picture', '');
  3028.   if BitMapName <> ''
  3029.   then BitMap.LoadFromFile(Path + BitMapName)
  3030.   else BitMap.Assign(nil);
  3031.   IsEmpty := BitMap.Empty;
  3032.   TmpStream.Write(IsEmpty, SizeOf(IsEmpty));
  3033.   if not IsEmpty
  3034.   then BitMap.SaveToStream(TmpStream);
  3035.   //
  3036.   BitMapName := F.ReadString('PICTURES', 'inactivepicture', '');
  3037.   if BitMapName <> ''
  3038.   then BitMap.LoadFromFile(Path + BitMapName)
  3039.   else BitMap.Assign(nil);
  3040.   IsEmpty := BitMap.Empty;
  3041.   TmpStream.Write(IsEmpty, SizeOf(IsEmpty));
  3042.   if not IsEmpty then BitMap.SaveToStream(TmpStream);
  3043.   //
  3044.   BitMapName := F.ReadString('PICTURES', 'mask', '');
  3045.   if BitMapName <> ''
  3046.   then BitMap.LoadFromFile(Path + BitMapName)
  3047.   else BitMap.Assign(nil);
  3048.   IsEmpty := BitMap.Empty;
  3049.   TmpStream.Write(IsEmpty, SizeOf(IsEmpty));
  3050.   if not IsEmpty then BitMap.SaveToStream(TmpStream);
  3051.   //
  3052.   PNames := TStringList.Create;
  3053.   ReadStrings1(F, 'PICTURES', 'activepictures', PNames);
  3054.   Count := PNames.Count;
  3055.   TmpStream.Write(Count, SizeOf(Count));
  3056.   if Count > 0
  3057.   then
  3058.     for i := 0 to Count - 1 do
  3059.     begin
  3060.       BitMapName := Path + PNames[i];
  3061.       BitMap.LoadFromFile(BitMapName);
  3062.       BitMap.SaveToStream(TmpStream);
  3063.     end;
  3064.   PNames.Free;
  3065.   //
  3066.   FIniStrings.SaveToStream(TmpStream);
  3067.   //
  3068.   CompressStream(TmpStream, FCompressedStream);
  3069.   BitMap.Free;
  3070.   FIniStrings.Free;
  3071.   TmpStream.Free;
  3072.   F.Free;
  3073. end;
  3074. procedure TbsCompressedStoredSkin.LoadFromCompressFile(AFileName: String);
  3075. var
  3076.   F: TFileStream;
  3077.   CV, Size: LongInt;
  3078. begin
  3079.   FCompressedStream.Clear;
  3080.   F := TFileStream.Create(AFileName, fmOpenRead);
  3081.   F.Read(CV, SizeOf(CV));
  3082.   if CV = 1
  3083.   then
  3084.     begin
  3085.       F.Read(Size, SizeOf(Size));
  3086.       FCompressedStream.CopyFrom(F, Size);
  3087.     end;
  3088.   F.Free;
  3089. end;
  3090. procedure TbsCompressedStoredSkin.SaveToCompressFile(AFileName: String);
  3091. var
  3092.   F: TFileStream;
  3093.   CV, Size: LongInt;
  3094. begin
  3095.   if Empty then Exit;
  3096.   F := TFileStream.Create(AFileName, fmCreate);
  3097.   CV := CompressVersion;
  3098.   F.Write(CV, SizeOf(CV));
  3099.   Size := FCompressedStream.Size;
  3100.   F.Write(Size, SizeOf(Size));
  3101.   FCompressedStream.SaveToStream(F);
  3102.   F.Free;
  3103. end;
  3104. end.