Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Onclose genauern definieren


Maisinator - Sa 11.07.09 18:45
Titel: Onclose genauern definieren
hallo,

ich habe eine procedure zum überprüfen einer id geschrieben. nun möchte ich, dass wenn man das einabefenster für die id einfach schließt (per X oder Alt + F4) auch das hauptformular geschlossen wird. wenn die procedure allerdings erfolgreich war und das eingabefenster automatisch geschlossen werden soll, soll natürlich das hauptformular bestehen bleiben...

wie kann ich das machen????


jakobwenzel - Sa 11.07.09 18:48

Du musst dir merken obs erfolgreich war und nur wenn nicht das Hauptformular schließen.


ffgorcky - Sa 11.07.09 20:19

Also ich meine, das müsste dann doch so gehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
Passwort:='Wurde abgebrochen!';
Passwort := InputBox('Passwort erwartet!''Bitte hier das Passwort eingeben!'+#13#10+
                                          'Sonst gehts hier nicht weiter!:', Passwort);
if Passwort='Wurde abgebrochen!' then
   Application.Terminate;

- Oder? Liege ich da gerade gewaltig daneben?


jaenicke - Sa 11.07.09 20:22

user profile iconMaisinator hat folgendes geschrieben Zum zitierten Posting springen:
ich habe eine procedure zum überprüfen einer id geschrieben. nun möchte ich, dass wenn man das einabefenster für die id einfach schließt (per X oder Alt + F4) auch das hauptformular geschlossen wird
Wie das geht, siehst du ja in dem Beispiel [http://www.delphipraxis.net/post1057839.html#1057839], das ich vorhin geschrieben habe. ;-)
// EDIT: Link vergessen :oops:

Weise bei dem Button zum Bestätigen ModalResult zu, z.B. auf mrOk, dann kannst du den Rückgabewert von ShowModal direkt darauf prüfen. Wurde das Fenster mit einem anderen Button oder dem X oder so geschlossen, hat ModalResult nicht den Wert, der bei deinem Bestätigen-Button drin steht.


Maisinator - So 12.07.09 10:11

ich hab das problem mit ner weiteren stringlist gelöst. wenn die procedure überprüfen erfolgreich war, wird ne 0 reingeschrieben, wenn sie fehlgeschlagen ist, eine 4. und bei onclose lass ich dann einfach überprüfen, ob eine 4 in der stringlist steht...

Funktioniert 1A!!!!


jaenicke - So 12.07.09 10:21

Und wozu brauchst du da eine TStringList? Warum nicht eine einfache Integer-Variable oder Boolean-Variable oder so? ;-)


Maisinator - Mo 13.07.09 20:57

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und wozu brauchst du da eine TStringList? Warum nicht eine einfache Integer-Variable oder Boolean-Variable oder so? ;-)


weil ich mich damit nicht so auskenne???


Xentar - Mo 13.07.09 21:23

Was muss man sich da auskennen?

Delphi-Quelltext
1:
If MyInteger = 0 then ......                    


Maisinator - Di 14.07.09 09:45

ok, probier ich beim nächsten mal ^^


ffgorcky - So 19.07.09 10:06

Noch einfacher wäre es doch, wenn Du eine solche Form-Variable definierst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Form
...
var
  erfolgreichEingeloggt:boolean;
begin
//hier folgen dann Deine Prozeduren

dann könntest Du doch zum Beispiel immer einfach nur abfragen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if erfolgreichEingeloggt then
           begin
           //und hier macht er dann was Du im Fall des erfolgreichen Einloggens direkt machen (lassen) möchtest
           end
{und evtl. noch:}
        else
           begin
           //und hier dann eben noch evtl. die neue Passwort-Eingabe-Aufforderung
           end;

Wobei Du natürlich hinter das das die If-Abfrage abschließende end ein ; setzen musst, wenn Du kein else dahintersetzt - aber ich denke mal dass Du das doch eigentlich auch so schon längst weißt...