AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TForm.Close

Ein Thema von fwsp · begonnen am 10. Mai 2007 · letzter Beitrag vom 10. Mai 2007
Antwort Antwort
fwsp
(Gast)

n/a Beiträge
 
#1

Problem mit TForm.Close

  Alt 10. Mai 2007, 12:02
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;
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Problem mit TForm.Close

  Alt 10. Mai 2007, 12:11
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
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#3

Re: Problem mit TForm.Close

  Alt 10. Mai 2007, 12:13
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?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Problem mit TForm.Close

  Alt 10. Mai 2007, 12:22
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.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem mit TForm.Close

  Alt 10. Mai 2007, 12:22
Zitat von fwsp:
ich hab keinen ansatz, wie ich das ander machen kann, hast nen tipp für mich?
Ja, ich denke, dass Deine Abprüfung an der falschen Stelle sitzt.
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:
  • Instanz von TfrmCheck generieren
  • eigentlichen Check durchführen und ggf. die erzeugte Instanz füllen
  • wenn Fehler vorliegen, die Instanz anzeigen (mache ich meist modal)
  • dafür sorgen, dass die erzeugte Instanz auch wieder freigegeben wird
und das alles im frmMain

Hope it helps a little bit

onlinekater
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#6

Re: Problem mit TForm.Close

  Alt 10. Mai 2007, 16:10
danke. die idee von onlinekater hört sich ganz gut an. die werd ich umsetzen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz