Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form schliesst nicht :( (https://www.delphipraxis.net/15241-form-schliesst-nicht.html)

bundy 24. Jan 2004 20:59


Form schliesst nicht :(
 
Hallo Leute ,
ich habe folgendes Problem:

Ich arbeite mit Mysql, auf einem Form habe ich einen Mysql Query, ich aktiviere den Query und nachher schliesst sich das Form wieder,aber wenn die Abfrage etwas länger dauert dann schliesst sich das Form nicht mehr.
Mann kann das Form auch nicht mit X schliessen, wobei aber die Editfelder die auf dem Form liegen noch immer funktionieren, auch die Button funktionieren, nur schliessen kann mann es nicht.
Hat da wer eine Ahnung was da los ist :firejump:

Robert_G 24. Jan 2004 21:18

Re: Form schliesst nicht :(
 
Das hatte ich mal bei einem MDIChild mit einer Query in einem Thread, hatte sich als ein Deadlock vom Querythread und einem anderen herausgestellt. :oops:
Die Anwendung lief scheinbar normal weiter, alle anderen Childforms haben weiter funktioniert wie sie es sollten.

Ich habe es gelöst indem ich verhinderte, dass beide Threads auf gleiche Variablen zugreifen, so konnten sie sich nicht gegenseitig in einen Deadlock versetzen.

bundy 24. Jan 2004 21:21

Re: Form schliesst nicht :(
 
Was heisst das ? was soll ich jezt ändern :wiejetzt:

Luckie 24. Jan 2004 21:25

Re: Form schliesst nicht :(
 
Du sollst wohl erst deinen Query schließen.

bundy 24. Jan 2004 21:31

Re: Form schliesst nicht :(
 
Der Query liegt aber in einen Datamodule.
Es handelt sich hierbei um ein Suchform das nach eingabe der Suchkriterien wieder schliessen soll.

Delphi-Quellcode:
procedure Tsuche_Nachname_form.SpeedButton1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
  begin
  DataModule_Kunden.mySQLQuery1.SQL.Clear;
  DataModule_Kunden.mySQLQuery1.SQL.Text:='select * from kunden where Installationsfirma like"'+ Edit2.Text+'%" and Nachname like "%'+ Edit1.Text+'%"';
  DataModule_Kunden.mySQLQuery1.Active := true;
  close;
  hauptform.dxTabSheet8.Show;
  end;
if CheckBox1.Checked=false then
  begin
  DataModule_Kunden.mySQLQuery1.SQL.Clear;
  DataModule_Kunden.mySQLQuery1.SQL.Text:='select * from kunden where Installationsfirma like"'+ Edit2.Text+'%" and Nachname like "'+ Edit1.Text+'%"';
  DataModule_Kunden.mySQLQuery1.Active := true;
  close;
  hauptform.dxTabSheet8.Show;
  end;
end;

Luckie 24. Jan 2004 21:34

Re: Form schliesst nicht :(
 
Eventuell liegt es daran, dass du noch eine Anweisung nach Close ausführst?

bundy 24. Jan 2004 21:46

Re: Form schliesst nicht :(
 
Diese lästige Erscheinung habe ich aber im Login form auch und da hab ich nichts nach Close
Delphi-Quellcode:
procedure TLogin_Form.SpeedButton1Click(Sender: TObject);
begin
mySQLDatabase1.Host:=Edit3.Text;
mySQLDatabase1.UserName:=Edit1.Text;
mySQLDatabase1.UserPassword:=Edit2.Text;
mySQLDatabase1.DatabaseName:='bkf';
mySQLDatabase1.Connected:=true;
if mySQLDatabase1.Connected = True then
        Begin
        Hauptform.Label106.Caption:=DBText4.Caption;
        Hauptform.Label107.Caption:=DBText5.Caption;
        Hauptform.Label106.Visible:=true;
        Hauptform.Label107.Visible:=true;
        Hauptform.Label105.Visible:=true;

        Hauptform.StatusBar1.Panels.Items[0].Text:='Benutzer: '+ DBText4.Caption+' '+DBText5.Caption;

        Hauptform.StatusBar1.Panels.Items[1].Text:='Angemeldet um: '+TimeToStr(Time);

        Hauptform.StatusBar1.Panels.Items[2].Text:='Status: '+DBText2.Caption;

        Hauptform.StatusBar1.Panels.Items[3].Text:='Vers.: 2.0';

        // Version überprüfen
        mySQLQuery_vers.SQL.Clear;
        mySQLQuery_vers.SQL.Text:='select * from Vers';
        mySQLQuery_vers.Active:=true;
        if mySQLQuery_versVersionsnummer.Text <>'2.0' then  //Versionsnummer
         begin
         ShowMessage('Version überprüfen...Update anfordern'+#13+#13+'neue Version: '+mySQLQuery_versVersionsnummer.Text);
         Hauptform.Close;
         end;

        end;

close;
end;
:wall:

Robert_G 24. Jan 2004 22:02

Re: Form schliesst nicht :(
 
Ich habe gerade mal was ausprobiert.
Ich dachte nach einem Form.Close wird kein Code mehr ausgeführt, aber ...
(Form2 ist ein MDIChild)
Delphi-Quellcode:
Procedure TForm2.Button1Click(Sender: TObject);
Begin
  Edit1.Text := 'Klick';
  Close;
  Edit2.Text := 'Hallo';
  ShowMessage(Edit2.Text);
End;

Procedure TForm2.FormClose(Sender: TObject; Var Action: TCloseAction);
Begin
  Action := caFree;
End;
... ich bekomme die Meldung "Hallo"! :gruebel:
(Ich konnte deinen Bug aber nicht reproduzieren)


Luckie, jetzt ist deine Delphi-Erfahrung gefragt: Wird beim Aufruf von Close so etwas wie ein Thread gestartet, der nach Ausführung des Codes das Form schließt :?:


p.s.: @Bundy, im Loginform hast du auch Code nach dem Close:
Delphi-Quellcode:
        if mySQLQuery_versVersionsnummer.Text <>'2.0' then  //Versionsnummer
         begin
         ShowMessage('Version überprüfen...Update anfordern'+#13+#13+'neue Version: '+mySQLQuery_versVersionsnummer.Text);
         // Wenn das Hauptform geschlossen wird, werden alle Formulare geschlossen...
         Hauptform.Close;
         end;

        end;
  // ... hier versuchst du nochmal zu schließen
  close;
end;

bundy 24. Jan 2004 22:09

Re: Form schliesst nicht :(
 
Wieso das Hauptform.close trifft ja erst dann ein wenn Version ist nicht 2.0

Robert_G 24. Jan 2004 22:18

Re: Form schliesst nicht :(
 
Wenn die Version 2.0 ist hast du ja recht...

Hast du im OnClose auch Code stehen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr.
Seite 1 von 2  1 2      

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