Files
2026-06-13 00:05:19 +08:00

75 lines
2.4 KiB
C++

//---------------------------------------------------------------------------
#ifndef CKBoxH
#define CKBoxH
#include <vcl.h>
#include <Vcl.Imaging.pngimage.hpp>
//---------------------------------------------------------------------------
class PACKAGE TCKBox : public TPanel
{
private:
bool FChecked;
bool FEnabled;
bool bMouse;
bool FAutoBox;
TNotifyEvent FOnChange;
TColor FBoxColor;
String m_strText;
// TLabel *m_pCaption;
Vcl::Imaging::Pngimage::TPngImage *m_pImgCheck;
private:
void __fastcall SetBoxEnabled(bool bEnabled);
void __fastcall SetEnabled(bool bEnabled);
void __fastcall SetChecked(bool bCheck);
void __fastcall SetBoxColor(TColor cColor);
TFont* __fastcall GetTextFont();
void __fastcall SetTextFont( TFont* Value );
// void __fastcall Clicklb(TObject *Sender);
// TColor __fastcall ColorSub(TColor cColor,int index);
String __fastcall GetCaption();
void __fastcall SetCaption( String Value );
protected:
virtual void __fastcall Paint(void);
MESSAGE void __fastcall CMMouseLeave(TWMMouse &Message);
MESSAGE void __fastcall CMMouseEnter(TWMMouse &Message);
MESSAGE void __fastcall WMSize(Winapi::Messages::TWMSize &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER, TWMMouse, CMMouseEnter)
MESSAGE_HANDLER(CM_MOUSELEAVE, TWMMouse, CMMouseLeave)
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize)
END_MESSAGE_MAP(TPanel)
public:
DYNAMIC void __fastcall Click(void);
__fastcall TCKBox( TComponent* Owner );
__fastcall ~TCKBox();
__published:
__property bool Checked = { read = FChecked, write = SetChecked, default = 0 };
__property bool Enabled = { read = FEnabled, write = SetEnabled, default = 1 };
__property bool AutoBox = { read = FAutoBox,write = FAutoBox,default = 1};
__property TColor BoxColor = { read = FBoxColor,write = SetBoxColor };
__property Font = { read = GetTextFont, write = SetTextFont };
__property TNotifyEvent OnChange = {read = FOnChange, write = FOnChange ,default = NULL};
__property String Caption = {read = GetCaption, write = SetCaption };
};
#endif
/*
使用说明
1、OnChange 为当 Checked 发生改变时触发 为外部接口 也可以使用父类 TPanel 的 onClick
2、FontSize 为 字体大小
3、AutoBox 为 True 时:
Box 的大小随字体高度变化
为false 时:
Box 的大小 随控件的 Height 变化
4、BoxEnabled 能否使用 ,不与 TPanel 的 Enabled 冲突
附注:
控件 最小 Height 为 6 ;最小 Width 为 11
*/