Composant de saisie incrémentale
Delphi
L.Merlet-Fajon : lm-cmf@wanadoo.fr

Objectif :

Composant Delphi 6 et plus, destiné à saisir des valeurs numériques, entières ou décimales,  positives, négatives ou mixtes, limitées ou pas, à incrémentation variable.


Caractéristiques :



L.Merlet Fajon : lm-cmf@wanadoo.fr

Remerciements :



Evolution :

  version 1.01
  8/03/03 Ajout de l'aide ( de tant à tant )  grâce à une suggestion de Pascal, auteur de Wintypon:
  Ce qui permet à l'utilisateur-développeur de découvrir une éventuelle erreur d'affectation des ValeurMin et ValeurMax.

  Contrôle interne des Valeur Mini et Max:
  Priorité à l'affectation de la valeur Maxi: signe vérifiéen en fonction du Mode (sens).
  La valeur Mini est vérifiée en fonction du sens et de la valeur Maxi.

- source complet installable
( lien non activé, présent dans le package )

- programme de test du composant : ( lien non activé, présent dans le package )




Les classes :






Les signatures des classes du composant :
 


 
TSpinButton  class  (TWinControl)
 
private
  
FDownButton TTimerSpeedButton ;
  
FUpButton TTimerSpeedButton ;
  
FFocusedButton TTimerSpeedButton ;
  
FFocusControl TWinControl ;
  
FOnUpClick TNotifyEvent ;
  
FOnDownClick TNotifyEvent ;
  function 
CreateButton TTimerSpeedButton ;
  function 
GetUpGlyph TBitmap ;
  function 
GetDownGlyph TBitmap ;
  procedure 
SetUpGlyph(Value TBitmap) ;
  procedure 
SetDownGlyph(Value TBitmap) ;
  function 
GetUpNumGlyphs TNumGlyphs ;
  function 
GetDownNumGlyphs TNumGlyphs ;
  procedure 
SetUpNumGlyphs(Value TNumGlyphs) ;
  procedure 
SetDownNumGlyphs(Value TNumGlyphs) ;
  procedure 
BtnClick( Sender TObject) ;
  procedure 
BtnMouseDown ( Sender TObject Button TMouseButton ;   shift tshiftstate x, y integer ) ;
  procedure 
SetFocusBtn (Btn TTimerSpeedButton) ;
  procedure 
AdjustSize ( var  W, H Integer ) reintroduce ;
  procedure 
WMSize( var Message TWMSize) ;  message  WM_SIZE ;
  procedure 
WMSetFocus( var Message TWMSetFocus) ; message  WM_SETFOCUS ;
  procedure 
WMKillFocus( var Message TWMKillFocus) ; message  WM_KILLFOCUS ;
  procedure 
WMGetDlgCode( var Message TWMGetDlgCode) ; message  WM_GETDLGCODE ;
 protected
  procedure 
Loaded ; override;
  procedure 
KeyDown( var  Key Word Shift TShiftState) ; override;
  procedure 
Notification(AComponent TComponent ;
   
operation toperation)
   override;
 public
  constructor 
Create(AOwner TComponent) ; override;
  procedure 
SetBounds(ALeft, ATop, AWidth, AHeight Integer ) ; override;
 published
  property 
Align ;
  property 
Anchors ;
  property 
Constraints ;
  property 
Ctl3D ;
  property 
DownGlyph TBitmap  read  GetDownGlyph  write  SetDownGlyph ;
  property 
DownNumGlyphs TNumGlyphs  read  GetDownNumGlyphs  write  SetDownNumGlyphs  default  1 ;
  property 
DragCursor ;
  property 
DragKind ;
  property 
DragMode ;
  property 
Enabled ;
  property 
FocusControl TWinControl  read  FFocusControl  write  FFocusControl ;
  property 
ParentCtl3D ;
  property 
ParentShowHint ;
  property 
PopupMenu ;
  property 
ShowHint ;
  property 
TabOrder ;
  property 
TabStop ;
  property 
UpGlyph TBitmap  read  GetUpGlyph  write  SetUpGlyph ;
  property 
UpNumGlyphs TNumGlyphs  read  GetUpNumGlyphs  write  SetUpNumGlyphs  default  1 ;
  property 
Visible ;
  property 
