Erkennen, welcher Button angeklickt wurde
-
Ich habe auf meinem Form zwei Buttons. Damit möchte ich jeweils eine Methode aufrufen, die dann abhängig vom geklickten Button unterschiedliche Aktionen ausführt.
Pseudocodebeispiel:Button1 und Button2
if (Button1 geklickt)
{
Mache Aktion 1
}
else if (Button2 geklickt)
{
Mache Aktion 2
}Wie lautet das "Button1 geklickt" richtig aufgelöst?
-
wieso nimmst du nicht die spezifischen OnClick() ereignisse?
weitere möglichkeit wäre, in deiner funktion den sender auszuwerten, und zB auf den Name des Buttons zu prüfen und die gewünschte aktion durchführen, dazu findest du etwas in der FAQ
-
Ich habs jetzt auf die herkömmliche Weise gelöst:
Beim OnClick des jeweiligen Buttons rufe ich eine Methode auf, an die ich manuell eine Kennung übergebe, z.B. als Ansistring. Sender habe ich also hier nicht benutzt.
-
Hallo
Das läßt sich trotzdem leicht in einer Eventfunktion zusammenfassen
if (Sender == Button1) { Mache Aktion 1 } else if (Sender == Button2) { Mache Aktion 2 }bis bald
akari
-
oder gand einfach
1. doppelclick auf den ersten Button
2. Code einfügen
3. doppelclick auf den ersten Button
4. Code einfügenmfg corvin
-
Sehr umfrangreiche Sache wenn man mal 10 Buttons hat die alle sehr ähnliche Funktionen haben, da fällt es leichter in der aufzurufenden Funktion selbst festzustellen von wem der Aufruf kommt.
-
Dann ist es eleganter, den Tag-Properties der Buttons unterschiedliche zuzuweisen und eine Routine wie die folgende zu schreiben:
void TMainForm::ButtonCollectionClick (TObject* Sender) { TComponent* sc = dynamic_cast <TComponent*> (Sender); if (!sc) // kein TComponent return; switch (sc->Tag) { case 1: // Button1 ... break; case 2: // Button2 ... break; ... } }