Browse Source

Merge pull request #215 from melchiorrecaruso/dev-bgracontrols

Fixed issue "TabOrder for BCMaterialEdit and others not working"...
Leandro Oscar Ezequiel Diaz 11 months ago
parent
commit
00d1cbfee5

+ 776 - 62
bcmaterialedit.pas

@@ -1,42 +1,199 @@
 unit BCMaterialEdit;
 unit BCMaterialEdit;
 
 
-{$mode objfpc}{$H+}
+{$I bgracontrols.inc}
 
 
 interface
 interface
 
 
 uses
 uses
-  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
-  StdCtrls;
+  Classes, Controls, Dialogs, ExtCtrls, Forms, Graphics, {$IFDEF FPC} LCLType,
+  LResources, {$ENDIF} Menus, StdCtrls, SysUtils;
 
 
 type
 type
 
 
   { TBCMaterialEdit }
   { TBCMaterialEdit }
 
 
-  TBCMaterialEdit = class(TCustomPanel)
+  TBCMaterialEdit = class(TCustomControl)
   private
   private
     FAccentColor: TColor;
     FAccentColor: TColor;
     FDisabledColor: TColor;
     FDisabledColor: TColor;
-    Flbl: TLabel;
-    Fedt: TEdit;
-    Ffocused: boolean;
-    FOnChange: TNotifyEvent;
-    FTexto: string;
-    procedure ChangeEdit(Sender: TObject);
-    procedure EnterEdit(Sender: TObject);
-    procedure ExitEdit(Sender: TObject);
-    procedure SetTexto(AValue: string);
+    FEdit: TEdit;
+    FLabel: TBoundLabel;
+    FFocused: boolean;
+    function IsNeededAdjustHeight: boolean;
+
+    function GetOnEditChange: TNotifyEvent;
+    function GetOnEditClick: TNotifyEvent;
+    function GetOnEditContextPopup: TContextPopupEvent;
+    function GetOnEditDblClick: TNotifyEvent;
+    function GetOnEditDragDrop: TDragDropEvent;
+    function GetOnEditDragOver: TDragOverEvent;
+    function GetOnEditEditingDone: TNotifyEvent;
+    function GetOnEditEndDrag: TEndDragEvent;
+    function GetOnEditEnter: TNotifyEvent;
+    function GetOnEditExit: TNotifyEvent;
+    function GetOnEditKeyDown: TKeyEvent;
+    function GetOnEditKeyPress: TKeyPressEvent;
+    function GetOnEditKeyUp: TKeyEvent;
+    function GetOnEditMouseDown: TMouseEvent;
+    function GetOnEditMouseEnter: TNotifyEvent;
+    function GetOnEditMouseLeave: TNotifyEvent;
+    function GetOnEditMouseMove: TMouseMoveEvent;
+    function GetOnEditMouseUp: TMouseEvent;
+    function GetOnEditMouseWheel: TMouseWheelEvent;
+    function GetOnEditMouseWheelDown: TMouseWheelUpDownEvent;
+    function GetOnEditMouseWheelUp: TMouseWheelUpDownEvent;
+    function GetOnEditStartDrag: TStartDragEvent;
+    function GetOnEditUTF8KeyPress: TUTF8KeyPressEvent;
+
+    procedure SetOnEditChange(AValue: TNotifyEvent);
+    procedure SetOnEditClick(AValue: TNotifyEvent);
+    procedure SetOnEditContextPopup(AValue: TContextPopupEvent);
+    procedure SetOnEditDblClick(AValue: TNotifyEvent);
+    procedure SetOnEditDragDrop(AValue: TDragDropEvent);
+    procedure SetOnEditDragOver(AValue: TDragOverEvent);
+    procedure SetOnEditEditingDone(AValue: TNotifyEvent);
+    procedure SetOnEditEndDrag(AValue: TEndDragEvent);
+    procedure SetOnEditEnter(AValue: TNotifyEvent);
+    procedure SetOnEditExit(AValue: TNotifyEvent);
+    procedure SetOnEditKeyDown(AValue: TKeyEvent);
+    procedure SetOnEditKeyPress(AValue: TKeyPressEvent);
+    procedure SetOnEditKeyUp(AValue: TKeyEvent);
+    procedure SetOnEditMouseDown(AValue: TMouseEvent);
+    procedure SetOnEditMouseEnter(AValue: TNotifyEvent);
+    procedure SetOnEditMouseLeave(AValue: TNotifyEvent);
+    procedure SetOnEditMouseMove(AValue: TMouseMoveEvent);
+    procedure SetOnEditMouseUp(AValue: TMouseEvent);
+    procedure SetOnEditMouseWheel(AValue: TMouseWheelEvent);
+    procedure SetOnEditMouseWheelDown(AValue: TMouseWheelUpDownEvent);
+    procedure SetOnEditMouseWheelUp(AValue: TMouseWheelUpDownEvent);
+    procedure SetOnEditStartDrag(AValue: TStartDragEvent);
+    procedure SetOnEditUTF8KeyPress(AValue: TUTF8KeyPressEvent);
   protected
   protected
+    function GetEditAlignment: TAlignment;
+    function GetEditAutoSize: Boolean;
+    function GetEditAutoSelect: Boolean;
+    function GetEditCharCase: TEditCharCase;
+    function GetEditCursor: TCursor;
+    function GetEditDoubleBuffered: Boolean;
+    function GetEditDragCursor: TCursor;
+    function GetEditDragMode: TDragMode;
+    function GetEditEchoMode: TEchoMode;
+    function GetEditHideSelection: Boolean;
+    function GetEditHint: TTranslateString;
+    function GetEditMaxLength: Integer;
+    function GetEditNumbersOnly: Boolean;
+    function GetEditPasswordChar: Char;
+    function GetEditParentColor: Boolean;
+    function GetEditPopupMenu: TPopupMenu;
+    function GetEditReadOnly: Boolean;
+    function GetEditShowHint: Boolean;
+    function GetEditTag: PtrInt;
+    function GetEditTabStop: Boolean;
+    function GetEditText: TCaption;
+    function GetEditTextHint: TTranslateString;
+    function GetLabelCaption: TCaption;
+    function GetLabelSpacing: Integer;
+
+    procedure SetAnchors(const AValue: TAnchors); override;
+    procedure SetEditAlignment(const AValue: TAlignment);
+    procedure SetEditAutoSize(AValue: Boolean);
+    procedure SetEditAutoSelect(AValue: Boolean);
+    procedure SetEditCharCase(AValue: TEditCharCase);
+    procedure SetEditCursor(AValue: TCursor);
+    procedure SetEditDoubleBuffered(AValue: Boolean);
+    procedure SetEditDragCursor(AValue: TCursor);
+    procedure SetEditDragMode(AValue: TDragMode);
+    procedure SetEditEchoMode(AValue: TEchoMode);
+    procedure SetEditHideSelection(AValue: Boolean);
+    procedure SetEditHint(const AValue: TTranslateString);
+    procedure SetEditMaxLength(AValue: Integer);
+    procedure SetEditNumbersOnly(AValue: Boolean);
+    procedure SetEditParentColor(AValue: Boolean);
+    procedure SetEditPasswordChar(AValue: Char);
+    procedure SetEditPopupMenu(AValue: TPopupmenu);
+    procedure SetEditReadOnly(AValue: Boolean);
+    procedure SetEditShowHint(AValue: Boolean);
+    procedure SetEditTag(AValue: PtrInt);
+    procedure SetEditTabStop(AValue: Boolean);
+    procedure SetEditText(const AValue: TCaption);
+    procedure SetEditTextHint(const Avalue: TTranslateString);
+    procedure SetLabelCaption(const AValue: TCaption);
+    procedure SetLabelSpacing(AValue: Integer);
+    procedure SetName(const AValue: TComponentName); override;
+
+    procedure DoEnter; override;
+    procedure DoExit; override;
+    procedure DoOnResize; override;
     procedure Paint; override;
     procedure Paint; override;
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
   published
   published
+    property Align;
+    property Alignment: TAlignment read GetEditAlignment write SetEditAlignment default taLeftJustify;
+    property AccentColor: TColor read FAccentColor write FAccentColor;
+    property Anchors;
+    property AutoSelect: Boolean read GetEditAutoSelect write SetEditAutoSelect default True;
+    property AutoSize: Boolean read GetEditAutoSize write SetEditAutoSize;
+    property BiDiMode;
+    property BorderSpacing;
+    property Caption: TCaption read GetLabelCaption write SetLabelCaption;
+    property CharCase: TEditCharCase read GetEditCharCase write SetEditCharCase default ecNormal;
     property Color;
     property Color;
-    property Text: string read FTexto write SetTexto;
-    property Edit: TEdit read Fedt;
-    property Title: TLabel read Flbl;
+    property Constraints;
+    property Cursor: TCursor read GetEditCursor write SetEditCursor default crDefault;
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
-    property AccentColor: TColor read FAccentColor write FAccentColor;
-    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property DoubleBuffered: Boolean read GetEditDoubleBuffered write SetEditDoubleBuffered;
+    property DragCursor: TCursor read GetEditDragCursor write SetEditDragCursor default crDrag;
+    property DragMode: TDragMode read GetEditDragMode write SetEditDragMode default dmManual;
+    property Font;
+    property EchoMode: TEchoMode read GetEditEchoMode write SetEditEchoMode default emNormal;
+    property Edit: TEdit read FEdit;
+    property EditLabel: TBoundLabel read FLabel;
+    property Enabled;
+    property HideSelection: Boolean read GetEditHideSelection write SetEditHideSelection default True;
+    property Hint: TTranslateString read GetEditHint write SetEditHint;
+    property LabelSpacing: Integer read GetLabelSpacing write SetLabelSpacing default 0;
+    property MaxLength: Integer read GetEditMaxLength write SetEditMaxLength default 0;
+    property NumbersOnly: Boolean read GetEditNumbersOnly write SetEditNumbersOnly default False;
+    property ParentBiDiMode;
+    property ParentColor default False;
+    property ParentFont default False;
+    property PasswordChar: Char read GetEditPasswordChar write SetEditPasswordChar default #0;
+    property PopupMenu: TPopupmenu read GetEditPopupMenu write SetEditPopupMenu;
+    property ReadOnly: Boolean read GetEditReadOnly write SetEditReadOnly default False;
+    property ShowHint: Boolean read GetEditShowHint write SetEditShowHint default False;
+    property Tag: PtrInt read GetEditTag write SetEditTag default 0;
+    property TabOrder;
+    property TabStop: boolean read GetEditTabStop write SetEditTabStop default True;
+    property Text: TCaption read GetEditText write SetEditText;
+    property TextHint: TTranslateString read GetEditTextHint write SetEditTextHint;
+    property Visible;
+
+    property OnChange: TNotifyEvent read GetOnEditChange write SetOnEditChange;
+    property OnChangeBounds;
+    property OnClick: TNotifyEvent read GetOnEditClick write SetOnEditClick;
+    property OnContextPopup: TContextPopupEvent read GetOnEditContextPopup write SetOnEditContextPopup;
+    property OnDbClick: TNotifyEvent read GetOnEditDblClick write SetOnEditDblClick;
+    property OnDragDrop: TDragDropEvent read GetOnEditDragDrop write SetOnEditDragDrop;
+    property OnDragOver: TDragOverEvent read GetOnEditDragOver write SetOnEditDragOver;
+    property OnEditingDone: TNotifyEvent read GetOnEditEditingDone write SetOnEditEditingDone;
+    property OnEndDrag: TEndDragEvent read GetOnEditEndDrag write SetOnEditEndDrag;
+    property OnEnter: TNotifyEvent read GetOnEditEnter write SetOnEditEnter;
+    property OnExit: TNotifyEvent read GetOnEditExit write SetOnEditExit;
+    property OnKeyDown: TKeyEvent read GetOnEditKeyDown write SetOnEditKeyDown;
+    property OnKeyPress: TKeyPressEvent read GetOnEditKeyPress write SetOnEditKeyPress;
+    property OnKeyUp: TKeyEvent read GetOnEditKeyUp write SetOnEditKeyUp;
+    property OnMouseDown: TMouseEvent read GetOnEditMouseDown write SetOnEditMouseDown;
+    property OnMouseEnter: TNotifyEvent read GetOnEditMouseEnter write SetOnEditMouseEnter;
+    property OnMouseLeave: TNotifyEvent read GetOnEditMouseLeave write SetOnEditMouseLeave;
+    property OnMouseMove: TMouseMoveEvent read GetOnEditMouseMove write SetOnEditMouseMove;
+    property OnMouseUp: TMouseEvent read GetOnEditMouseUp write SetOnEditMouseUp;
+    property OnMouseWheel: TMouseWheelEvent read GetOnEditMouseWheel write SetOnEditMouseWheel;
+    property OnMouseWheelDown: TMouseWheelUpDownEvent read GetOnEditMouseWheelDown write SetOnEditMouseWheelDown;
+    property OnMouseWheelUp: TMouseWheelUpDownEvent read GetOnEditMouseWheelUp write SetOnEditMouseWheelUp;
+    property OnResize;
+    property OnStartDrag: TStartDragEvent read GetOnEditStartDrag write SetOnEditStartDrag;
+    property OnUTF8KeyPress: TUTF8KeyPressEvent read GetOnEditUTF8KeyPress write SetOnEditUTF8KeyPress;
   end;
   end;
 
 
 procedure Register;
 procedure Register;
