//--------------------------------------------------------------------------- #ifndef CDSkinScrollBarUnitH #define CDSkinScrollBarUnitH #define TIME_DELAY 200 #define TIME_NOTIFY 100 #define THUMB_BORDER 7 #define THUMB_MINSIZE (THUMB_BORDER * 2) #define STATE_NORMAL 0 #define STATE_HIGHLIGHT 1 #define STATE_PUSH 2 class CDTSkinScrollBar : public TScrollBar { private: // int m_nTileHeight, //add by tj 2013/11/18 int m_nThumbHeight, m_nThumbTop, m_nPreThumbTop, m_nDragPos, m_nDragPoint, m_iClicked, m_iHitPrev, m_nMax, m_nMin, m_nPos, m_nPage, m_nTrackPos; bool m_bPause, m_bNotify, m_bDrag, m_bTrace; TTimer *m_pTimer; TCanvas *m_pCanvas; int HitTest( int X, int Y ); void CalcThumbHeight(); void CalcThumbTop(); void DrawArrow( int iDirection, int iState ); void DrawThumb( int iState, bool bEraseBk, int iPageUD=-1 ); void __fastcall TimerProc(TObject* Sender); MESSAGE void __fastcall WMPaint(Winapi::Messages::TWMPaint &Message); MESSAGE void __fastcall WMLButtonDown(TWMMouse &Message); MESSAGE void __fastcall WMLButtonUp(TWMMouse &Message); MESSAGE void __fastcall WMLButtonDblClk(TWMMouse &Message); MESSAGE void __fastcall WMRButtonDown(TWMMouse &Message); //add by tj 2013/11/18 MESSAGE void __fastcall WMRButtonUp(TWMMouse &Message); //add by tj 2013/11/18 MESSAGE void __fastcall WMMouseMove(TWMMouse &Message); // MESSAGE void __fastcall CMMouseLeave(TMessage &Message); //add by tj 2013/11/25 12:35 MESSAGE void __fastcall SBMSetScrollInfo(TMessage &Message); MESSAGE void __fastcall SBMGetScrollInfo(TMessage &Message); BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_PAINT, TWMPaint, WMPaint) MESSAGE_HANDLER(WM_LBUTTONDOWN, TWMLButtonDown, WMLButtonDown) MESSAGE_HANDLER(WM_LBUTTONUP, TWMLButtonUp, WMLButtonUp) MESSAGE_HANDLER(WM_LBUTTONDBLCLK, TWMLButtonDblClk, WMLButtonDblClk) MESSAGE_HANDLER(WM_RBUTTONDOWN, TWMRButtonDown, WMRButtonDown) MESSAGE_HANDLER(WM_RBUTTONUP, TWMRButtonUp, WMRButtonUp) //add by tj 2013/11/18 MESSAGE_HANDLER(WM_MOUSEMOVE, TWMMouseMove, WMMouseMove) //add by tj 2013/11/18 // MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave) //add by tj 2013/11/25 12:35 MESSAGE_HANDLER(SBM_SETSCROLLINFO, TMessage, SBMSetScrollInfo) MESSAGE_HANDLER(SBM_GETSCROLLINFO, TMessage, SBMGetScrollInfo) END_MESSAGE_MAP(TScrollBar) protected: virtual void __fastcall PaintWindow(HDC DC); public: TWinControl *m_pWndCtrl; bool m_bAction; __fastcall virtual CDTSkinScrollBar(System::Classes::TComponent* AOwner); __fastcall ~CDTSkinScrollBar(); void __fastcall CMMouseLeave(TObject *Sender); //add by tj 2013/11/25 12:35 bool IsDraging(){ return m_bDrag; }; void __fastcall SetPosition(int Value, bool bRedraw=true); void __fastcall SetPageSize(int Value, bool bRedraw=true); void __fastcall SetRange(int AMin, int AMax, bool bRedraw=true); void __fastcall GetScrollRange(int* nMin, int* nMax); int __fastcall GetScrollPos(); int __fastcall GetPageSize(); }; //--------------------------------------------------------------------------- #endif