Whats wrong with new TIntEdit component lazarus / 5-Lazarus Extra Components ---------------------------------------------------------------------- JorgeGoias · 2008-09-25 18:19 Whats wrong with this new component? In use when press one simple key, will trigger OnExit of descendants! Please, anybody helping? ---------------------------------------------------------------------- ------------ unit intedit; {$mode objfpc}{$H+} interface uses   Classes, SysUtils, Controls, Graphics, StdCtrls, LCLType, LResources; type   TIntEdit = class(TCustomMemo)   private     FValue: LongWord;     procedure SetFieldValue(A: LongWord);     procedure FormatText;   protected     procedure DoEnter; override;     procedure EditingDone;; override;     procedure KeyPress(var Key: Char); override;   public     constructor Create(AOwner: TComponent); override;   published     property Value: Longword read FValue write SetFieldValue;     property Alignment default taRightJustify;     property BorderStyle;     property Color;     property Ctl3D;     property DragCursor;     property DragMode;     property Enabled;     property Font;     property MaxLength;     property ParentColor;     property ParentCtl3D;     property ParentFont;     property ParentShowHint;     property PopupMenu;     property ReadOnly;     property ShowHint;     property TabOrder;     property Visible;     property OnChange;     property OnClick;     property OnDblClick;     property OnDragDrop;     property OnDragOver;     property OnEndDrag;     property OnEnter;     property OnExit;     property OnKeyDown;     property OnKeyPress;     property OnKeyUp;     property OnMouseDown;     property OnMouseMove;     property OnMouseUp;   end; implementation function trim_value(const str: string): string; var    i:   longword;    tam: longword;    ret: string; begin    ret := '';    tam := Length(str);    for i := 1 to tam do    begin       if (str in ['0'..'9']) then       begin          ret += str;       end;    end;    result := ret; end; constructor TIntEdit.Create(AOwner: TComponent); begin   inherited Create(AOwner);   Width       := 121;   Height      := 21;   Alignment   := taRightJustify;   AutoSize    := False;   AutoSelect  := False;   WantReturns := False;   WordWrap    := False;   FValue      := 0;   Text        := '0';   FormatText; end; procedure TIntEdit.SetFieldValue(A: Longword); begin   if (FValue <> A) then     begin       FValue := A;       FormatText;     end; end; procedure TIntEdit.FormatText; begin   Text := IntToStr(FValue); end; procedure TIntEdit.DoEnter; begin   SelectAll;   inherited; end; procedure TIntEdit.EditingDone; begin   inherited EditingDone;     FValue := 0;   Text   := Trim(Text);   if (Text <> '') then   begin      FValue := StrToInt(trim_value(Text));      FormatText;   end; end; procedure TIntEdit.KeyPress(var Key: Char); begin   if Not (Key in ['0'..'9', #8, #13]) then   begin      Key := #0;      Exit;   end;     inherited KeyPress(Key); end; end. ---------------------------------------------------------------------- -------------