Danke für den Tip, ich warte ja in dem HauptThread auf das Ende des QueryThreads und mache dort zumindest nix Vordergründiges.
Es scheint aber so zu sein, wie Du es vermutet hast, das Grid reagiert im Hintergrund auf Änderungen in der
Query.

Ich habe es daher vorher getrennt und hinterher wieder verbunden.
Der Spuk mit dem Error-1400 hat zumindest bei meinen Tests jetzt ein Ende gefunden.
Code:
// --------------
ibds1.DataSet := nil;
gridV1.DataController.DataSource := nil;
// --------------
tQ := TiboqThread.create( IBQ1 );
tQ.FreeOnTerminate := true;
tQ.Resume;
while ( WaitForSingleObject( tQ.Handle, 100 ) = WAIT_TIMEOUT ) and
( A_Halt.Tag = 0 )
do begin
Application.ProcessMessages;
end;
if LastErrCode = 0 then begin
// Alles OK
// --------------
ibds1.DataSet := IBQ1;
gridV1.DataController.DataSource := IBDS1;
// --------------
GridV1.ClearItems;
GridV1.DataController.CreateAllItems;
end else begin
FehlerAusgabe1( LastErrText );
end;
tQ.Free;
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.