Erstmal danke für das rege Interesse und
hier mal der momentane Code, der nicht funzt wie gesagt Quelle = TADOQuerry:
Code:
procedure TSelector.acOpenExecute(Sender: TObject);
begin
if Quelle.State in [dsedit,dsinsert] then Quelle.Post;
Quelle.Close;
pnltab.Caption:= 'Bitte warten';
self.Repaint;
Quelle.SQL.Clear;
Quelle.SQL.Text:= Memo1.Lines.Text;
try
self.Enabled:=false; //Disabled
Application.ProcessMessages;
Quelle.Open;
Application.ProcessMessages;
pnltab.Caption:= '';
except
on e:
exception do
begin
pnltab.Caption:= e.message;
Application.ProcessMessages;
self.Enabled:=true;
end;
end;
Application.ProcessMessages;
self.Enabled:=true; //enabled
end;
Mit self.enabled scheints da noch komischer zu werden. Manchmal (nicht immer) wird die Anzeige der Daten im Grid nicht aktualisiert. Erst wenn man aus dem Fenster klickt, dann wieder rein, ist es auf einmal da. Luckie scheint recht zu haben, dass das disablen des ganzen Forms "gefährlich" ist.
Hab Alternativ auch mal nur einen Button disabled und den dann gedrückt während die
Query lief. Nachdem mir die Daten angezeigt wurden, ging das Fenster auf, dass der Button öffnen sollte.
Was hat es mit der Botschafterwarteschlange auf sich. Kann man da was machen?
Das benutzen eines Threads überleg ich noch, allein um dem User mit einem Fortschrittsbalken Aktivität vorzugaukeln. Das sollte aber unabhängig von dem jetzigen Problem sein, dass ich erst mal gelöst haben will, nämlich das ignorieren von User-Aktionen während die Daten aus der Datenbak geholt werden.
Jumpy