home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / Vcl / cspin.h < prev    next >
Text File  |  2000-02-01  |  8KB  |  221 lines

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