A
Jansen schrieb:
Acidmrp schrieb:
Ich möchte z.B. einen eigenen Knopf programmieren der von TButton abgeleitet
ist, aber auf dem man noch ein Bild anzeigen kann.
So wie TBitbtn? Dann musst du deiner Komponente eine Property vom Typ TBitmap verpassen, halt so wie's z.B. TBitBtn macht.
ja genau so. Nur soll der im WinXP Style sein. Ich teste das gleich mal mit der
TBitmap Property. Das wär ja mal super einfach wenn das so geht.
EDIT:
klappt wunderbar.
Ein Beispiel für's Archiv:
Neues Image Control, dass MouseEnter und MouseLeave enthält. Zusätzlich sind
zwei Bilder vorhanden, die jeweils bei MouseEnter und MouseLeave angezeigt
werden. Damit kann man sich z.B. eigene Knöpfe zusammen stellen.
typedef void __fastcall(__closure *HMouseEnter)(TObject *Sender);
typedef void __fastcall(__closure *HMouseLeave)(TObject *Sender);
//---------------------------------------------------------------------------
class PACKAGE MyImage : public TImage
{
private:
HMouseEnter fMouseEnter;
HMouseLeave fMouseLeave;
Graphics::TBitmap* _MouseInPicture;
Graphics::TBitmap* _MouseOutPicture;
void __fastcall SetMouseInPictureData(Graphics::TBitmap* bmp);
void __fastcall SetMouseOutPictureData(Graphics::TBitmap* bmp);
// long int Offset
__published:
// Eigenschaften
__property Graphics::TBitmap* MouseInPicture = {read=_MouseInPicture, write=SetMouseInPictureData};
__property Graphics::TBitmap* MouseOutPicture = {read=_MouseOutPicture, write=SetMouseOutPictureData};
protected:
void __fastcall cmMouseEnter(TMessage&);
void __fastcall cmMouseLeave(TMessage&);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, cmMouseEnter);
MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, cmMouseLeave);
END_MESSAGE_MAP(TGraphicControl);
public:
__fastcall MyImage(TComponent* Owner);
__published:
__property HMouseEnter OnMouseEnter = {read = fMouseEnter, write = fMouseEnter};
__property HMouseLeave OnMouseLeave = {read = fMouseLeave, write = fMouseLeave};
};
void __fastcall MyImage::SetMouseInPictureData(Graphics::TBitmap * bmp)
{
_MouseInPicture->Assign(bmp);
}
void __fastcall MyImage::SetMouseOutPictureData(Graphics::TBitmap * bmp)
{
_MouseOutPicture->Assign(bmp);
}
//---------------------------------------------------------------------------
__fastcall MyImage::MyImage(TComponent* Owner)
: TImage(Owner)
{
_MouseInPicture = new Graphics::TBitmap();
_MouseOutPicture = new Graphics::TBitmap();
}
//---------------------------------------------------------------------------
void __fastcall MyImage::cmMouseEnter(TMessage& Msg)
{
if(fMouseEnter) fMouseEnter(this);
inherited::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
void __fastcall MyImage::cmMouseLeave(TMessage& Msg)
{
if(fMouseLeave) fMouseLeave(this);
inherited::Dispatch(&Msg);
}