Files
AC_Pro/UpDownUnit.h
2026-06-13 00:05:19 +08:00

63 lines
1.7 KiB
C++

//---------------------------------------------------------------------------
#ifndef UpDownUnitH
#define UpDownUnitH
//---------------------------------------------------------------------------
#define STATE_NORMAL 0
#define STATE_HIGHLIGHT 1
#define STATE_PUSH 2
#define ORIENTATION_LEFT 0
#define ORIENTATIONRIGHT 1
#define ORIENTATION_NONE 2
#define ORIENTATION_ALL 3
#define SPEED_MIN 50
#define SPEED_MAX 200
#define TIME_DELAY 200
//---------------------------------------------------------------------------
namespace UpDownUnit{
class TUpDown: public Vcl::Comctrls::TUpDown
{
private:
MESSAGE void __fastcall WMPaint(Winapi::Messages::TWMPaint &Message);
MESSAGE void __fastcall WMLButtonDown(TWMMouse &Message);
MESSAGE void __fastcall WMLButtonUp(TWMMouse &Message);
MESSAGE void __fastcall WMMouseMove(TWMMouse &Message);
MESSAGE void __fastcall CMMouseLeave(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_MOUSEMOVE, TWMMouseMove, WMMouseMove)
MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave)
END_MESSAGE_MAP(Vcl::Comctrls::TUpDown)
protected:
virtual void __fastcall PaintWindow(HDC DC);
private:
TCanvas *m_pCanvas;
TTimer *m_pTimer;
bool m_iDown;
int m_iCurOrentation,m_iPreOrentation;
void __fastcall Draw(int iState, int iOrentation=ORIENTATION_ALL);
int __fastcall HitTest(int x, int y);
void __fastcall TimerProc(TObject* Sender);
public:
__fastcall virtual TUpDown(System::Classes::TComponent* AOwner);
__fastcall ~TUpDown();
};
}
using namespace UpDownUnit;
#endif