106 lines
3.4 KiB
C++
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();
|
|
|
|
************************************************************/
|