@@ -45,84 +202,641 @@ implementation
 
 
 procedure Register;
 procedure Register;
 begin
 begin
+  {$IFDEF FPC}
+    {$I icons\bcmaterialedit_icon.lrs}
+  {$ENDIF}
   RegisterComponents('BGRA Controls', [TBCMaterialEdit]);
   RegisterComponents('BGRA Controls', [TBCMaterialEdit]);
 end;
 end;
 
 
 { TBCMaterialEdit }
 { TBCMaterialEdit }
 
 
-procedure TBCMaterialEdit.EnterEdit(Sender: TObject);
+function TBCMaterialEdit.GetEditAlignment: TAlignment;
 begin
 begin
-  Ffocused := True;
-  Invalidate;
-  Flbl.Font.Color := accentColor;
+  result := FEdit.Alignment;
+end;
+
+function TBCMaterialEdit.GetEditAutoSize: Boolean;
+begin
+  result := FEdit.AutoSize;
+end;
+
+function TBCMaterialEdit.GetEditAutoSelect: Boolean;
+begin
+  result := FEdit.AutoSelect;
+end;
+
+function TBCMaterialEdit.GetLabelCaption: TCaption;
+begin
+  result := FLabel.Caption
+end;
+
+function TBCMaterialEdit.GetEditCharCase: TEditCharCase;
+begin
+  result := FEdit.CharCase;
+end;
+
+function TBCMaterialEdit.GetEditCursor: TCursor;
+begin
+  result := FEdit.Cursor;
+end;
+
+function TBCMaterialEdit.GetEditDoubleBuffered: Boolean;
+begin
+  result := FEdit.DoubleBuffered;
+end;
+
+function TBCMaterialEdit.GetEditDragCursor: TCursor;
+begin
+  result := FEdit.DragCursor;
+end;
+
+function TBCMaterialEdit.GetEditDragMode: TDragMode;
+begin
+  result := FEdit.DragMode;
+end;
+
+function TBCMaterialEdit.GetEditEchoMode: TEchoMode;
+begin
+  result := FEdit.EchoMode;
+end;
+
+function TBCMaterialEdit.GetEditHideSelection: Boolean;
+begin
+  result := FEdit.HideSelection;
+end;
+
+function TBCMaterialEdit.GetEditHint: TTranslateString;
+begin
+  result := FEdit.Hint;
+end;
+
+function TBCMaterialEdit.GetEditMaxLength: Integer;
+begin
+  result := FEdit.MaxLength;
+end;
+
+function TBCMaterialEdit.GetEditNumbersOnly: Boolean;
+begin
+  result := FEdit.NumbersOnly;
+end;
+
+function TBCMaterialEdit.GetEditPasswordChar: Char;
+begin
+  result := FEdit.PasswordChar;
+end;
+
+function TBCMaterialEdit.GetEditParentColor: Boolean;
+begin
+  Result := Self.ParentColor;
+end;
+
+function TBCMaterialEdit.GetEditPopupMenu: TPopupMenu;
+begin
+  if (csDestroying in ComponentState) then Exit(nil);
+
+  result := FEdit.PopupMenu;
+end;
+
+function TBCMaterialEdit.GetEditReadOnly: Boolean;
+begin
+  result := FEdit.ReadOnly;
+end;
+
+function TBCMaterialEdit.GetEditShowHint: Boolean;
+begin
+  result := FEdit.ShowHint;
+end;
+
+function TBCMaterialEdit.GetEditTag: PtrInt;
+begin
+  result := FEdit.Tag;
+end;
+
+function TBCMaterialEdit.GetEditTabStop: Boolean;
+begin
+  result := FEdit.TabStop;
+end;
+
+function TBCMaterialEdit.GetEditText: TCaption;
+begin
+  result := FEdit.Text;
+end;
+
+function TBCMaterialEdit.GetEditTextHint: TCaption;
+begin
+  result := FEdit.TextHint;
+end;
+
+function TBCMaterialEdit.GetLabelSpacing: Integer;
+begin
+  result := FLabel.BorderSpacing.Bottom;
+end;
+
+function TBCMaterialEdit.GetOnEditChange: TNotifyEvent;
+begin
+  result := FEdit.OnChange;
+end;
+
+function TBCMaterialEdit.GetOnEditClick: TNotifyEvent;
+begin
+  result := FEdit.OnClick;
+end;
+
+function TBCMaterialEdit.GetOnEditContextPopup: TContextPopupEvent;
+begin
+  result := FEdit.OnContextPopup;
+end;
+
+function TBCMaterialEdit.GetOnEditDblClick: TNotifyEvent;
+begin
+  result := FEdit.OnDblClick;
+end;
+
+function TBCMaterialEdit.GetOnEditDragDrop: TDragDropEvent;
+begin
+  result := FEdit.OnDragDrop;
+end;
+
+function TBCMaterialEdit.GetOnEditDragOver: TDragOverEvent;
+begin
+  result := FEdit.OnDragOver;
+end;
+
+function TBCMaterialEdit.GetOnEditEditingDone: TNotifyEvent;
+begin
+  result := FEdit.OnEditingDone;
+end;
+
+function TBCMaterialEdit.GetOnEditEndDrag: TEndDragEvent;
+begin
+  result := FEdit.OnEndDrag;
+end;
+
+function TBCMaterialEdit.GetOnEditEnter: TNotifyEvent;
+begin
+  result := FEdit.OnEnter;
+end;
+
+function TBCMaterialEdit.GetOnEditExit: TNotifyEvent;
+begin
+  result := FEdit.OnExit;
+end;
+
+function TBCMaterialEdit.GetOnEditKeyDown: TKeyEvent;
+begin
+  result := FEdit.OnKeyDown;
+end;
+
+function TBCMaterialEdit.GetOnEditKeyPress: TKeyPressEvent;
+begin
+  result := FEdit.OnKeyPress;
+end;
+
+function TBCMaterialEdit.GetOnEditKeyUp: TKeyEvent;
+begin
+  result := FEdit.OnKeyUp;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseDown: TMouseEvent;
+begin
+  result := FEdit.OnMouseDown;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseEnter: TNotifyEvent;
+begin
+  result := FEdit.OnMouseEnter;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseLeave: TNotifyEvent;
+begin
+  result := FEdit.OnMouseLeave;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseMove: TMouseMoveEvent;
+begin
+  result := FEdit.OnMouseMove;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseUp: TMouseEvent;
+begin
+  result := FEdit.OnMouseUp;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseWheel: TMouseWheelEvent;
+begin
+  result := FEdit.OnMouseWheel;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseWheelDown: TMouseWheelUpDownEvent;
+begin
+  result := FEdit.OnMouseWheelDown;
+end;
+
+function TBCMaterialEdit.GetOnEditMouseWheelUp: TMouseWheelUpDownEvent;
+begin
+  result := FEdit.OnMouseWheelUp;
+end;
+
+function TBCMaterialEdit.GetOnEditStartDrag: TStartDragEvent;
+begin
+  result := FEdit.OnStartDrag;
+end;
+
+function TBCMaterialEdit.GetOnEditUTF8KeyPress: TUTF8KeyPressEvent;
+begin
+  result := FEdit.OnUTF8KeyPress;
+end;
+
+procedure TBCMaterialEdit.SetOnEditChange(AValue: TNotifyEvent);
+begin
+  FEdit.OnChange := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditClick(AValue: TNotifyEvent);
+begin
+  FEdit.OnClick := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditContextPopup(AValue: TContextPopupEvent);
+begin
+  FEdit.OnContextPopup := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditDblClick(AValue: TNotifyEvent);
+begin
+  FEdit.OnDblClick := AValue;
 end;
 end;
 
 
