Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Formular schließt nicht mehr (https://www.delphipraxis.net/81092-formular-schliesst-nicht-mehr.html)

bundy 20. Nov 2006 21:22


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:
fmSuche.showmodal;
Dauert die SQL Anfrage länger, weil die Suchbedingung viele Datensätze aus gibt, schließt das SuchForm nicht mehr.
Auch nicht wenn mann auf das X klickt.

Die Procedure die ich im fmSuche aufrufe sieht ca so aus.
Delphi-Quellcode:
procedure suche;
begin
SQLQuery.sql.text:='select * from .......where Nachname=.........usw'
SQLQuery.active:=true;
fmSuche.close;
end;
Dieses Eigenschaft trit nur dann ein, wenn ich das Programm nicht via Delphi anwerfe allso STRG+F9.
Mach ich da was falsch ?
Muss ich da mit try......finally arbeiten ?
Kennt jemand diese Problem ?


lg
Bundy

mkinzler 20. Nov 2006 21:24

Re: Formular schließt nicht mehr
 
Ein moadle Form schließt man durch Setzen von .ModalResult und nicht durch .Close[b].

bundy 20. Nov 2006 21:30

Re: Formular schließt nicht mehr
 
aber warum funktioniert es wenn die suche kurz gehalten wird . nur Ineresse halber. ist irgedwie unlogisch

mkinzler 20. Nov 2006 21:32

Re: Formular schließt nicht mehr
 
Ich vermute mal, das währrend der Ausführung der Abfrage nicht auf Messages reagiert wird.

EDatabaseError 20. Nov 2006 21:33

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

bundy 20. Nov 2006 21:34

Re: Formular schließt nicht mehr
 
ok danke dir :thumb:
ich werd das mal mit .modalresult testen.

lg
Bundy

bundy 20. Nov 2006 21:47

Re: Formular schließt nicht mehr
 
Aus der Delphi Hilfe hab ich folgendes

Zitat:

Der Standardwert von ModalResult ist mrNone. Wenn Sie der Eigenschaft einen anderen Wert zuweisen, wird das Formular geschlossen, und der Wert wird zum Rückgabewert des ShowModal-Funktionsaufrufs, mit dem das Formular angezeigt wird.
das heisst ich mach das so :?:

Delphi-Quellcode:
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;
also das Form schließt so. Nur ist der Einsatz der richtige ?

lg
Bundy

mkinzler 21. Nov 2006 05:49

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 ...

bundy 21. Nov 2006 17:42

Re: Formular schließt nicht mehr
 
danke für die Info :thumb:

hoika 21. Nov 2006 17:51

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 23:00 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