Mam drobny kłopot z przypięciem zdarzenia do dynamicznie tworzonego obiektu.
Mam klasę:
KOD cpp: UKRYJ
class THelpMenuItem : public TMenuItem
{
private:
//-----
void __fastcall DrawItemA(TObject * Sender,TCanvas *ACanvas, TRect &ARect, bool Selected);
public:
THelpMenuItem(TComponent* Owner, TMainMenu * handle);
};
{
private:
//-----
void __fastcall DrawItemA(TObject * Sender,TCanvas *ACanvas, TRect &ARect, bool Selected);
public:
THelpMenuItem(TComponent* Owner, TMainMenu * handle);
};
Chce odmalować na swój sposób ten element menu.
Tworzę go dynamicznie, więc muszę przypiąc zdarzenie OnDrawItem. Robię to w konstruktorze:
KOD cpp: UKRYJ
THelpMenuItem::THelpMenuItem(TComponent* Owner, TMainMenu * Menu)
: TMenuItem(Owner)
{
this->Caption = "&Pomoc";
this->OnDrawItem = DrawItemA;
Menu->Items->Add(this);
}
: TMenuItem(Owner)
{
this->Caption = "&Pomoc";
this->OnDrawItem = DrawItemA;
Menu->Items->Add(this);
}
Niestety wciąz otrzymuję błąd:
- Kod: Zaznacz cały
E2034 Cannot convert 'void (_fastcall * (_closure )(TObject *,TCanvas *,TRect &,bool))(TObject *,TCanvas *,TRect &,bool)' to 'TMenuDrawItemEvent'
mimo, że TMenuDrawItemEvent jest ewidentnie:
KOD cpp: UKRYJ
typedef void __fastcall (__closure *TMenuDrawItemEvent)(System::TObject* Sender, Graphics::TCanvas* ACanvas, const Types::TRect &ARect, bool Selected);
Wszyscy przypinają w ten sposób OnClick i inne zdarzenia. Czemu to nie chce działać?