-procedure TBCMaterialEdit.ChangeEdit(Sender: TObject);
+procedure TBCMaterialEdit.SetOnEditDragDrop(AValue: TDragDropEvent);
 begin
 begin
-  if Assigned(FOnChange) then
-    FOnChange(Self);
+  FEdit.OnDragDrop := AValue;
 end;
 end;
 
 
-procedure TBCMaterialEdit.ExitEdit(Sender: TObject);
+procedure TBCMaterialEdit.SetOnEditDragOver(AValue: TDragOverEvent);
 begin
 begin
-  Ffocused := False;
+  FEdit.OnDragOver := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditEditingDone(AValue: TNotifyEvent);
+begin
+  FEdit.OnEditingDone := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditEndDrag(AValue: TEndDragEvent);
+begin
+  FEdit.OnEndDrag := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditEnter(AValue: TNotifyEvent);
+begin
+  FEdit.OnEnter := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditExit(AValue: TNotifyEvent);
+begin
+  FEdit.OnExit := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditKeyDown(AValue: TKeyEvent);
+begin
+  FEdit.OnKeyDown := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditKeyPress(AValue: TKeyPressEvent);
+begin
+  FEdit.OnKeyPress := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditKeyUp(AValue: TKeyEvent);
+begin
+  FEdit.OnKeyUp := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseDown(AValue: TMouseEvent);
+begin
+  FEdit.OnMouseDown := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseEnter(AValue: TNotifyEvent);
+begin
+  FEdit.OnMouseEnter := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseLeave(AValue: TNotifyEvent);
+begin
+  FEdit.OnMouseLeave := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseMove(AValue: TMouseMoveEvent);
+begin
+  FEdit.OnMouseMove := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseUp(AValue: TMouseEvent);
+begin
+  FEdit.OnMouseUp := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseWheel(AValue: TMouseWheelEvent);
+begin
+  FEdit.OnMouseWheel := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseWheelDown(AValue: TMouseWheelUpDownEvent);
+begin
+  FEdit.OnMouseWheelDown := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditMouseWheelUp(AValue: TMouseWheelUpDownEvent);
+begin
+  FEdit.OnMouseWheelUp := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditStartDrag(AValue: TStartDragEvent);
+begin
+  FEdit.OnStartDrag := AValue;
+end;
+
+procedure TBCMaterialEdit.SetOnEditUTF8KeyPress(AValue: TUTF8KeyPressEvent);
+begin
+  FEdit.OnUTF8KeyPress := AValue;
+end;
+
+function TBCMaterialEdit.IsNeededAdjustHeight: boolean;
+begin
+  if (Self.Align in [alLeft, alRight, alClient]) then Exit(False);
+  if (akTop in Self.Anchors) and (akBottom in Self.Anchors) then Exit(False);
+  result := FEdit.AutoSize;
+end;
+
+procedure TBCMaterialEdit.SetAnchors(const AValue: TAnchors);
+begin
+  if Self.Anchors <> AValue then
+  begin
+    inherited SetAnchors(AValue);
+    Self.DoOnResize;
+  end;
+end;
+
+procedure TBCMaterialEdit.SetEditAlignment(const AValue: TAlignment);
+begin
+  FEdit.Alignment := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditAutoSize(AValue: Boolean);
+begin
+  if FEdit.AutoSize <> AValue then
+  begin
+    FEdit.AutoSize := AValue;
+    Self.DoOnResize;
+  end;
+end;
+
+procedure TBCMaterialEdit.SetEditAutoSelect(AValue: Boolean);
+begin
+  FEdit.AutoSelect := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditCharCase(AValue: TEditCharCase);
+begin
+  FEdit.CharCase := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditCursor(AValue: TCursor);
+begin
+  FEdit.Cursor := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditDoubleBuffered(AValue: Boolean);
+begin
+  FEdit.DoubleBuffered := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditDragCursor(AValue: TCursor);
+begin
+  FEdit.DragCursor := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditDragMode(AValue: TDragMode);
+begin
+  FEdit.DragMode := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditEchoMode(AValue: TEchoMode);
+begin
+  FEdit.EchoMode := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditHideSelection(AValue: Boolean);
+begin
+  FEdit.HideSelection := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditHint(const AValue: TTranslateString);
+begin
+  FEdit.Hint := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditMaxLength(AValue: Integer);
+begin
+  FEdit.MaxLength := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditNumbersOnly(AValue: Boolean);
+begin
+  FEdit.NumbersOnly := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditParentColor(AValue: Boolean);
+begin
+  FEdit.ParentColor  := AValue;
+  FLabel.ParentColor := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditPasswordChar(AValue: Char);
+begin
+  FEdit.PasswordChar := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditTabStop(AValue: Boolean);
+begin
+  FEdit.TabStop := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditPopupMenu(AValue: TPopupmenu);
+begin
+  FEdit.PopupMenu := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditReadOnly(AValue: Boolean);
+begin
+  FEdit.ReadOnly := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditShowHint(AValue: Boolean);
+begin
+  FEdit.ShowHint := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditTag(AValue: PtrInt);
+begin
+  FEdit.Tag := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditTextHint(const Avalue: TTranslateString);
+begin
+  FEdit.TextHint := AValue;
+end;
+
+procedure TBCMaterialEdit.SetEditText(const AValue: TCaption);
+begin
+  FEdit.Text := AValue;
+end;
+
+procedure TBCMaterialEdit.SetLabelCaption(const AValue: TCaption);
+begin
+  FLabel.Caption := AValue;
+end;
+
+procedure TBCMaterialEdit.SetLabelSpacing(AValue: Integer);
+begin
+  if FLabel.BorderSpacing.Bottom <> AValue then
+  begin
+    FLabel.BorderSpacing.Bottom := AValue;
+    Self.DoOnResize;
+  end;
+end;
+
+procedure TBCMaterialEdit.SetName(const AValue: TComponentName);
+begin
+  if (csDesigning in ComponentState) then
+  begin
+    if (FLabel.Caption = '') or (AnsiSameText(FLabel.Caption, AValue)) then
+      FLabel.Caption := 'Label';
+
+    if (FLabel.Name = '') or (AnsiSameText(FLabel.Name, AValue)) then
+      FLabel.Name := AValue + 'SubLabel';
+
+    if (FEdit.Text = '') or (AnsiSameText(FEdit.Text, AValue)) then
+      FEdit.Text := AValue;
+
+    if (FEdit.Name = '') or (AnsiSameText(FEdit.Name, AValue)) then
+      FEdit.Name := AValue + 'SubEdit';
+  end;
+  inherited SetName(AValue);
+end;
+
+procedure TBCMaterialEdit.DoEnter;
+begin
+  inherited DoEnter;
+  FFocused := True;
   Invalidate;
   Invalidate;
-  Flbl.Font.Color := DisabledColor;
+  FLabel.Font.Color := AccentColor;
 end;
 end;
 
 
-procedure TBCMaterialEdit.SetTexto(AValue: string);
+procedure TBCMaterialEdit.DoExit;
 begin
 begin
-  if FTexto = AValue then
-    Exit;
-  FTexto := AValue;
-  Flbl.Caption := FTexto;
-  //Fedt.TextHint := FTexto;
+  FFocused := False;
+  Invalidate;
+  FLabel.Font.Color := DisabledColor;
+end;
+
+procedure TBCMaterialEdit.DoOnResize;
+var
+  AutoSizedHeight: longint;
+begin
+  if IsNeededAdjustHeight then
+  begin
+    FEdit.Align := alBottom;
+    AutoSizedHeight :=
+      FLabel.Height +
+      FLabel.BorderSpacing.Around +
+      FLabel.BorderSpacing.Bottom +
+      FLabel.BorderSpacing.Top +
+      FEdit.Height +
+      FEdit.BorderSpacing.Around +
+      FEdit.BorderSpacing.Bottom +
+      FEdit.BorderSpacing.Top;
+
+    if Self.Height <> AutoSizedHeight then
+      Self.Height := AutoSizedHeight;
+  end else
+  begin
+    FEdit.Align := alClient;
+  end;
+  inherited DoOnResize;
 end;
 end;
 
 
 procedure TBCMaterialEdit.Paint;
 procedure TBCMaterialEdit.Paint;
+var
+  LeftPos, RightPos: integer;
 begin
 begin
   inherited Paint;
   inherited Paint;
   Canvas.Brush.Color := Color;
   Canvas.Brush.Color := Color;
   Canvas.Pen.Color := Color;
   Canvas.Pen.Color := Color;
   Canvas.Rectangle(0, 0, Width, Height);
   Canvas.Rectangle(0, 0, Width, Height);
-  if (fFocused) then
+
+  if Assigned(Parent) and (Parent.Color = Color) then
+  begin
+    LeftPos := FEdit.Left;
+    RightPos := FEdit.Left + FEdit.Width;
+  end else
+  begin
+    LeftPos := 0;
+    RightPos := Width;
+  end;
+
+  if (FFocused) and (FEdit.Enabled) then
   begin
   begin
     Canvas.Pen.Color := AccentColor;
     Canvas.Pen.Color := AccentColor;
-    Canvas.Line(0, Height - 2, Width, Height - 2);
-    Canvas.Line(0, Height - 1, Width, Height - 1);
-  end
-  else
+    Canvas.Line(LeftPos, Height - 2, RightPos, Height - 2);
+    Canvas.Line(LeftPos, Height - 1, RightPos, Height - 1);
+  end else
   begin
   begin
     Canvas.Pen.Color := DisabledColor;
     Canvas.Pen.Color := DisabledColor;
-    Canvas.Line(0, Height - 1, Width, Height - 1);
+    Canvas.Line(LeftPos, Height - 1, RightPos, Height - 1);
   end;
   end;
 end;
 end;
 
 
 constructor TBCMaterialEdit.Create(AOwner: TComponent);
 constructor TBCMaterialEdit.Create(AOwner: TComponent);
 begin
 begin
   inherited Create(AOwner);
   inherited Create(AOwner);
-  Self.BevelOuter := bvNone;
-  Self.Color := clWhite;
-  AccentColor := clHighlight;
-  DisabledColor := $00B8AFA8;
-  Flbl := TLabel.Create(Self);
-  Flbl.Align := alTop;
-  Flbl.Caption := 'Buscar';
-  Flbl.BorderSpacing.Around := 4;
-  Flbl.Font.Style := [fsBold];
-  Flbl.Font.Color := $00B8AFA8;
-  Flbl.Parent := Self;
-  Fedt := TEdit.Create(Self);
-  Fedt.Color := Color;
-  Fedt.Font.Color := clBlack;
-  Fedt.OnEnter := @EnterEdit;
-  Fedt.OnExit := @ExitEdit;
-  Fedt.OnChange:=@ChangeEdit;
-  Fedt.Align := alClient;
-  Fedt.BorderStyle := bsNone;
-  //Fedt.TextHint := 'Buscar';
-  Fedt.BorderSpacing.Around := 4;
-  Fedt.Parent := Self;
+  Self.AccentColor := clHighlight;
+  Self.BorderStyle := bsNone;
+  Self.Color := clWindow;
+  Self.DisabledColor := $00B8AFA8;
+  Self.ParentColor := False;
+  FLabel := TBoundLabel.Create(Self);
+  FLabel.Align := alTop;
+  FLabel.AutoSize := True;
+  FLabel.BorderSpacing.Around := 0;
+  FLabel.BorderSpacing.Bottom := 2;
+  FLabel.BorderSpacing.Left := 4;
+  FLabel.BorderSpacing.Right := 4;
+  FLabel.BorderSpacing.Top := 4;
+  FLabel.Font.Color := $00B8AFA8;
+  FLabel.Font.Style := [fsBold];
+  FLabel.Parent := Self;
+  FLabel.ParentFont := False;
+  FLabel.ParentBiDiMode := True;
+  FLabel.SetSubComponent(True);
+  FEdit := TEdit.Create(Self);
+  FEdit.Align := alBottom;
+  FEdit.AutoSelect := True;
+  FEdit.AutoSize := True;
+  FEdit.BorderSpacing.Around := 0;
+  FEdit.BorderSpacing.Bottom := 4;
+  FEdit.BorderSpacing.Left := 4;
+  FEdit.BorderSpacing.Right := 4;
+  FEdit.BorderSpacing.Top := 0;
+  FEdit.BorderStyle := bsNone;
+  FEdit.Color := Color;
+  FEdit.Font.Color := clBlack;
+  FEdit.Parent := Self;
+  FEdit.ParentFont := True;
+  FEdit.ParentBiDiMode := True;
+  FEdit.TabStop := True;
+  FEdit.SetSubComponent(True);
 end;
 end;
 
 
 end.
 end.

+ 19 - 0
bcmaterialfloatspinedit.pas

@@ -24,12 +24,17 @@ type
     procedure ChangeEdit(Sender: TObject);
     procedure ChangeEdit(Sender: TObject);
     procedure EnterEdit(Sender: TObject);
     procedure EnterEdit(Sender: TObject);
     procedure ExitEdit(Sender: TObject);
     procedure ExitEdit(Sender: TObject);
+    function GetTabStop: Boolean;
+    procedure SetTabStop(AValue: Boolean);
     procedure SetTexto(AValue: string);
     procedure SetTexto(AValue: string);
   protected
   protected
     procedure Paint; override;
     procedure Paint; override;
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
   published
   published
+    property Align;
+    property Anchors;
+    property BorderSpacing;
     property Color;
     property Color;
     property Text: string read FTexto write SetTexto;
     property Text: string read FTexto write SetTexto;
     property Edit: TFloatSpinEdit read Fedt;
     property Edit: TFloatSpinEdit read Fedt;
@@ -37,6 +42,8 @@ type
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
     property AccentColor: TColor read FAccentColor write FAccentColor;
     property AccentColor: TColor read FAccentColor write FAccentColor;
     property OnChange: TNotifyEvent read FOnChange write FOnChange;
     property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property TabOrder;
+    property TabStop: boolean read GetTabStop write SetTabStop default True;
   end;
   end;
 
 
 procedure Register;
 procedure Register;
@@ -70,6 +77,17 @@ begin
   Flbl.Font.Color := DisabledColor;
   Flbl.Font.Color := DisabledColor;
 end;
 end;
 
 
+function TBCMaterialFloatSpinEdit.GetTabStop: Boolean;
+begin
+  result := Fedt.TabStop;
+end;
+
+procedure TBCMaterialFloatSpinEdit.SetTabStop(AValue: Boolean);
+begin
+  if Fedt.TabStop = AValue then Exit;
+  Fedt.TabStop := AValue;
+end;
+
 procedure TBCMaterialFloatSpinEdit.SetTexto(AValue: string);
 procedure TBCMaterialFloatSpinEdit.SetTexto(AValue: string);
 begin
 begin
   if FTexto = AValue then
   if FTexto = AValue then
@@ -125,6 +143,7 @@ begin
   Fedt.Parent := Self;
   Fedt.Parent := Self;
   Fedt.MinValue := 0;
   Fedt.MinValue := 0;
   Fedt.MaxValue := MaxInt;
   Fedt.MaxValue := MaxInt;
+  Fedt.TabStop := True;
 end;
 end;
 
 
 end.
 end.

+ 19 - 0
bcmaterialspinedit.pas

@@ -24,12 +24,17 @@ type
     procedure ChangeEdit(Sender: TObject);
     procedure ChangeEdit(Sender: TObject);
     procedure EnterEdit(Sender: TObject);
     procedure EnterEdit(Sender: TObject);
     procedure ExitEdit(Sender: TObject);
     procedure ExitEdit(Sender: TObject);
