Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#4

AW: [FMX] Thread läuft nicht weiter

  Alt 18. Okt 2017, 13:10

Delphi-Quellcode:
procedure TLoadingThread.Execute;
begin
  FrmKundenwahl.FilterSetzen;
  Synchronize(FRMKundenwahl.ShowErgebnis);
end;
Delphi-Quellcode:
procedure TfrmKundenwahl.FilterSetzen;
var filt:String;
Begin
  filt := '1=1';

  if TRIM(E_Sortierfeld.Text) <> 'then
    filt := filt + ' AND Sortierfeld like '+AnsiQuotedStr(Trim(E_Sortierfeld.Text), #39)+' +''%''';

  if TRIM(E_Name.Text) <> 'then
    filt := filt + ' AND (Name1 like '+AnsiQuotedStr(Trim(E_Name.Text), #39)+' +''%'''
                     + ' OR Name2 like '+AnsiQuotedStr(Trim(E_Name.Text), #39)+' +''%'')';

// ... noch ein paar weitere solcher abfragen und das öffnen der Querys.
End;
Kein Wunder!

Dur greifst aus dem Thread (Execute) über die Funktion FilterSetzen auf die Komponenten (E_Sortierfeld / E_Name) deines MainThreads zu!

Ändere deinen Thread-Aufruf, so dass Du diese Parameter für den Filter an den Thread übergibst und setzte den Filter IM Thread zusammen, ohne auf Edits und Co zuzugreifen!

Oder Übergebe den kompletten SQL inclusive des Filterstrings an den Thread!

Zusätzlich braucht der Thread sein eigenes Query und kann nicht das Query vom Mainthread verwenden! Denn schließlich wird es dort wohl mit einer Visuellen Komponente verknüpft sein!
  Mit Zitat antworten Zitat