Files
AC_Pro/Component/SkinTrackBar/SkinTrackBar.h
T
2026-06-13 00:05:19 +08:00

106 lines
3.4 KiB
C++

//---------------------------------------------------------------------------
#ifndef SkinTrackBarH
#define SkinTrackBarH
#include "vcl.h"
//---------------------------------------------------------------------------
class PACKAGE TSkinTrackBar : public TPanel
{
private:
TPaintBox *Slider;
int FPosition;
bool FOrientation,
FEnabled;
TNotifyEvent FOnChange;
int FMax,
FMin;
int FPageSize;
bool bDown;
bool bMouse;
void __fastcall Paint(void){};
void __fastcall DrawH(TWMMouse &Message);
void __fastcall DrawV(TWMMouse &Message);
void __fastcall SetMax(int Value);
void __fastcall SetMin(int Value);
void __fastcall SetPosition(int iPosition);
void __fastcall SetOrientation(bool bOrientation);
void __fastcall SetEnabled(bool bEnabled);
void __fastcall SliderPaint(System::TObject* Sender);
void __fastcall CMMouseEnter(System::TObject* Sender);
void __fastcall CMMouseLeave(System::TObject* Sender);
void __fastcall CMMouseDown(System::TObject* Sender, System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
MESSAGE void __fastcall WMMouseWheel(TWMMouseWheel &Message);
MESSAGE void __fastcall WMSize(TWMSize &Message);
MESSAGE void __fastcall WMEraseBkgnd(TWMEraseBkgnd &Message);
MESSAGE void __fastcall WMLButtonDown(TWMLButtonDown &Message);
MESSAGE void __fastcall WMLButtonUp(TWMLButtonUp &Message);
MESSAGE void __fastcall WMMouseMove(TWMMouse &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
MESSAGE_HANDLER(WM_LBUTTONDOWN, TWMLButtonDown, WMLButtonDown)
MESSAGE_HANDLER(WM_LBUTTONUP, TWMLButtonUp, WMLButtonUp)
MESSAGE_HANDLER(WM_MOUSEWHEEL, TWMMouseWheel, WMMouseWheel)
MESSAGE_HANDLER(WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd)
MESSAGE_HANDLER(WM_MOUSEMOVE, TWMMouseMove, WMMouseMove)
END_MESSAGE_MAP(TPanel)
public:
void __fastcall TMouseWheelEvent(System::TObject* Sender, System::Classes::TShiftState Shift, int WheelDelta, const System::Types::TPoint &MousePos, bool &Handled);
__fastcall TSkinTrackBar(System::Classes::TComponent* AOwner);
__fastcall ~TSkinTrackBar();
__published:
__property bool Orientation = {read=FOrientation, write=SetOrientation, default=true};
__property TNotifyEvent OnChange = {read = FOnChange, write = FOnChange ,default = NULL};
__property bool Enabled = {read = FEnabled, write = SetEnabled, default=true };
__property int Max = {read = FMax, write = SetMax, default = 100};
__property int Min = {read = FMin, write = SetMin, default = 0};
__property int PageSize = {read = FPageSize, write = FPageSize, default = 1};
__property int Position = {read = FPosition, write = SetPosition, stored=FPosition, default = 0};
};
#endif
/************************************************************
使用说明:
1、内部参数
设置方向Orientation,最大值Max,最小值Min,位置Position
2、外部接口
OnChange 为 TNotifyEvent类型
3、使用例举
p_Track = new TSkinTrackBar(GeneralDialogPanel1);
p_Track->Parent = GeneralDialogPanel1;
p_Track->Top = 50;
p_Track->Left = 100;
p_Track->Width = 100;
p_Track->Height = 100;
p_Track->Position = 30; //初始位置
p_Track->ParentBackground = true; //是否背景透明,为true则背景为 Parent的背景---默认为true
p_Track->Orientation = false; //滑块方向 横向为 true ,纵向为false 默认为 true 横向
p_Track->OnChange = Change; //外部接口Change
p_Track->Show();
************************************************************/