+    function GetTabStop: Boolean;
+    procedure SetTabStop(AValue: Boolean);
     procedure SetTexto(AValue: string);
     procedure SetTexto(AValue: string);
   protected
   protected
     procedure Paint; override;
     procedure Paint; override;
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
   published
   published
+    property Align;
+    property Anchors;
+    property BorderSpacing;
     property Color;
     property Color;
     property Text: string read FTexto write SetTexto;
     property Text: string read FTexto write SetTexto;
     property Edit: TSpinEdit read Fedt;
     property Edit: TSpinEdit read Fedt;
@@ -37,6 +42,8 @@ type
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
     property DisabledColor: TColor read FDisabledColor write FDisabledColor;
     property AccentColor: TColor read FAccentColor write FAccentColor;
     property AccentColor: TColor read FAccentColor write FAccentColor;
     property OnChange: TNotifyEvent read FOnChange write FOnChange;
     property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property TabOrder;
+    property TabStop: boolean read GetTabStop write SetTabStop default True;
   end;
   end;
 
 
 procedure Register;
 procedure Register;
@@ -70,6 +77,17 @@ begin
   Flbl.Font.Color := DisabledColor;
   Flbl.Font.Color := DisabledColor;
 end;
 end;
 
 
+function TBCMaterialSpinEdit.GetTabStop: Boolean;
+begin
+  result := Fedt.TabStop;
+end;
+
+procedure TBCMaterialSpinEdit.SetTabStop(AValue: Boolean);
+begin
+  if Fedt.TabStop = AValue then Exit;
+  Fedt.TabStop := AValue;
+end;
+
 procedure TBCMaterialSpinEdit.SetTexto(AValue: string);
 procedure TBCMaterialSpinEdit.SetTexto(AValue: string);
 begin
 begin
   if FTexto = AValue then
   if FTexto = AValue then
@@ -125,6 +143,7 @@ begin
   Fedt.Parent := Self;
   Fedt.Parent := Self;
   Fedt.MinValue := 0;
   Fedt.MinValue := 0;
   Fedt.MaxValue := MaxInt;
   Fedt.MaxValue := MaxInt;
+  Fedt.TabStop := True;
 end;
 end;
 
 
 end.
 end.

+ 36 - 0
icons/bcmaterialedit_icon.lrs

@@ -0,0 +1,36 @@
+LazarusResources.Add('tbcmaterialedit','PNG',[
+  #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
+  +#0#0#9'pHYs'#0#0#7'a'#0#0#7'a'#1#149#195#184#182#0#0#0#25'tEXtSoftware'#0'ww'
+  +'w.inkscape.org'#155#238'<'#26#0#0#2#212'IDATH'#137#237#149#203'O'#163'U'#24
+  +#135#159#211'~'#237#16'c'#249#148'|'#1'3'#160#24#147#153#138#193'!1F'#140'`'
+  +#164'NwnHHHL'#19'C\'#129#255'AwnH'#144#165#27']'#201#198#16#137'MX0'#152'.d!'
+  +'i'#189#16'5'#136#14'6'#138'M'#157#137#14#19#200#12#212#9#189'~'#231#231#130
+  +#218#204'L'#209#233#194#186#242#183';'#183#247'y/'#231'='#199'H'#162#147#10
+  +'t'#212#250#127#1'p'#128#142#230'('#0#176#146#169'S'#173#183'.~'#248'Y'#141
+  +#252'M'#219'2_'#174#193';'#171#213#182#0#14#192#149#175#235#188#246'|'#144
+  +#176'c'#248#228#155':'#217#156#207#235'/'#135#200#223#20#185#223'j<'#225#5'x'
+  +#243'r'#136#247#210'U0'#134'7^q'#184'z'#189#21#252#183#128#187#21'y'#200#16
+  +'v'#12#31#127'^#'#24'0\'#190#228#240'~'#186#202#163#15#27#190#252#201#18#12
+  +#194'3'#3#237#151#174#185#243#211#239'|~'#184'fy'#251#163#10#189#174#193'o8'
+  +#152#253#209#231'N'#25#158#236'5'#156#11#193#212#139#14#23#207#183#15'0'#146
+  +#244#213#207'>'#183#254#16#143'{'#1'$'#8'4'#206#27#192#183'p.'#4#23#207#7#184
+  +'z'#221#178#127'['#188#244't'#144#239#127#245'y'#225'B'#176'=@'#219#238'<@'
+  +#190#5#219#136'<'#212'H~K'#13#178#217','#133'B'#129'D"'#1#192#241#241'1'#171
+  +#171#171#28#29#29#17#139#197#24#25#25#193'ZK:'#157'&'#151#203#17#137'D'#152
+  +#154#154#162#167#167#135'/r>'#235#223#214'y'#245'Y'#135#248#165' '#198#0'j'
+  +#200'Z'#171#133#133#5#5#131'A'#13#12#12'H'#146'J'#165#146#6#7#7#213#219#219
+  +#171'h4'#170'P('#164'L&'#163#181#181'5uwwkbbB'#174#235'*'#26#141#202'Z'#171
+  +'_n'#248#250'`'#163#218#176'wj'#183#9'XYYQ'#127#127#191#226#241'x'#19' I[[[*'
+  +#149'J*'#151#203'r'#28'G'#243#243#243#146#164'b'#177'(IZ\\TWW'#151'*'#149#202
+  +'?'#3#172#181':88'#208#236#236#236'='#128#191#180#190#190'.c'#140'2'#153#140
+  +'$iccC333'#138'F'#163'ZZZ'#146#164'3'#1#205#251'f'#140#193#243#188'3'#139#183
+  +#189#189'M"'#145' '#153'L266'#6'@'#185'\'#6#224#228#228#132#229#229#229#230
+  +#184'E'#247'{z'#127#4';;;'#242'<O'#201'd'#178'%*IJ'#165'R'#2#180#185#185'yf'
+  +#4'-'#183#232'n'#29#30#30#18#143#199#169#213'j'#236#237#237'1=='#205#240#240
+  +'0'#225'p'#152'B'#161'@__'#31#169'T'#10#215'u'#25#26#26#162'x'#198'{'#214#2
+  +#24#31#31#199'u]'#0#234#245':'#147#147#147#247#172'G"'#17'FGG'#201#231#243
+  +#236#238#238#18#139#197#152#155#155#195#243'<'#246#175'Y'#138''''#226#198'm'
+  +#241#216'#'#230'4'#245#255'f'#163#253'~K'#236#31#157'v'#218'sO'#157'v'#185'y'
+  +#247'J'#165#163#255#129#185#240#214#157#206#2#254#255#244#31#164'?'#1#215'G'
+  +#243'`X'#22'f'#26#0#0#0#0'IEND'#174'B`'#130
+]);

