![]() |
Formular schließt nicht mehr
Hy @ All DP´ler
Ich habe eine Client Server Anwendung. Nun habe ich einen schönes Such Formular erstellt, wo es möglich ist nach gewissen Kriterien zu suchen, wie Name, Strasse usw. Das funktioniert soweit ganz prima, bis auf eine winzige und stöhrendes Problem. Ich öffne das Form mittels
Delphi-Quellcode:
Dauert die SQL Anfrage länger, weil die Suchbedingung viele Datensätze aus gibt, schließt das SuchForm nicht mehr.
fmSuche.showmodal;
Auch nicht wenn mann auf das X klickt. Die Procedure die ich im fmSuche aufrufe sieht ca so aus.
Delphi-Quellcode:
Dieses Eigenschaft trit nur dann ein, wenn ich das Programm nicht via Delphi anwerfe allso STRG+F9.
procedure suche;
begin SQLQuery.sql.text:='select * from .......where Nachname=.........usw' SQLQuery.active:=true; fmSuche.close; end; Mach ich da was falsch ? Muss ich da mit try......finally arbeiten ? Kennt jemand diese Problem ? lg Bundy |
Re: Formular schließt nicht mehr
Ein moadle Form schließt man durch Setzen von .ModalResult und nicht durch .Close[b].
|
Re: Formular schließt nicht mehr
aber warum funktioniert es wenn die suche kurz gehalten wird . nur Ineresse halber. ist irgedwie unlogisch
|
Re: Formular schließt nicht mehr
Ich vermute mal, das währrend der Ausführung der Abfrage nicht auf Messages reagiert wird.
|
Re: Formular schließt nicht mehr
Jup kann ich bestätigen - oder
das Programm arbeitet noch in einer repeat schleife und man versucht es zu beenden - negativ tobi |
Re: Formular schließt nicht mehr
ok danke dir :thumb:
ich werd das mal mit .modalresult testen. lg Bundy |
Re: Formular schließt nicht mehr
Aus der Delphi Hilfe hab ich folgendes
Zitat:
Delphi-Quellcode:
also das Form schließt so. Nur ist der Einsatz der richtige ?
procedure TfmSucheStrasse.cxButton1Click(Sender: TObject);
begin with ClientDataModule do begin tbl_blocks.Active:=false; tbl_blocks.Params.ParamByName('parPlz').Value:=cxTextEdit1.Text; tbl_blocks.Params.ParamByName('parStrasse').Value:=cxTextEdit2.Text; tbl_blocks.Params.ParamByName('parHausNr').Value:=cxTextEdit3.Text; tbl_blocks.Params.ParamByName('parStiege').Value:=cxTextEdit4.Text; tbl_blocks.Active:=true; end; cxTextEdit1.Clear; cxTextEdit2.Clear; cxTextEdit3.Clear; cxTextEdit4.Clear; ModalResult:=mrOk //<<<<<<<<--------- end; lg Bundy |
Re: Formular schließt nicht mehr
Ja, und der Wert den du ModalResult übergibst kann du auch auswerten. D.H du kannst verschiedene Werte zurückgeben.
z.B.
Delphi-Quellcode:
if fmSucheStrasse.ShowModal = mrOk then ...
|
Re: Formular schließt nicht mehr
danke für die Info :thumb:
|
Re: Formular schließt nicht mehr
Hallo,
auch Close setzt einen ModalResult. Das Problem ist ja, dass das Query.Active so lange dauert, und nicht auf Nachrichten reagiert wird. Falls deine Db Top(Limit) kennt, benutze dass, um die Anzahl der Suchergebnisse zu reduzieren. Vielleicht ist ja auch was faul an der Db (fehlende Indizes), oder du lädst mehr Daten als angezeigt werden (select *) Ansonsten bleibt nur das Auslagern in einen eigenen Thread, den kann man ja abschiessen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 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