![]() |
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: |
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. |
Re: Form schliesst nicht :(
Was heisst das ? was soll ich jezt ändern :wiejetzt:
|
Re: Form schliesst nicht :(
Du sollst wohl erst deinen Query schließen.
|
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; |
Re: Form schliesst nicht :(
Eventuell liegt es daran, dass du noch eine Anweisung nach Close ausführst?
|
Re: Form schliesst nicht :(
Diese lästige Erscheinung habe ich aber im Login form auch und da hab ich nichts nach Close
Delphi-Quellcode:
:wall:
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; |
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:
... ich bekomme die Meldung "Hallo"! :gruebel:
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 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; |
Re: Form schliesst nicht :(
Wieso das Hauptform.close trifft ja erst dann ein wenn Version ist nicht 2.0
|
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:28 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