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 geholfen

    bis denn, Leiki


Anmelden zum Antworten