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

Delphi控件源码

开发平台:

Delphi

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