109 lines
4.0 KiB
C++
109 lines
4.0 KiB
C++
//---------------------------------------------------------------------------
|
|
/////////////////////////////////
|
|
////////安装 可以不用安装,直接用原来的 .pas文件安装
|
|
/////////////////////////////////
|
|
|
|
/////////////////////////////////
|
|
/////////使用
|
|
//--》供新的包使用
|
|
//把.cpp 中 #pragma package(smart_init) 去掉
|
|
//新包.cpp #include "PNGButton.cpp"
|
|
/////////////////////////////////
|
|
|
|
#ifndef PNGButtonH
|
|
#define PNGButtonH
|
|
//---------------------------------------------------------------------------
|
|
#include <SysUtils.hpp>
|
|
#include <Classes.hpp>
|
|
#include <Vcl.Controls.hpp>
|
|
#include <Vcl.Imaging.pngimage.hpp>
|
|
#include <Vcl.Imaging.pnglang.hpp>
|
|
|
|
//---------------------------------------------------------------------------
|
|
//class PACKAGE TPNGButton : public TGraphicControl
|
|
|
|
class CBTPNButton : public TGraphicControl
|
|
{
|
|
public:
|
|
enum TModalResult{
|
|
mrNone = System::Int8(0x0),
|
|
mrOk = System::Int8(0x1),
|
|
mrCancel = System::Int8(0x2),
|
|
mrAbort = System::Int8(0x3),
|
|
mrRetry = System::Int8(0x4),
|
|
mrIgnore = System::Int8(0x5),
|
|
mrYes = System::Int8(0x6),
|
|
mrNo = System::Int8(0x7),
|
|
mrClose = System::Int8(0x8),
|
|
mrHelp = System::Int8(0x9),
|
|
mrTryAgain = System::Int8(0xa),
|
|
mrContinue = System::Int8(0xb),
|
|
mrAll = System::Int8(0xc),
|
|
mrNoToAll = System::Int8(0xd),
|
|
mrYesToAll = System::Int8(0xe)
|
|
};
|
|
private:
|
|
TNotifyEvent FOnMouseEnter;//on mouse enter notify event
|
|
TNotifyEvent FOnMouseLeave;//on mouse leave notify event
|
|
// System::Uitypes::TModalResult FModalResult;
|
|
TModalResult FModalResult;
|
|
|
|
MESSAGE void __fastcall CMMouseEnter(Winapi::Messages::TMessage &Msg); // to know when mouse is entered
|
|
MESSAGE void __fastcall CMMouseLeave(Winapi::Messages::TMessage &Msg); // to know when mouse is leaved
|
|
|
|
BEGIN_MESSAGE_MAP
|
|
MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter)
|
|
MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave)
|
|
END_MESSAGE_MAP(TGraphicControl)
|
|
|
|
protected:
|
|
|
|
int EtatBtn; // 0=Normal 1=Mouse entered 2=Pressed 3=Disabled
|
|
int FStateCount;
|
|
Vcl::Imaging::Pngimage::TPngImage *FPngImg; //our 4 states image
|
|
bool FDown; // value to know if we painting mouse down
|
|
TColor FBkColor;
|
|
|
|
DYNAMIC void __fastcall MouseDown(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
|
|
DYNAMIC void __fastcall MouseUp(System::Uitypes::TMouseButton Button, System::Classes::TShiftState Shift, int X, int Y);
|
|
virtual void __fastcall SetEnabled(bool Value);
|
|
|
|
public:
|
|
|
|
__fastcall virtual CBTPNButton(System::Classes::TComponent* AOwner);
|
|
__fastcall virtual ~CBTPNButton(void);
|
|
|
|
void __fastcall SetStateCount( int count );
|
|
void __fastcall SetPngImg(Vcl::Imaging::Pngimage::TPngImage *value); // we set the png image
|
|
void __fastcall SetDown(bool value); // to know if mouse is down or not
|
|
void __fastcall SetColor( TColor value );
|
|
|
|
virtual void __fastcall Paint(void); // override the painting of the component
|
|
DYNAMIC void __fastcall Click(void);
|
|
|
|
|
|
__published:
|
|
|
|
__property Action;
|
|
__property Anchors = {default=3};
|
|
__property bool Down = {read=FDown, write=SetDown, default=False};
|
|
__property Enabled = {default=1};
|
|
__property int ImgStates = {read=FStateCount, write=SetStateCount, default=4};
|
|
// __property System::Uitypes::TModalResult ModalResult = {read=FModalResult, write=FModalResult, default=0};
|
|
__property TModalResult ModalResult = {read=FModalResult, write=FModalResult, default=0};
|
|
__property ParentShowHint = {default=1};
|
|
__property Vcl::Imaging::Pngimage::TPngImage *PngImg = {read=FPngImg, write=SetPngImg};
|
|
__property PopupMenu;
|
|
__property ShowHint;
|
|
__property Visible = {default=1};
|
|
__property OnClick;
|
|
__property OnContextPopup;
|
|
__property OnMouseDown;
|
|
__property OnMouseMove;
|
|
__property OnMouseUp;
|
|
__property System::Classes::TNotifyEvent OnMouseEnter = {read=FOnMouseEnter, write=FOnMouseEnter};
|
|
__property System::Classes::TNotifyEvent OnMouseLeave = {read=FOnMouseLeave, write=FOnMouseLeave};
|
|
};
|
|
//---------------------------------------------------------------------------
|
|
#endif
|