OnDownClick TNotifyEvent  read  FOnDownClick  write  FOnDownClick ;
  property 
OnDragDrop ;
  property 
OnDragOver ;
  property 
OnEndDock ;
  property 
OnEndDrag ;
  property 
OnEnter ;
  property 
OnExit ;
  property 
OnStartDock ;
  property 
OnStartDrag ;
  property 
OnUpClick TNotifyEvent  read  FOnUpClick  write  FOnUpClick ;
end;




TTimerSpeedButton  class (TSpeedButton)
 
private
  
FRepeatTimer TTimer ;
  
FTimeBtnState TTimeBtnState ;
  procedure 
TimerExpired( Sender TObject) ;
 protected
  procedure 
Paint ; override;
  procedure 
MouseDown(Button TMouseButton Shift TShiftState ;
   
x, y integer )
   override;
  procedure 
MouseUp(Button TMouseButton Shift TShiftState ;
   
x, y integer )
   override;
 public
  destructor 
Destroy ; override;
   property 
TimeBtnState TTimeBtnState  read  FTimeBtnState  write  FTimeBtnState ;
end;




TBoundUsage  class (TCustomLabel)
 
private
  function 
GetTop Integer ;
  function 
GetLeft Integer ;
  function 
GetWidth Integer ;
  function 
GetHeight Integer ;
  procedure 
SetHeight( const  Value Integer ) ;
  procedure 
SetWidth( const  Value Integer ) ;
 protected
  procedure 
AdjustBounds ; override;
 public
  constructor 
Create(AOwner TComponent) ; override;
 published
  property 
BiDiMode ;
  property 
Caption ;
  property 
Color ;
  property 
DragCursor ;
  property 
DragKind ;
  property 
DragMode ;
  property 
Font ;
  property 
Height Integer read  GetHeight  write  SetHeight ;
  property 
Left Integer read  GetLeft ;
  property 
ParentBiDiMode ;
  property 
ParentColor ;
  property 
ParentFont ;
  property 
ParentShowHint ;
  property 
PopupMenu ;
  property 
ShowAccelChar ;
  property 
ShowHint ;
  property 
Top Integer read  GetTop ;
  property 
Transparent ;
  property 
Layout ;
  property 
visible ;
  property 
WordWrap ;
  property 
Width Integer read  GetWidth  write  SetWidth ;
  property 
OnClick ;
  property 
OnContextPopup ;
  property 
OnDblClick ;
  property 
OnDragDrop ;
  property 
OnDragOver ;
  property 
OnEndDock ;
  property 
OnEndDrag ;
  property 
OnMouseDown ;
  property 
OnMouseMove ;
  property 
OnMouseUp ;
  property 
OnStartDock ;
  property 
OnStartDrag ;
end;




TboundUnite  = class (TBoundUsage)
 
protected
  procedure 
AdjustBounds ; override;
 public
  constructor 
Create(AOwner TComponent) ; override;
end;



{ TSpinEditLabel }
TSpinEditLabel  class (TCustomEdit)
 
private
  
FButton TSpinButton ;
  
FEditorEnabled Boolean ;
  
FGarderZero  boolean ; //  True=garderZero  aprés la décimale
  
Fincr Extended ;
  
FLabelUsage  TBoundUsage ;
  
FLabelPosition  TLabelPosition ;
  
FLabelSpacing  Integer ;
  
FLabelUnite  TboundUnite ;
  
FMode Tmode ;
  
FnbDecimale  Integer ;
  
FSens  TSens ;
  
FUnitePosition  TLabelPosition ;
  
FUniteSpacing  Integer ;
  
FValMin Extended ;
  
FValMax Extended ;
  function 
SupprimerZero(valeur  : Extended) :string ;
  
//    procedure CMEnabledchanged(var Message: TMessage);
  
procedure  CMVisiblechanged( var Message TMessage) ;
   message 
CM_VISIBLECHANGED ;
  function 
GetMinHeight Integer ;
  function 
GetValeur Extended ;
  function 
GetMode  Tmode ;
  function 
ControlerValeur (NouvelleValeur Extended) Extended ;
  procedure 
SetHint ;
  procedure 
SetMode(  const  valeur  Tmode) ;
  procedure 
SetSens ( const  valeur  Tsens) ;
  procedure 
