TButtons Click???
-
Das ist richtig. Nutze ich ja auch schon. Jetzt möchte ich in einer anderen Funktion in einer if-Anweisung abfragen ob der Butten gedrückt wurde. Wenn ja, dann soll etwas ausgeführt werden. Weis aber nicht wie.
Raimo
-
derraimo schrieb:
Jetzt möchte ich in einer anderen Funktion in einer if-Anweisung abfragen ob der Butten gedrückt wurde.
Wann? Gerade jetzt?
Oder jemals?
Oder in den letzten 5 Minuten?
-
Versteh ich jetzt nicht dir Fragen. In der Funktion selber möchte ich das abfragen.
void __fastcall TPasswordDlg::btn_ansehenClick(TObject *Sender)
{if (btn_ansehen->OnClick == True)
{}
else
{}
}
-
derraimo schrieb:
In der Funktion selber möchte ich das abfragen.
Eben war es noch eine "andere" Funktion. Was denn nun?
btn_ansehenClick wird doch nur aufgerufen, wenn auf den Button geklickt wurde. Was willst du da noch prüfen?
-
Das ist jetzt zu umständlich zu erklären.
Wie frage ich ab, ob ein Button gedrückt wurde, mit Hilfe einer if-Anweisung?
-
Hallo
Garnicht. Der Event wird immer genau dann ausgelöst, wenn der Buton gedrückt wurde. Du must dann gar nichts mehr überprüfen, sondern nur noch deine Funktion ausführen.
bis bald
akari
-
derraimo schrieb:
Das ist jetzt zu umständlich zu erklären.
Ich glaube, ohne eine Erklärung kommen wir nicht weiter.
Wie frage ich ab, ob ein Button gedrückt wurde, mit Hilfe einer if-Anweisung?
Wann? Gerade jetzt?
Oder jemals?
Oder in den letzten 5 Minuten?Oder ausführlich: Zu irgendeinem Zeitpunkt wird der Button gedrückt. Und zu irgendeinem Zeitpunkt wird deine if-Anweisung ausgeführt. In welchem Zusammenhang müssen diese beiden Zeitpunkte stehen, damit die Bedingung in der if-Anweisung wahr sein soll?
-
Gut ich versuch es genauer zu erklären.
Ich habe einen PasswortDialog. Dort sind 3 Buttons ("OK", "Ansehen" und "Abbrechen")
Bei "OK" möchte ich mich einloggen und etwas ändern.
Bei "Ansehen" möchte ich mir diesen Inhalt nur ansehen, ohne etwas abändern zu können.
Bei "Abbrechen" breche ich das Programm ab.Ich rufe jetzt mit "Ansehen" meine Seite auf, ohne etwas abändern zu können.
Auf dieser Seite gibt es eine Einlogg-Funktion, mit der ich meinen PasswortDialog aufrufe. Dort möchte ich jetzt mich einloggen und die Seite soll wieder aufgerufen werden, aber jetzt kann ich etwas ändern. Und dazu möchte ich jetzt abfragen, ob ein Button gedrückt wurde. Wenn ja dann möchte ich etwas ausführen.Momentan kann ich mich zwar einloggen, aber nichts abändern, weil alles disabled ist.
Jetzt bin ich theoretisch auf der Seite und könnte etwas abändern. Nun möchte ich den Botton "Ansehen" drücken. Jetzt soll unterschiden werden, ob schon "OK" gedrückt wurde, wenn ja, dann soll die Seite erneut aufgerufen werden, aber so dass nicht abgeändert werden kann.
Irgendwie so habe ich mir das gedacht.
Dafür brauche ich ne Abfrage, ob vor geraumer Zeit der Button gedrückt wurde.Raimo
-
benutze im onclick event dynamic_cast. anhand der button-caption kannste dann entscheiden, ob der richtige gedrückt wurde oder eben über den namen, vielleicht auch über position und und und...
gruß gerd
-
Hallo
dann nimm eine Variable, die speichert welchen Button in dem Login gedrückt wurde. Dann kannst du auch im Nachhinein darauf reagieren. Das setzten der Variable passiert aber trotzdem im OnClick-Event der Buttons.
bis bald
akari
-
derraimo schrieb:
Dafür brauche ich ne Abfrage, ob vor geraumer Zeit der Button gedrückt wurde.
Nein, brauchst du nicht. Zumindest wäre es vom Design her Blödsinn. Statt auf eine "UI-Historie" zurückzugreifen, solltest du in deinem Programm die UI-Entscheidung, in dem Moment, in dem sie getroffen wird, in einer Variablen festhalten und dann, wenn du sie brauchst, darauf zurückgreifen.
Du musst nur beim Anzeigen der Seite die Information mitgeben, ob OK oder Ansehen gedrückt wurde.
-
Für so einen Fall würde ich eine globale Integer-Variable setzen die festhält was der Benutzer darf und was nich.
Also z.B.
enum USER_LEVELS { USER_LEVEL_NOTHING = 0, // benutzer darf nix USER_LEVEL_READ, // benutzer darf lesen USER_LEVEL_WRITE // benutzer darf alles }; int userLevel = USER_LEVEL_NOTHING; // standard-mäßig ersma gar nix TForm::btnOKClick(TObject *sender) { userLevel = USER_LEVEL_WRITE; } TForm::btnViewClick(TObject *sender) { userLevel = USER_LEVEL_READ; } TForm::btnCancelClick(TObject *sender) { userLevel = USER_LEVEL_NOTHING; }Und dann fragste beim anzeigen des Frames nur noch ab, welcher Status gerade aktuell ist

Edit:
Also im Prinzip das, was meine 2 Vorredner geschrieben haben
-
Mal 'n Tipp:
Wenn du ein Containerobjekt 'disablest' werden auch alle unergeordneten Objekte disabled.
Was du mit dem Tipp anfängst ist deine Sache