{"id":1031,"date":"2014-04-22T21:44:56","date_gmt":"2014-04-22T20:44:56","guid":{"rendered":"http:\/\/tulip-ui.azurewebsites.net\/?page_id=1031"},"modified":"2014-04-23T22:58:47","modified_gmt":"2014-04-23T21:58:47","slug":"tulip-ui-classes-pas","status":"publish","type":"page","link":"http:\/\/tulip-ui.azurewebsites.net\/?page_id=1031","title":{"rendered":"Tulip.UI.Classes.pas"},"content":{"rendered":"<div style=\"background-color: #FFFFFF; width: 680px\">\n<header class=\"entry-meta\" style=\"text-align: Right;\"><a title=\"Source Files\" href=\"http:\/\/tulip-ui.azurewebsites.net\/?page_id=1091\">Source Files<\/a><span> | Tulip.UI.Classes.pas<\/span><\/header>\n<p><code><\/p>\n<pre>\r\n{******************************************************************************}\r\n{                                                                              }\r\n{                        Tulip - User Interface Library                        }\r\n{                                                                              }\r\n{         Copyright(c) 2012 - 2013 Marcos Gomes. All rights Reserved.          }\r\n{                                                                              }\r\n{  --------------------------------------------------------------------------  }\r\n{                                                                              }\r\n{  This product is based on Asphyre Sphinx (c) 2000 - 2012  Yuriy Kotsarenko.  }\r\n{       All rights reserved. Official web site: http:\/\/www.afterwarp.net       }\r\n{                                                                              }\r\n{******************************************************************************}\r\n{                                                                              }\r\n{  Important Notice:                                                           }\r\n{                                                                              }\r\n{  If you modify\/use this code or one of its parts either in original or       }\r\n{  modified form, you must comply with Mozilla Public License Version 2.0,     }\r\n{  including section 3, \"Responsibilities\". Failure to do so will result in    }\r\n{  the license breach, which will be resolved in the court. Remember that      }\r\n{  violating author's rights either accidentally or intentionally is           }\r\n{  considered a serious crime in many countries. Thank you!                    }\r\n{                                                                              }\r\n{  !! Please *read* Mozilla Public License 2.0 document located at:            }\r\n{  http:\/\/www.mozilla.org\/MPL\/                                                 }\r\n{                                                                              }\r\n{  --------------------------------------------------------------------------  }\r\n{                                                                              }\r\n{  The contents of this file are subject to the Mozilla Public License         }\r\n{  Version 2.0 (the \"License\"); you may not use this file except in            }\r\n{  compliance with the License. You may obtain a copy of the License at        }\r\n{  http:\/\/www.mozilla.org\/MPL\/                                                 }\r\n{                                                                              }\r\n{  Software distributed under the License is distributed on an \"AS IS\"         }\r\n{  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the     }\r\n{  License for the specific language governing rights and limitations          }\r\n{  under the License.                                                          }\r\n{                                                                              }\r\n{  The Original Code is Tulip.UI.Classes.pas.                                  }\r\n{                                                                              }\r\n{  The Initial Developer of the Original Code is Marcos Gomes.                 }\r\n{  Portions created by Marcos Gomes are Copyright (C) 2012, Marcos Gomes.      }\r\n{  All Rights Reserved.                                                        }\r\n{                                                                              }\r\n{******************************************************************************}\r\n{                                                                              }\r\n{  Tulip.UI.Classes.pas                                 Modified: 23-Mar-2013  }\r\n{  --------------------------------------------------------------------------  }\r\n{                                                                              }\r\n{                  Implementations of Objects used by Controls                 }\r\n{                                                                              }\r\n{                                Version 1.03                                  }\r\n{                                                                              }\r\n{******************************************************************************}\r\n\r\nunit Tulip.UI.Classes;\r\n\r\ninterface\r\n\r\nuses\r\n  System.Classes, System.StrUtils, System.Types,\r\n  \/\/ Tulip UI Units\r\n  Tulip.UI.Types;\r\n\r\ntype\r\n\r\n{$REGION 'Forward Declarations'}\r\n  TAStringList = class;\r\n  TActiveBorder = class;\r\n  TActiveFormatedFont = class;\r\n  TBorder = class;\r\n  TBtBox = class;\r\n  TCkBox = class;\r\n  TEditFont = class;\r\n  TFillColor = class;\r\n  TFormatedFont = class;\r\n  TImage = class;\r\n  TTextColor = class;\r\n{$ENDREGION}\r\n{$REGION 'TAStringList'}\r\n\r\n  TAStringList = class(TPersistent)\r\n  private\r\n    FItems: TStringArray;\r\n    FText: String;\r\n    function GetCount: Integer;\r\n    procedure SetText(AText: String);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n\r\n    function Add(AString: String): Integer;\r\n    function IndexOf(AString: String): Integer;\r\n    function Insert(AString: String; Index: Integer = 0): Integer;\r\n    function Remove(AString: String): Boolean; overload;\r\n    function Remove(Index: Integer): Boolean; overload;\r\n    procedure Clear;\r\n\r\n    property Count: Integer read GetCount;\r\n    property Items: TStringArray read FItems;\r\n  published\r\n    property Text: String read FText write SetText;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TActiveBorder'}\r\n\r\n  TActiveBorder = class(TPersistent)\r\n  private\r\n    FColor: TAColor;\r\n    FColorHover: TAColor;\r\n    FColorPressed: TAColor;\r\n    FEdges: TEdges;\r\n    FSize: TConstraintSize;\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n  published\r\n    property Color: TAColor read FColor write FColor;\r\n    property ColorHover: TAColor read FColorHover write FColorHover;\r\n    property ColorPressed: TAColor read FColorPressed write FColorPressed;\r\n    property Edges: TEdges read FEdges write FEdges;\r\n    property Size: TConstraintSize read FSize write FSize;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TActiveFormatedFont'}\r\n\r\n  TActiveFormatedFont = class(TPersistent)\r\n  private\r\n    FColor: TTextColor;\r\n    FColorHover: TTextColor;\r\n    FColorPressed: TTextColor;\r\n    FName: String;\r\n    FPLine: Boolean;\r\n    FHAlign: THorizontalAlign;\r\n    FVAlign: TVerticalAlign;\r\n    procedure SetColor(Value: TTextColor);\r\n    procedure SetColorHover(Value: TTextColor);\r\n    procedure SetColorPressed(Value: TTextColor);\r\n    procedure SetName(Value: String);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n  published\r\n    property Color: TTextColor read FColor write SetColor;\r\n    property ColorHover: TTextColor read FColorHover write SetColorHover;\r\n    property ColorPressed: TTextColor read FColorPressed write SetColorPressed;\r\n    property Name: String read FName write SetName;\r\n    property HorizontalAlign: THorizontalAlign read FHAlign write FHAlign;\r\n    property ParagraphLine: Boolean read FPLine write FPLine;\r\n    property VerticalAlign: TVerticalAlign read FVAlign write FVAlign;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TBorder'}\r\n\r\n  TBorder = class(TPersistent)\r\n  private\r\n    FColor: TAColor;\r\n    FEdges: TEdges;\r\n    FSize: TConstraintSize;\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create; overload;\r\n    constructor Create(AColor: TAColor; AEdges: TEdges;\r\n      ASize: TConstraintSize); overload;\r\n  published\r\n    property Color: TAColor read FColor write FColor;\r\n    property Edges: TEdges read FEdges write FEdges;\r\n    property Size: TConstraintSize read FSize write FSize;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TBtBox'}\r\n\r\n  TBtBox = class(TPersistent)\r\n  private\r\n    FBorder: TActiveBorder;\r\n    FColor: TFillColor;\r\n    FColorHover: TFillColor;\r\n    FColorPressed: TFillColor;\r\n    FControlState: TControlState;\r\n    FEnabled: Boolean;\r\n    FImage: TImage;\r\n    FImageHover: TImage;\r\n    FImagePressed: TImage;\r\n    FHeight: TConstraintSize;\r\n    FWidth: TConstraintSize;\r\n    FVisible: Boolean;\r\n\r\n    procedure SetBorder(Value: TActiveBorder);\r\n    procedure SetColor(Value: TFillColor);\r\n    procedure SetColorHover(Value: TFillColor);\r\n    procedure SetColorPressed(Value: TFillColor);\r\n    procedure SetEnabled(Value: Boolean);\r\n    procedure SetImage(Value: TImage);\r\n    procedure SetImageHover(Value: TImage);\r\n    procedure SetImagePressed(Value: TImage);\r\n    procedure SetHeight(Value: TConstraintSize);\r\n    procedure SetVisible(Value: Boolean);\r\n    procedure SetWidth(Value: TConstraintSize);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n\r\n    property ControlState: TControlState read FControlState write FControlState;\r\n  published\r\n    property Border: TActiveBorder read FBorder write SetBorder;\r\n    property Color: TFillColor read FColor write SetColor;\r\n    property ColorHover: TFillColor read FColorHover write SetColorHover;\r\n    property ColorPressed: TFillColor read FColorPressed write SetColorPressed;\r\n    property Enabled: Boolean read FEnabled write SetEnabled;\r\n    property Image: TImage read FImage write SetImage;\r\n    property ImageHover: TImage read FImageHover write SetImageHover;\r\n    property ImagePressed: TImage read FImagePressed write SetImagePressed;\r\n    property Height: TConstraintSize read FHeight write SetHeight;\r\n    property Visible: Boolean read FVisible write SetVisible;\r\n    property Width: TConstraintSize read FWidth write SetWidth;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TCkBox'}\r\n\r\n  TCkBox = class(TPersistent)\r\n  private\r\n    FBorder: TBorder;\r\n    FCheckedColor: TAColor;\r\n    FCheckedImage: TImage;\r\n    FColor: TFillColor;\r\n    FImage: TImage;\r\n    FSize: Word;\r\n\r\n    procedure SetBorder(Value: TBorder);\r\n    procedure SetCheckedColor(Value: TAColor);\r\n    procedure SetCheckedImage(Value: TImage);\r\n    procedure SetColor(Value: TFillColor);\r\n    procedure SetImage(Value: TImage);\r\n    procedure SetSize(Value: Word);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n  published\r\n    property Border: TBorder read FBorder write SetBorder;\r\n    property CheckedColor: TAColor read FCheckedColor write SetCheckedColor;\r\n    property CheckedImage: TImage read FCheckedImage write SetCheckedImage;\r\n    property Color: TFillColor read FColor write SetColor;\r\n    property Image: TImage read FImage write SetImage;\r\n    property Size: Word read FSize write SetSize;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TEditFont'}\r\n\r\n  TEditFont = class(TPersistent)\r\n  private\r\n    FColor: TTextColor;\r\n    FName: String;\r\n    FSelectionColor: TTextColor;\r\n    procedure SetColor(Value: TTextColor);\r\n    procedure SetName(Value: String);\r\n    procedure SetSelectionColor(Value: TTextColor);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n  published\r\n    property Color: TTextColor read FColor write SetColor;\r\n    property Name: String read FName write SetName;\r\n    property SelectionColor: TTextColor read FSelectionColor\r\n      write SetSelectionColor;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TFillColor'}\r\n\r\n  TFillColor = class(TPersistent)\r\n  private\r\n    fa: TAColor;\r\n    fb: TAColor;\r\n    fc: TAColor;\r\n    fd: TAColor;\r\n    procedure SetA(c: TAColor);\r\n    procedure SetB(c: TAColor);\r\n    procedure SetC(c: TAColor);\r\n    procedure SetD(c: TAColor);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create; overload;\r\n    constructor Create(a, b, c, d: TAColor); overload;\r\n\r\n    procedure SetFillColor(a, b, c, d: TAColor);\r\n  published\r\n    property TopLeft: TAColor read fa write SetA;\r\n    property TopRight: TAColor read fb write SetB;\r\n    property BottomRight: TAColor read fc write SetC;\r\n    property BottomLeft: TAColor read fd write SetD;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TFormatedFont'}\r\n\r\n  TFormatedFont = class(TPersistent)\r\n  private\r\n    FColor: TTextColor;\r\n    FName: String;\r\n    FPLine: Boolean;\r\n    FHAlign: THorizontalAlign;\r\n    FVAlign: TVerticalAlign;\r\n    procedure SetColor(Value: TTextColor);\r\n    procedure SetName(Value: String);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n  published\r\n    property Color: TTextColor read FColor write SetColor;\r\n    property Name: String read FName write SetName;\r\n    property HorizontalAlign: THorizontalAlign read FHAlign write FHAlign;\r\n    property ParagraphLine: Boolean read FPLine write FPLine;\r\n    property VerticalAlign: TVerticalAlign read FVAlign write FVAlign;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TImage'}\r\n\r\n  TImage = class(TPersistent)\r\n  private\r\n    FImage: String;\r\n    FBottom: Integer;\r\n    FLeft: Integer;\r\n    FRight: Integer;\r\n    FTop: Integer;\r\n    procedure SetImage(Value: String);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create;\r\n    destructor Destroy; override;\r\n\r\n    function Rect: TRect;\r\n  published\r\n    property Image: String read FImage write SetImage;\r\n    property Bottom: Integer read FBottom write FBottom;\r\n    property Left: Integer read FLeft write FLeft;\r\n    property Right: Integer read FRight write FRight;\r\n    property Top: Integer read FTop write FTop;\r\n  end;\r\n{$ENDREGION}\r\n{$REGION 'TTextColor'}\r\n\r\n  TTextColor = class(TPersistent)\r\n  private\r\n    fa: TAColor;\r\n    fb: TAColor;\r\n    procedure SetA(c: TAColor);\r\n    procedure SetB(c: TAColor);\r\n  protected\r\n    procedure AssignTo(Dest: TPersistent); override;\r\n  public\r\n    constructor Create; overload;\r\n    constructor Create(a, b: TAColor); overload;\r\n\r\n    procedure SetColor(a, b: TAColor);\r\n  published\r\n    property Top: TAColor read fa write SetA;\r\n    property Bottom: TAColor read fb write SetB;\r\n  end;\r\n{$ENDREGION}\r\n\r\nimplementation\r\n\r\n{$REGION 'TAStringList'}\r\n{ TAStringList }\r\n\r\nfunction TAStringList.Add(AString: String): Integer;\r\nvar\r\n  temp: string;\r\nbegin\r\n  temp := FText;\r\n\r\n  \/\/ Check if new string contains #10 and #13 chars\r\n  \/\/ We want to add just one single string each time\r\n  if (ContainsText(AString, #10)) or (ContainsText(AString, #13)) then\r\n  begin\r\n    AString := ReplaceText(AString, #10, '');\r\n    AString := ReplaceText(AString, #13, '');\r\n  end;\r\n\r\n  if temp = '' then\r\n  begin\r\n    temp := AString + #13;\r\n  end\r\n  else\r\n  begin\r\n    temp := temp + AString + #13;\r\n  end;\r\n\r\n  Text := temp;\r\n  Result := GetCount;\r\nend;\r\n\r\nprocedure TAStringList.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TAStringList then\r\n    with TAStringList(Dest) do\r\n    begin\r\n      Text := Self.Text;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nprocedure TAStringList.Clear;\r\nbegin\r\n  SetLength(FItems, 0);\r\n  FText := '';\r\nend;\r\n\r\nconstructor TAStringList.Create;\r\nbegin\r\n  Clear;\r\nend;\r\n\r\ndestructor TAStringList.Destroy;\r\nbegin\r\n  Clear;\r\n  FItems := nil;\r\n\r\n  inherited;\r\nend;\r\n\r\nfunction TAStringList.GetCount: Integer;\r\nbegin\r\n  Result := Length(FItems);\r\nend;\r\n\r\nfunction TAStringList.IndexOf(AString: String): Integer;\r\nvar\r\n  I, Count: Integer;\r\nbegin\r\n  Result := -1;\r\n\r\n  Count := GetCount;\r\n  if Count > 0 then\r\n  begin\r\n    for I := 0 to Count - 1 do\r\n    begin\r\n      if FItems[I] = AString then\r\n      begin\r\n        Result := I;\r\n        Break;\r\n      end;\r\n    end;\r\n  end;\r\nend;\r\n\r\nfunction TAStringList.Insert(AString: String; Index: Integer = 0): Integer;\r\nvar\r\n  temp: String;\r\n  I, IniPos: Integer;\r\nbegin\r\n  Result := -1;\r\n\r\n  if (Index < 0) and (Index >= GetCount) then\r\n    Exit;\r\n\r\n  temp := Text;\r\n\r\n  \/\/ Check if new string contains #10 and #13 chars\r\n  \/\/ We want to insert just one single string each time\r\n  if (ContainsText(AString, #10)) or (ContainsText(AString, #13)) then\r\n  begin\r\n    AString := ReplaceText(AString, #10, '');\r\n    AString := ReplaceText(AString, #13, '');\r\n  end;\r\n\r\n  if (Index = 0) then \/\/ insert on begining\r\n  begin\r\n    if temp = '' then\r\n      temp := AString + #13\r\n    else\r\n      temp := AString + #13 + temp;\r\n  end\r\n  else\r\n  begin\r\n    IniPos := 1;\r\n    for I := 0 to Index - 1 do\r\n    begin\r\n      if PosEx(#13, temp, IniPos + 1) > 0 then\r\n        IniPos := PosEx(#13, temp, IniPos + 1);\r\n    end;\r\n\r\n    System.Insert(#13 + AString, temp, IniPos);\r\n  end;\r\n\r\n  Result := Index;\r\n  Text := temp;\r\nend;\r\n\r\nfunction TAStringList.Remove(Index: Integer): Boolean;\r\nvar\r\n  s, temp: String;\r\n  I, IniPos: Integer;\r\nbegin\r\n  Result := False;\r\n\r\n  if (Index < 0) or (Index >= GetCount) then\r\n    Exit;\r\n\r\n  temp := FText;\r\n  s := FItems[Index];\r\n\r\n  if Index = 0 then\r\n  begin\r\n    if GetCount > 1 then\r\n      Delete(temp, 1, Pos(#13, temp))\r\n    else\r\n      temp := '';\r\n  end\r\n  else\r\n  begin\r\n    IniPos := 0;\r\n    for I := 0 to Index - 1 do\r\n    begin\r\n      if PosEx(#13, temp, IniPos + 1) > 0 then\r\n        IniPos := PosEx(#13, temp, IniPos + 1);\r\n    end;\r\n\r\n    Delete(temp, IniPos, Length(s) + 1);\r\n  end;\r\n\r\n  Text := temp;\r\n  Result := True;\r\nend;\r\n\r\nfunction TAStringList.Remove(AString: String): Boolean;\r\nvar\r\n  Index: Integer;\r\nbegin\r\n  Result := False;\r\n  Index := IndexOf(AString);\r\n\r\n  if Index <> -1 then\r\n  begin\r\n    Result := Remove(Index);\r\n  end;\r\nend;\r\n\r\nprocedure TAStringList.SetText(AText: String);\r\nvar\r\n  I, J: Integer;\r\nbegin\r\n  if FText <> AText then\r\n  begin\r\n    Clear;\r\n    FText := AText;\r\n\r\n    if Length(AText) > 0 then\r\n    begin\r\n      J := GetCount;\r\n      for I := 1 to Length(AText) do\r\n      begin\r\n        SetLength(FItems, J + 1);\r\n\r\n        if (AText[I] <> #13) then\r\n        begin\r\n          if (AText[I] <> #10) then\r\n            FItems[J] := FItems[J] + AText[I]\r\n        end\r\n        else\r\n          J := J + 1;\r\n      end;\r\n    end;\r\n  end;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TActiveBorder'}\r\n{ TActiveBorder }\r\n\r\nprocedure TActiveBorder.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TActiveBorder then\r\n    with TActiveBorder(Dest) do\r\n    begin\r\n      Color := Self.Color;\r\n      ColorHover := Self.ColorHover;\r\n      ColorPressed := Self.ColorPressed;\r\n      Edges := Self.Edges;\r\n      Size := Self.Size;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TActiveBorder.Create;\r\nbegin\r\n  FColor := $FF000000;\r\n  FColorHover := $FF000000;\r\n  FColorPressed := $FF000000;\r\n  FEdges := [eLeft, eTop, eRight, eBottom];\r\n  FSize := 1;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TActiveFormatedFont'}\r\n{ TActiveFormatedFont }\r\n\r\nprocedure TActiveFormatedFont.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TActiveFormatedFont then\r\n    with TActiveFormatedFont(Dest) do\r\n    begin\r\n      Color := Self.Color;\r\n      ColorHover := Self.ColorHover;\r\n      ColorPressed := Self.ColorPressed;\r\n      Name := Self.Name;\r\n      ParagraphLine := Self.ParagraphLine;\r\n      HorizontalAlign := Self.HorizontalAlign;\r\n      VerticalAlign := Self.VerticalAlign;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TActiveFormatedFont.Create;\r\nbegin\r\n  FColor := TTextColor.Create;\r\n  FColorHover := TTextColor.Create;\r\n  FColorPressed := TTextColor.Create;\r\n  FName := 'Tahoma10';\r\n  FPLine := True;\r\n  FHAlign := aCenter;\r\n  FVAlign := aMiddle;\r\nend;\r\n\r\ndestructor TActiveFormatedFont.Destroy;\r\nbegin\r\n  FColor.Free;\r\n  FColorHover.Free;\r\n  FColorPressed.Free;\r\n\r\n  inherited;\r\nend;\r\n\r\nprocedure TActiveFormatedFont.SetColor(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColor.Assign(Value);\r\nend;\r\n\r\nprocedure TActiveFormatedFont.SetColorHover(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColorHover.Assign(Value);\r\nend;\r\n\r\nprocedure TActiveFormatedFont.SetColorPressed(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColorPressed.Assign(Value);\r\nend;\r\n\r\nprocedure TActiveFormatedFont.SetName(Value: String);\r\nbegin\r\n  FName := Value;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TBorder'}\r\n{ TBorder }\r\n\r\nprocedure TBorder.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TBorder then\r\n    with TBorder(Dest) do\r\n    begin\r\n      Color := Self.Color;\r\n      Edges := Self.Edges;\r\n      Size := Self.Size;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TBorder.Create;\r\nbegin\r\n  FColor := $FF000000;\r\n  FEdges := [eLeft, eTop, eRight, eBottom];\r\n  FSize := 1;\r\nend;\r\n\r\nconstructor TBorder.Create(AColor: TAColor; AEdges: TEdges;\r\n  ASize: TConstraintSize);\r\nbegin\r\n  FColor := AColor;\r\n  FEdges := AEdges;\r\n  FSize := ASize;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TBtBox'}\r\n{ TBtBox }\r\n\r\nprocedure TBtBox.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TBtBox then\r\n    with TBtBox(Dest) do\r\n    begin\r\n      Border := Self.Border;\r\n      Color := Self.Color;\r\n      ColorHover := Self.ColorHover;\r\n      ColorPressed := Self.ColorPressed;\r\n      Enabled := Self.Enabled;\r\n      Image := Self.Image;\r\n      ImageHover := Self.ImageHover;\r\n      ImagePressed := Self.ImagePressed;\r\n      Height := Self.Height;\r\n      Width := Self.Width;\r\n      Visible := Self.Visible;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TBtBox.Create;\r\nbegin\r\n  FBorder := TActiveBorder.Create;\r\n  FBorder.Color := $B0FFFFFF;\r\n  FBorder.ColorHover := $C0FFFFFF;\r\n  FBorder.ColorPressed := $C0FFFFFF;\r\n  FBorder.Size := 1;\r\n  FColor := TFillColor.Create($FFA6CAF0, $FFA6CAF0, $FF4090F0, $FF4090F0);\r\n  FColorHover := TFillColor.Create($FFB6DAF0, $FFB6DAF0, $FF409AF0, $FF409AF0);\r\n  FColorPressed := TFillColor.Create($FF4090F0, $FF4090F0, $FFA6CAF0,\r\n    $FFA6CAF0);\r\n  FControlState := [];\r\n  FEnabled := True;\r\n  FImage := TImage.Create;\r\n  FImageHover := TImage.Create;\r\n  FImagePressed := TImage.Create;\r\n  FHeight := 12;\r\n  FWidth := 12;\r\n  FVisible := True;\r\nend;\r\n\r\ndestructor TBtBox.Destroy;\r\nbegin\r\n  FBorder.Free;\r\n  FColor.Free;\r\n  FColorHover.Free;\r\n  FColorPressed.Free;\r\n  FImage.Free;\r\n  FImageHover.Free;\r\n  FImagePressed.Free;\r\n\r\n  inherited;\r\nend;\r\n\r\nprocedure TBtBox.SetBorder(Value: TActiveBorder);\r\nbegin\r\n  if Value <> nil then\r\n    FBorder.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetColor(Value: TFillColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColor.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetColorHover(Value: TFillColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColorHover.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetColorPressed(Value: TFillColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColorPressed.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetEnabled(Value: Boolean);\r\nbegin\r\n  FEnabled := Value;\r\nend;\r\n\r\nprocedure TBtBox.SetHeight(Value: TConstraintSize);\r\nbegin\r\n  FHeight := Value;\r\nend;\r\n\r\nprocedure TBtBox.SetImage(Value: TImage);\r\nbegin\r\n  if Value <> nil then\r\n    FImage.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetImageHover(Value: TImage);\r\nbegin\r\n  if Value <> nil then\r\n    FImageHover.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetImagePressed(Value: TImage);\r\nbegin\r\n  if Value <> nil then\r\n    FImagePressed.Assign(Value);\r\nend;\r\n\r\nprocedure TBtBox.SetVisible(Value: Boolean);\r\nbegin\r\n  FVisible := Value;\r\nend;\r\n\r\nprocedure TBtBox.SetWidth(Value: TConstraintSize);\r\nbegin\r\n  FWidth := Value;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TCkBox'}\r\n{ TCkBox }\r\n\r\nprocedure TCkBox.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TCkBox then\r\n    with TCkBox(Dest) do\r\n    begin\r\n      Border := Self.Border;\r\n      CheckedColor := Self.CheckedColor;\r\n      CheckedImage := Self.CheckedImage;\r\n      Color := Self.Color;\r\n      Image := Self.Image;\r\n      Size := Self.Size;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TCkBox.Create;\r\nbegin\r\n  FBorder := TBorder.Create;\r\n  FBorder.Color := $B0FFFFFF;\r\n  FCheckedColor := $B0FFFFFF;\r\n  FCheckedImage := TImage.Create;\r\n  FColor := TFillColor.Create($FF4090F0, $FF4090F0, $FF6EAAF4, $FF6EAAF4);\r\n  FImage := TImage.Create;\r\n  FSize := 16;\r\nend;\r\n\r\ndestructor TCkBox.Destroy;\r\nbegin\r\n  FBorder.Free;\r\n  FCheckedImage.Free;\r\n  FColor.Free;\r\n  FImage.Free;\r\n\r\n  inherited;\r\nend;\r\n\r\nprocedure TCkBox.SetBorder(Value: TBorder);\r\nbegin\r\n  if Value <> nil then\r\n    FBorder.Assign(Value);\r\nend;\r\n\r\nprocedure TCkBox.SetCheckedColor(Value: TAColor);\r\nbegin\r\n  FCheckedColor := Value;\r\nend;\r\n\r\nprocedure TCkBox.SetCheckedImage(Value: TImage);\r\nbegin\r\n  if Value <> nil then\r\n    FCheckedImage.Assign(Value);\r\nend;\r\n\r\nprocedure TCkBox.SetColor(Value: TFillColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColor.Assign(Value);\r\nend;\r\n\r\nprocedure TCkBox.SetImage(Value: TImage);\r\nbegin\r\n  if Value <> nil then\r\n    FImage.Assign(Value);\r\nend;\r\n\r\nprocedure TCkBox.SetSize(Value: Word);\r\nbegin\r\n  FSize := Value;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TEditFont'}\r\n{ TEditFont }\r\n\r\nprocedure TEditFont.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TEditFont then\r\n    with TEditFont(Dest) do\r\n    begin\r\n      Color := Self.Color;\r\n      Name := Self.Name;\r\n      SelectionColor := Self.SelectionColor;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TEditFont.Create;\r\nbegin\r\n  FColor := TTextColor.Create;\r\n  FName := 'Tahoma10';\r\n  FSelectionColor := TTextColor.Create($B0206DBE, $B0206DBE);\r\nend;\r\n\r\ndestructor TEditFont.Destroy;\r\nbegin\r\n  FColor.Free;\r\n  FSelectionColor.Free;\r\n\r\n  inherited;\r\nend;\r\n\r\nprocedure TEditFont.SetColor(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColor.Assign(Value);\r\nend;\r\n\r\nprocedure TEditFont.SetName(Value: String);\r\nbegin\r\n  FName := Value;\r\nend;\r\n\r\nprocedure TEditFont.SetSelectionColor(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FSelectionColor.Assign(Value);\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TFillColor'}\r\n{ TFillColor }\r\n\r\nprocedure TFillColor.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TFillColor then\r\n    with TFillColor(Dest) do\r\n    begin\r\n      fa := Self.fa;\r\n      fb := Self.fb;\r\n      fc := Self.fc;\r\n      fd := Self.fd;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TFillColor.Create;\r\nbegin\r\n  inherited Create;\r\n\r\n  \/\/ Set white color for all subcolors\r\n  fa := $FFFFFFFF;\r\n  fb := $FFFFFFFF;\r\n  fc := $FFFFFFFF;\r\n  fd := $FFFFFFFF;\r\nend;\r\n\r\nconstructor TFillColor.Create(a, b, c, d: TAColor);\r\nbegin\r\n  inherited Create;\r\n\r\n  fa := a;\r\n  fb := b;\r\n  fc := c;\r\n  fd := d;\r\nend;\r\n\r\nprocedure TFillColor.SetA(c: TAColor);\r\nbegin\r\n  if fa <> c then\r\n    fa := c;\r\nend;\r\n\r\nprocedure TFillColor.SetB(c: TAColor);\r\nbegin\r\n  if fb <> c then\r\n    fb := c;\r\nend;\r\n\r\nprocedure TFillColor.SetC(c: TAColor);\r\nbegin\r\n  if fc <> c then\r\n    fc := c;\r\nend;\r\n\r\nprocedure TFillColor.SetD(c: TAColor);\r\nbegin\r\n  if fd <> c then\r\n    fd := c;\r\nend;\r\n\r\nprocedure TFillColor.SetFillColor(a, b, c, d: TAColor);\r\nbegin\r\n  fa := a;\r\n  fb := b;\r\n  fc := c;\r\n  fd := d;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TFormatedFont'}\r\n{ TFormatedFont }\r\n\r\nprocedure TFormatedFont.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TFormatedFont then\r\n    with TFormatedFont(Dest) do\r\n    begin\r\n      Color := Self.Color;\r\n      Name := Self.Name;\r\n      ParagraphLine := Self.ParagraphLine;\r\n      HorizontalAlign := Self.HorizontalAlign;\r\n      VerticalAlign := Self.VerticalAlign;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TFormatedFont.Create;\r\nbegin\r\n  FColor := TTextColor.Create;\r\n  FName := 'Tahoma10';\r\n  FPLine := True;\r\n  FHAlign := aCenter;\r\n  FVAlign := aMiddle;\r\nend;\r\n\r\ndestructor TFormatedFont.Destroy;\r\nbegin\r\n  FColor.Free;\r\n\r\n  inherited;\r\nend;\r\n\r\nprocedure TFormatedFont.SetColor(Value: TTextColor);\r\nbegin\r\n  if Value <> nil then\r\n    FColor.Assign(Value);\r\nend;\r\n\r\nprocedure TFormatedFont.SetName(Value: String);\r\nbegin\r\n  FName := Value;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TImage'}\r\n{ TImage }\r\n\r\nprocedure TImage.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TImage then\r\n    with TImage(Dest) do\r\n    begin\r\n      Image := Self.Image;\r\n      Left := Self.Left;\r\n      Top := Self.Top;\r\n      Right := Self.Right;\r\n      Bottom := Self.Bottom;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TImage.Create;\r\nbegin\r\n  FImage := '';\r\n  FLeft := 0;\r\n  FTop := 0;\r\n  FRight := 0;\r\n  FBottom := 0;\r\nend;\r\n\r\ndestructor TImage.Destroy;\r\nbegin\r\n  inherited;\r\nend;\r\n\r\nfunction TImage.Rect: TRect;\r\nbegin\r\n  Result := System.Types.Rect(FLeft, FTop, FRight, FBottom);\r\nend;\r\n\r\nprocedure TImage.SetImage(Value: String);\r\nbegin\r\n  FImage := Value;\r\nend;\r\n{$ENDREGION}\r\n{$REGION 'TTextColor'}\r\n{ TTextColor }\r\n\r\nprocedure TTextColor.AssignTo(Dest: TPersistent);\r\nbegin\r\n  if Dest is TTextColor then\r\n    with TTextColor(Dest) do\r\n    begin\r\n      fa := Self.fa;\r\n      fb := Self.fb;\r\n    end\r\n  else\r\n    inherited;\r\nend;\r\n\r\nconstructor TTextColor.Create;\r\nbegin\r\n  inherited;\r\n\r\n  fa := $FFFFFFFF;\r\n  fb := $FFEEEEEE;\r\nend;\r\n\r\nconstructor TTextColor.Create(a, b: TAColor);\r\nbegin\r\n  inherited Create;\r\n\r\n  fa := a;\r\n  fb := b;\r\nend;\r\n\r\nprocedure TTextColor.SetA(c: TAColor);\r\nbegin\r\n  if fa <> c then\r\n    fa := c;\r\nend;\r\n\r\nprocedure TTextColor.SetB(c: TAColor);\r\nbegin\r\n  if fb <> c then\r\n    fb := c;\r\nend;\r\n\r\nprocedure TTextColor.SetColor(a, b: TAColor);\r\nbegin\r\n  fa := a;\r\n  fb := b;\r\nend;\r\n{$ENDREGION}\r\n\r\nend.\r\n<\/pre>\n<p><\/code><\/p>\n<footer class=\"entry-meta\" style=\"text-align: Right;\"><a title=\"Source Files\" href=\"http:\/\/tulip-ui.azurewebsites.net\/?page_id=1091\">Source Files<\/a><span> | Tulip.UI.Classes.pas<\/span><\/footer>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Source Files | Tulip.UI.Classes.pas {******************************************************************************} { } { Tulip &#8211; User Interface Library } { } { Copyright(c) 2012 &#8211; 2013 Marcos Gomes. All rights Reserved. } { } { <a class=\"more-link\" href=\"http:\/\/tulip-ui.azurewebsites.net\/?page_id=1031\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1091,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/pages\/1031"}],"collection":[{"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1031"}],"version-history":[{"count":3,"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/pages\/1031\/revisions"}],"predecessor-version":[{"id":2851,"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/pages\/1031\/revisions\/2851"}],"up":[{"embeddable":true,"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=\/wp\/v2\/pages\/1091"}],"wp:attachment":[{"href":"http:\/\/tulip-ui.azurewebsites.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}