BIN
icons/tbcmaterialedit.png


+ 9 - 6
images/bgracontrols_images_list.txt

@@ -7,6 +7,9 @@ tbcbutton_200.png
 tbclabel.png
 tbclabel.png
 tbclabel_150.png
 tbclabel_150.png
 tbclabel_200.png
 tbclabel_200.png
+tbcmaterialedit.png
+tbcmaterialedit_150.png
+tbcmaterialedit_200.png
 tbcmaterialdesignbutton.png
 tbcmaterialdesignbutton.png
 tbcmaterialdesignbutton_150.png
 tbcmaterialdesignbutton_150.png
 tbcmaterialdesignbutton_200.png
 tbcmaterialdesignbutton_200.png
@@ -104,12 +107,12 @@ tbccombobox_200.png
 tbgrathemecheckbox.png
 tbgrathemecheckbox.png
 tbgrathemecheckbox_150.png
 tbgrathemecheckbox_150.png
 tbgrathemecheckbox_200.png
 tbgrathemecheckbox_200.png
-tbcfluentprogressring.png
-tbcfluentprogressring_150.png
-tbcfluentprogressring_200.png
-tbcfluentslider.png
-tbcfluentslider_150.png
-tbcfluentslider_200.png
+TBCFluentProgressRing.png
+TBCFluentProgressRing_150.png
+TBCFluentProgressRing_200.png
+TBCFluentSlider.png
+TBCFluentSlider_150.png
+TBCFluentSlider_200.png
 TBCLeaLCDDisplay.png
 TBCLeaLCDDisplay.png
 TBCLeaLCDDisplay_150.png
 TBCLeaLCDDisplay_150.png
 TBCLeaLCDDisplay_200.png
 TBCLeaLCDDisplay_200.png

+ 127 - 0
images/svg/tbcmaterialedit.svg

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg1"
+   sodipodi:docname="tbcmaterialedit.svg"
+   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+   inkscape:export-filename="../tbcmaterialedit.png"
+   inkscape:export-xdpi="48"
+   inkscape:export-ydpi="48"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#505050"
+     bordercolor="#ffffff"
+     borderopacity="1"
+     inkscape:showpageshadow="0"
+     inkscape:pageopacity="0"
+     inkscape:pagecheckerboard="1"
+     inkscape:deskcolor="#505050"
+     inkscape:document-units="px"
+     inkscape:zoom="11.947158"
+     inkscape:cx="11.174206"
+     inkscape:cy="47.542688"
+     inkscape:window-width="2560"
+     inkscape:window-height="1371"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1"
+     showgrid="false" />
+  <defs
+     id="defs1">
+    <rect
+       x="78.565514"
+       y="167.72414"
+       width="343.3931"
+       height="166.84138"
+       id="rect2" />
+  </defs>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <text
+       xml:space="preserve"
+       id="text1"
+       style="font-size:192px;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"><tspan
+         x="78.566406"
+         y="509.26244"
+         id="tspan5"><tspan
+           dx="0 15.253366 15.253366"
+           style="font-size:26.6667px"
+           id="tspan1">123</tspan></tspan></text>
+    <g
+       id="g2">
+      <rect
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.24645;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:12.9858, 3.24645;stroke-dashoffset:3.24645;stroke-opacity:1;paint-order:markers fill stroke"
+         id="rect4"
+         width="47.989674"
+         height="36"
+         x="0"
+         y="6" />
+      <rect
+         style="fill:#256af4;fill-opacity:1;stroke:#256af4;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0.880555;stroke-opacity:1;paint-order:markers fill stroke"
+         id="rect1"
+         width="48"
+         height="3"
+         x="0"
+         y="39" />
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.6667px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans Bold';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#256af4;fill-opacity:1;stroke:none;stroke-width:1.8;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:7.2, 1.8;stroke-dashoffset:1.8;stroke-opacity:1;paint-order:markers fill stroke"
+         x="1.539997"
+         y="16.606693"
+         id="text4"><tspan
+           sodipodi:role="line"
+           id="tspan4"
+           x="1.539997"
+           y="16.606693"
+           style="font-size:10.6667px;stroke-width:1.8">Label</tspan></text>
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.6246px;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.94244;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:15.7698, 3.94244;stroke-dashoffset:3.94244;stroke-opacity:1;paint-order:markers fill stroke"
+         x="3.6747451"
+         y="35.20821"
+         id="text3"><tspan
+           sodipodi:role="line"
+           id="tspan3"
+           x="3.6747451"
+           y="35.20821"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'Noto Sans';-inkscape-font-specification:'Noto Sans Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.94244;stroke-opacity:1">123</tspan></text>
+      <g
+         id="g1"
+         transform="translate(0.33480764)">
+        <rect
+           style="fill:#256af4;fill-opacity:1;stroke:none;stroke-width:2.95821;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:11.8312, 2.95821;stroke-dashoffset:2.95821;stroke-opacity:1;paint-order:markers fill stroke"
+           id="rect5"
+           width="5.0587049"
+           height="16.5"
+           x="38.611244"
+           y="19.952229" />
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke-width:1.33566;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:5.34257, 1.33566;stroke-dashoffset:1.33566;paint-order:markers fill stroke"
+           id="rect3"
+           width="2.4367449"
+           height="15.121"
+           x="38.263256"
+           y="20.641727" />
+        <rect
+           style="fill:#ffffff;fill-opacity:1;stroke-width:1.43716;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:5.74885, 1.43716;stroke-dashoffset:1.43716;paint-order:markers fill stroke"
+           id="rect3-5"
+           width="2.8214552"
+           height="15.121"
+           x="41.505615"
+           y="20.641727" />
+      </g>
+    </g>
+  </g>
+</svg>

BIN
images/tbcmaterialedit.png


BIN
images/tbcmaterialedit_150.png


BIN
images/tbcmaterialedit_200.png