Fehler bei Zuweisung von OnDrawCell
-
Hallo
Ich habe ein Problem bei einer Zuweisung der OnDrawCell Routine bekomme immer diesen Fehler rausE2034 Konvertierung von 'void (_fastcall *)(TObject *,int,int,const TRect &,TGridDrawState)' nach 'void (_fastcall * (_closure )(TObject *,int,int,const TRect &,TGridDrawState))(TObject *,int,int,const TRect &,TGridDrawState)' nicht möglich.
Kann mir einer helfen
-
Hallo
eventuell hilft dir dieser Thread weiter
http://www.c-plusplus.net/forum/viewtopic-var-t-is-80029-and-highlight-is-ondrawcell.html
Es geht darum, das das const bei OnDrawGrid ein Fehler ist.
Ansonsten poste mal die genau Funktionsdeklaration, die du zuweisen willst.bis bald
akari
-
Ja auch wenn ich const weglasse kommt der Fehler raus.
cpp :
AB->OnDrawCell=myABDrawCell;Fehler:
Konvertierung von 'void (_fastcall *)(TObject *,int,int,TRect &,TGridDrawState)' nach 'void (_fastcall * (_closure )(TObject *,int,int,const TRect &,TGridDrawState))(TObject *,int,int,const TRect &,TGridDrawState)' nicht möglich.Deklaration:
void __fastcall myABDrawCell(TObject *Sender, int ACol, int ARow,TRect &Rect, TGridDrawState State);so wie ich das sehe muss irgendwie doch const stehen, aber vielleicht weis ja jemand mehr als ich.
-
Hallo
also diese Deklaration funktioniert bei mir :
void __fastcall myABDrawCell(TObject *Sender, int ACol, int ARow,const TRect &Rect, TGridDrawState State);bis bald
akari
-
Ja bei mir geht es ach wenn ich es Form bezogen deklariere.
Aber geht das nicht das man es auch in einer separaten unit zuweisen kann?
-
Gab es da nicht in den letzten Monaten schon mal einen Thread zu? Ich finde ihn allerdings nicht mehr. Falls ihn jemand findet...
(Nicht sicher:) Ich glaube das ist irgendeine Beschränkung beim BCB und ist somit nicht möglich.
-
Hallo
ach so, da liegt das Problem. Nein, diese Events können nur Objekt-gebundene Funktionen aufrufen, das liegt am Schlüsselwort __closure (nein, du kannst es nicht wegmachen)
Du wirst wohl in dem Form eine Zwischenfunktion einbauen müßen, die den Aufruf weiterleitet. An eine Funktion mit demselben Kopf, nur statt dem Sender das entsprechende Canvas.void __fastcall myABDrawCell(TCanvas *Canvas, int ACol, int ARow,const TRect &Rect, TGridDrawState State);bis bald
akari
-
Habe es jetzt mit Hilfe einer classe gelöst und das funktioniert Einwandfrei.
Aber trotzten schönen dank für eure Hilfe….
Mfg.
skymaster