![]() |
Problem mit TForm.Close
Hallo,
ich hab ein kleines Problem: ich habe ein Form, die anzeigen lasse. Im OnShow wird folgender Code ausgeführt. Bei Erfolg soll sich die Form Selbst schließen. Jedoch Passiert das nicht. Im Debugger kann ich sehen, das GoodSyntax True ist, er geht in in den If-Teil. Bearbeitet wohl auch das Close. Aber es schließt sich nicht. Kann mir jmd helfen?
Delphi-Quellcode:
procedure TfrmCheck.FormShow(Sender: TObject);
var i: Integer; begin BtnOK.Enabled := False; ProgBar.Max := frmMain.memEdit.Lines.Count; frmMain.GoodSyntax := True; ProgBar.Position := 1; memError.Clear; for i := 0 to frmMain.memEdit.Lines.Count - 1 do begin if not frmMain.RegisterMaschine.CheckSyntax(i) then begin frmMain.GoodSyntax := False; memError.Lines.Add('Fehler in Zeile: ' + IntToStr(i + 1)); end; ProgBar.Position := i + 1; Application.ProcessMessages; end; BtnOK.Enabled := True; if frmMain.GoodSyntax then // GoodSyntax ist True begin Close; //Wird nicht ausgeführt end; end; |
Re: Problem mit TForm.Close
In der OnShow-Routine kannst Du das Fenster nicht schließen, weil es erst danach angezeigt wird. Leider gibt es kein OnShowQuery-event, bei dem man sich entscheiden kann, ob das Fenster wirklich angezeigt werden soll.
Grüße, Messie |
Re: Problem mit TForm.Close
ich hab keinen ansatz, wie ich das ander machen kann, hast nen tipp für mich?
//Edit1 ist es elegant das mit nem timer und ner boolschen variable zu lösen? |
Re: Problem mit TForm.Close
Am Saubersten fände ich eine Methode TfrmCheck.TryShow: Boolean, die du statt Show aufrufst und die dann bei CheckSyntax = false überhaupt erst gar nicht Show aufruft - ein Fenster, das niemals geöffnet wird, muss auch nicht durch merkwürdige Methoden geschlossen sein. Wirklich sauber ist das Ganze aber nicht, denn schon die Abhängigkeiten deiner zwei Forms untereinander finde ich nicht wirklich sauber.
|
Re: Problem mit TForm.Close
Zitat:
Wenn ich Deinen Code richtig interpretiere, überprüfst Du in Deinem Eventhandler, ob die Angaben in frmmain korrekt sind. Sind diese nicht korrekt, dann soll das Fenster sichtbar sein. Diese Prüfung gehört nicht in dieses Formular, sondern in das frmmain. Ich gehe davon aus, daß Du von dort aus das Show von frmCheck aufrufst. Ich würde so vorgehen:
Hope it helps a little bit onlinekater |
Re: Problem mit TForm.Close
danke. die idee von onlinekater hört sich ganz gut an. die werd ich umsetzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz