Ich habe 6 Images, auf die man clicken kann (Spielkarten). In jedem Fall wird aber die gleiche fastcall-Routine aufgerufen:
void _fastcall TForm1::IAClick(TObject* Sender)
Neben vielen Anweisungen, die für alle Images gleich sind, möchte ich auch auf den Sender zugreifen, also z.B. die einmal geklickte Karte unsichtbar machen.
Naiverweise habe ich Sender->Visible=false; probiert, aber da sagt er natürlich, dass Visible keine Eigenschaft von TObject ist.
Irgendwie muss ich dem TObject beibringen, dass es ein TImage ist, aber wie?
Compiler ist von Borland, übrigens.
Vielen Dank im voraus für Eure Inputs!
Hallo Peter,
Du bringst da 2 Sachen ins Spiel, die im Grunde nichts miteinander zu tun haben:
-
__fastcall ist beim Borland eine Direktive an den Compiler, die Funktionsparameter mittels Register zu übergebenm, und nicht auf den Stack zu schreiben. Wirkung: Der Aufruf geht schneller
-
Du kannst dem Sender nicht das Visible setzen, weil des keine Eigenschaft von TObject ist, das hast Du ja schon gemerkt. Abhilfe:
-Das TObject* mittels cast in ein TImage* umwandeln
-schauen ob das geklappt hat
-
dann das Visble auf false setzen, also:
void _fastcall TForm1::IAClick(TObject* Sender)
{
TImage* MyImage = (TImage*)Sender;
if (MyImage)
{
MyImage->Visible = false;
}
Viel Erfolg,
Hans
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Hans!
Vielen Dank, es hat super funktioniert!
Eine Zusatzfrage: Einige Dinge sind doch nicht gleich zu behandeln bei jedem Image. Jetzt habe ich einfach in den Hint von jedem Image 0,1,2,3,4,5 reingeschrieben und kann jetzt über MyImage->Hint erkennen, um die wievielte Karte es sich handelt.
Ist das ok, oder gibt es eine bessere Idee?
LiGr, Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Peter,
super,das es geklappt hat.
Um Deine unterschiedlichen Images zu unterscheiden, kannst Du den Hint solange benutzen, wie Du kein Bubblehelp anzeigen willts, also das ShowHint der Images auf False steht.
I.a. wird die Eigenschaft Tag benutzt, um unterschiedliche Instanzen zu unterscheiden.
Gruss
Hans
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]