eigene klassen und ereignisse
-
Hi,
ich habe mir eine Klasse geschrieben, die ein TImage enthält. Jetzt möchte ich gerne auf das OnClick Ereigniss des TImage reagieren. Ich habe schon gesucht und etwas über delegate gefunden, allerdings hab ich davon noch nie gehört und bin nicht wirklich schlau geworden wie ich das nun machen soll
hier mal meine klassen definition:
class VidMovie { public: VidMovie(); VidMovie(string &FileName,string &FileDir,AnsiString &FileExt); ~VidMovie(); TImage *Cover; string GetDir() const; string GetName() const; void AssignCover(AnsiString &CoverAdr); float GetWHratio() const; void operator=(const VidMovie &tMovie); bool operator<(VidMovie &tMovie)const; bool operator<=(VidMovie &tMovie)const; bool operator>(VidMovie &tMovie)const; bool operator>=(VidMovie &tMovie)const; bool operator==(VidMovie &tMovie)const; private: string FileDir; string FileName; AnsiString FileExt; string CoverAdr; float WHratio; };
wichtig ist evtl noch zu wissen, das jedes objekt dynamisch erzeugt wird. ich hatte überlegt die klasse einfach von TImage abzuleiten, aber dann weiß ich immernoch nicht wie ich dem TImage sage welche funktion er bei OnClick ausführen soll
vielleicht könnt ihr mir weiter helfen
bis denn, Leiki
-
Hallo,
In diesem Link in der FAQ ist erklärt, wie du das bei einem Array machen würdest. Ist aber im Prinzip das Gleiche.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39206.html
-
super! ..komisch das ich mit der suche nicht darauf gekommen bin
danke
bis denn, Leiki
-
mhh jetzt hab ich aber doch noch ne frage
die Funktion die ich an OnClick übergebe muss ja die Signatur (TObject *Sender) haben.. aber wie finde ich denn jetzt heraus welches object ich da angeklickt habe? mit Sender->ClassName() bekomme ich ja nur den Klassen Namen des Objekts
gibt es eine möglichkeit auf funktionen oder membervariablen des objekts über sender zu zugreifen?
also die problemetik ist folgende ich habe ein haufen bilder aufm schirm und wenn ich auf eines klicke will ich ja mit diesem bild arbeiten, aber im moment weiß ich nur das auf eines der vielen bilder geklickt wurde...
kann ich mir ein eigenes onclick event schreiben bei dem das object selbst als referenz übergeben wird?
-
Na der Sender ist das Objekt, das angeklickt wurde. Caste das TObject einfach in den entsprechenden Datentyp (TImage, wenn ich das richtig sehe).
TImage* AngeklicktesImage = dynamci_cast <TImage*> (Sender); if (AngeklicktesImage) // wenn casten nicht möglich, wird NULL zurückgeben, also darauf prüfen { // mach was mit dem TImage }
-
ah super!
danke ihr habt mir echt weiter geholfenbis denn, Leiki