home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / SPIN.H < prev    next >
C/C++ Source or Header  |  1997-02-28  |  7KB  |  207 lines

  1. //---------------------------------------------------------------------------
  2. // Borland C++Builder
  3. // Copyright (c) 1987, 1997 Borland International Inc.  All Rights Reserved.
  4. //---------------------------------------------------------------------------
  5. #if !defined(SpinHPP)
  6. #define SpinHPP
  7. //----------------------------------------------------------------------------
  8. #include <Buttons.hpp>
  9. #include <Menus.hpp>
  10. #include <Graphics.hpp>
  11. #include <Forms.hpp>
  12. #include <SysUtils.hpp>
  13. #include <Messages.hpp>
  14. #include <Controls.hpp>
  15. #include <ExtCtrls.hpp>
  16. #include <StdCtrls.hpp>
  17. #include <Classes.hpp>
  18. #include <Windows.hpp>
  19. #include <System.hpp>
  20. #include <DBCtrls.hpp>    //for InitRepeatPause and RepeatPause
  21.  
  22. //-- type declarations -------------------------------------------------------
  23. namespace Spin{
  24. class TSpinButton;
  25. class TTimerSpeedButton;
  26. enum Spin_3 { tbFocusRect, tbAllowTimer };
  27.  
  28. typedef Set<Spin_3, tbFocusRect, tbAllowTimer>  TTimeBtnState;
  29.  
  30. class TTimerSpeedButton : public TSpeedButton
  31. {
  32. private:
  33.     TTimer *FRepeatTimer;
  34.     TTimeBtnState FTimeBtnState;
  35.     void __fastcall TimerExpired(TObject *Sender);
  36.  
  37. protected:
  38.     virtual void __fastcall Paint(void);
  39.     DYNAMIC void __fastcall MouseDown(TMouseButton Button,  TShiftState Shift, int X, int Y);
  40.     DYNAMIC void __fastcall MouseUp(TMouseButton Button,  TShiftState Shift, int X, int Y);
  41.  
  42. public:
  43.     __fastcall virtual ~TTimerSpeedButton(void);
  44.     __property TTimeBtnState TimeBtnState = {read=FTimeBtnState, write=FTimeBtnState, nodefault};
  45.     __fastcall virtual TTimerSpeedButton(TComponent *AOwner);
  46. };
  47.  
  48. class TSpinButton : public TWinControl
  49. {
  50.  
  51. private:
  52.     TTimerSpeedButton *FUpButton;
  53.     TTimerSpeedButton *FDownButton;
  54.     TTimerSpeedButton *FFocusedButton;
  55.     TWinControl *FFocusControl;
  56.     TNotifyEvent FOnUpClick;
  57.     TNotifyEvent FOnDownClick;
  58.     TTimerSpeedButton *__fastcall CreateButton(void);
  59.     Graphics::TBitmap *__fastcall GetUpGlyph(void);
  60.     Graphics::TBitmap *__fastcall GetDownGlyph(void);
  61.     void __fastcall SetUpGlyph(Graphics::TBitmap *Value);
  62.     void __fastcall SetDownGlyph(Graphics::TBitmap *Value);
  63.     void __fastcall BtnClick(TObject *Sender);
  64.     void __fastcall BtnMouseDown(TObject *Sender, TMouseButton Button,  TShiftState Shift, int X, int
  65.         Y);
  66.     void __fastcall SetFocusBtn(TTimerSpeedButton *Btn);
  67.     void __fastcall AdjustSize(int &W, int &H);
  68.     MESSAGE void __fastcall WMSize(TWMSize &Message);
  69.     MESSAGE void __fastcall WMSetFocus(TWMSetFocus &Message);
  70.     MESSAGE void __fastcall WMKillFocus(TWMKillFocus &Message);
  71.     MESSAGE void __fastcall WMGetDlgCode(TWMNoParams &Message);
  72.  
  73. protected:
  74.     virtual void __fastcall Loaded(void);
  75.     DYNAMIC void __fastcall KeyDown(Word &Key,  TShiftState Shift);
  76.  
  77. public:
  78.     __fastcall virtual TSpinButton(TComponent *AOwner);
  79.     virtual void __fastcall SetBounds(int ALeft, int ATop, int AWidth, int AHeight);
  80.  
  81. __published:
  82.     __property Align ;
  83.     __property Ctl3D ;
  84.     __property Graphics::TBitmap * DownGlyph = {read=GetDownGlyph, write=SetDownGlyph, nodefault};
  85.     __property DragCursor ;
  86.     __property DragMode ;
  87.     __property Enabled ;
  88.     __property TWinControl * FocusControl = {read=FFocusControl, write=FFocusControl, nodefault};
  89.     __property ParentCtl3D ;
  90.     __property ParentShowHint ;
  91.     __property PopupMenu ;
  92.     __property ShowHint ;
  93.     __property TabOrder ;
  94.     __property TabStop ;
  95.     __property Graphics::TBitmap * UpGlyph = {read=GetUpGlyph, write=SetUpGlyph, nodefault};
  96.     __property Visible ;
  97.     __property TNotifyEvent OnDownClick = {read=FOnDownClick, write=FOnDownClick};
  98.     __property OnDragDrop ;
  99.     __property OnDragOver ;
  100.     __property OnEndDrag ;
  101.     __property OnEnter ;
  102.     __property OnExit ;
  103.     __property TNotifyEvent OnUpClick = {read=FOnUpClick, write=FOnUpClick};
  104.     __fastcall virtual ~TSpinButton(void) { }
  105. BEGIN_MESSAGE_MAP
  106.     MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize);
  107.     MESSAGE_HANDLER(WM_SETFOCUS, TWMSetFocus, WMSetFocus);
  108.     MESSAGE_HANDLER(WM_KILLFOCUS, TWMKillFocus, WMKillFocus);
  109.     MESSAGE_HANDLER(WM_GETDLGCODE, TWMNoParams, WMGetDlgCode);
  110. END_MESSAGE_MAP(TWinControl);
  111. };
  112.  
  113. class TSpinEdit : public TCustomEdit
  114. {
  115. private:
  116.     long FMinValue;
  117.     long FMaxValue;
  118.     TCanvas *FCanvas;
  119.     long FIncrement;
  120.     TSpinButton *FButton;
  121.     bool FEditorEnabled;
  122.     int __fastcall GetMinHeight(void);
  123.     long __fastcall GetValue(void);
  124.     long __fastcall CheckValue(long NewValue);
  125.     void __fastcall SetValue(long NewValue);
  126.     void __fastcall SetEditRect(void);
  127.     MESSAGE void __fastcall WMSize(TWMSize &Message);
  128.     MESSAGE void __fastcall CMEnter(TWMNoParams &Message);
  129.     MESSAGE void __fastcall CMExit(TWMNoParams &Message);
  130.     MESSAGE void __fastcall WMPaste(TWMNoParams &Message);
  131.     MESSAGE void __fastcall WMCut(TWMNoParams &Message);
  132.  
  133. protected:
  134.     DYNAMIC void __fastcall GetChildren(TGetChildProc Proc);
  135.     virtual bool __fastcall IsValidChar(Char Key);
  136.     virtual void __fastcall UpClick(TObject *Sender);
  137.     virtual void __fastcall DownClick(TObject *Sender);
  138.     DYNAMIC void __fastcall KeyDown(Word &Key,  TShiftState Shift);
  139.     DYNAMIC void __fastcall KeyPress(Char &Key);
  140.     virtual void __fastcall CreateParams(TCreateParams &Params);
  141.     virtual void __fastcall CreateWnd(void);
  142.  
  143. public:
  144.     __fastcall virtual TSpinEdit(TComponent *AOwner);
  145.     __fastcall virtual ~TSpinEdit(void);
  146.     __property TSpinButton * Button = {read=FButton, nodefault};
  147.  
  148. __published:
  149.     __property AutoSelect ;
  150.     __property AutoSize ;
  151.     __property Color ;
  152.     __property Ctl3D ;
  153.     __property DragCursor ;
  154.     __property DragMode ;
  155.     __property bool EditorEnabled = {read=FEditorEnabled, write=FEditorEnabled, default=1};
  156.     __property Enabled ;
  157.     __property Font ;
  158.     __property long Increment = {read=FIncrement, write=FIncrement, default=1};
  159.     __property MaxLength ;
  160.     __property long MaxValue = {read=FMaxValue, write=FMaxValue, nodefault};
  161.     __property long MinValue = {read=FMinValue, write=FMinValue, nodefault};
  162.     __property ParentColor ;
  163.     __property ParentCtl3D ;
  164.     __property ParentFont ;
  165.     __property ParentShowHint ;
  166.     __property PopupMenu ;
  167.     __property ReadOnly ;
  168.     __property ShowHint ;
  169.     __property TabOrder ;
  170.     __property TabStop ;
  171.     __property long Value = {read=GetValue, write=SetValue, nodefault};
  172.     __property Visible ;
  173.     __property OnChange ;
  174.     __property OnClick ;
  175.     __property OnDblClick ;
  176.     __property OnDragDrop ;
  177.     __property OnDragOver ;
  178.     __property OnEndDrag ;
  179.     __property OnEnter ;
  180.     __property OnExit ;
  181.     __property OnKeyDown ;
  182.     __property OnKeyPress ;
  183.     __property OnKeyUp ;
  184.     __property OnMouseDown ;
  185.     __property OnMouseMove ;
  186.     __property OnMouseUp ;
  187. BEGIN_MESSAGE_MAP
  188.     MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize);
  189.     MESSAGE_HANDLER(CM_ENTER, TWMNoParams, CMEnter);
  190.     MESSAGE_HANDLER(CM_EXIT, TWMNoParams, CMExit);
  191.     MESSAGE_HANDLER(WM_PASTE, TWMNoParams, WMPaste);
  192.     MESSAGE_HANDLER(WM_CUT, TWMNoParams, WMCut);
  193. END_MESSAGE_MAP(TCustomEdit);
  194. };
  195.  
  196. //-- var, const, procedure ---------------------------------------------------
  197. //-- template instantiations -------------------------------------------------
  198. template class TTimeBtnState ;
  199. //-- end unit ----------------------------------------------------------------
  200. } //end namespace Spin
  201.  
  202. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  203. using namespace Spin;
  204. #endif
  205.  
  206. #endif    // Spin
  207.