SetUsagePosition(  const  Value  TlabelPosition) ;
  procedure 
SetUsageSpacing(  const  Value integer ) ;
  procedure 
SetUnitePosition(  const  Value  TlabelPosition) ;
  procedure 
SetUniteSpacing(  const  Value integer ) ;
  procedure 
SetValMax( const  valeur extended) ;
  procedure 
SetValMin( const  valeur : extended) ;
  procedure 
SetValeur (NouvelleValeur Extended) ;
  procedure 
SetEditRect ;
  procedure 
WMSize( var Message TWMSize) ; message  WM_SIZE ;
  procedure 
CMEnter( var Message TCMGotFocus) ; message  CM_ENTER ;
  procedure 
CMExit( var Message TCMExit) ;   message  CM_EXIT ;
  procedure 
WMPaste( var Message TWMPaste) ;   message  WM_PASTE ;
  procedure 
WMCut( var Message TWMCut) ;   message  WM_CUT ;
 protected
  procedure 
SetTexte(LeTexte  string ) ;
  procedure 
Notification(Acomponent  Tcomponent Operation  Toperation) ; override;
  procedure 
SetParent(AParent TWinControl) ; override;
  procedure 
GetChildren(Proc TGetChildProc Root TComponent) ; override;
  function 
IsValidChar(Key Char ) Boolean virtual ;
  procedure 
UpClick ( Sender TObject) virtual ;
  procedure 
DownClick ( Sender TObject) virtual ;
  procedure 
KeyDown( var  Key Word Shift TShiftState) ; override;
  procedure 
KeyPress( var  Key Char ) ; override;
  procedure 
CreateParams( var  Params TCreateParams) ; override;
  procedure 
CreateWnd ; override;
 public
  constructor 
Create(AOwner TComponent) ; override;
  destructor 
Destroy ; override;
  procedure 
SetBounds(ALeft, ATop, AWidth, AHeight Integer ) ;Override;
   
   property 
Button TSpinButton  read  FButton ;
  procedure 
SetupInternalUsage ;
  procedure 
SetupInternalUnite ;
 published
  property 
Anchors ;
  property 
AutoSelect ;
  property 
AutoSize ;
  property 
Color ;
  property 
Constraints ;
  property 
Ctl3D ;
  property 
DragCursor ;
  property 
DragMode ;
  property 
EditorEnabled Boolean read  FEditorEnabled  write  FEditorEnabled  default  True ;
  property 
Enabled  default  true ;
  property 
Mode Tmode  Read  GetMode  write  SetMode  default  mReelEtend ;
  property 
Font ;
  property 
GarderZero boolean read  FGarderZero  write  FGarderZero  default  false ;
  property 
Increment Extended  read  Fincr  write  Fincr ;
  property 
LabelUnite TBoundUnite  read  FLabelUnite ;
  property 
LabelUsage TBoundUsage  read  FLabelUsage ;
  property 
MaxLength ;
  property 
Sens  Tsens  read  Fsens  write  SetSens  default  sPositif ;
  property 
ValeurMax Extended  read  FValMax  write  SetValMax ;
  property 
ValeurMin Extended  read  FValMin  write  SetValMin ;
  property 
nbDecimale  Integer read  FnbDecimale  write  FnbDecimale  Default  2 ;
  property 
ParentColor ;
  property 
ParentCtl3D ;
  property 
ParentFont ;
  property 
ParentShowHint ;
  property 
PopupMenu ;
  property 
ReadOnly ;
  property 
ShowHint ;
  property 
TabOrder ;
  property 
TabStop ;
  property 
Texte  String  write  SetTexte ;
  property 
UnitePosition TLabelPosition  read  FUnitePosition  write  SetUnitePosition  default  lpDroite ;
  property 
UniteSpacing Integer read  FUniteSpacing  write  SetUniteSpacing  default  5 ;
  property 
UsagePosition TLabelPosition  read  FLabelPosition  write  SetUsagePosition  default  lpHaut ;
  property 
UsageSpacing Integer read  FLabelSpacing  write  SetUsageSpacing  default  5 ;
  property 
Value Extended  read  GetValeur  write  SetValeur ;
  property 
Visible  default  true ;
  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 ;
  property 
OnStartDrag ;
end;