Natrafiłem na problem którego nie potrafię prawidłowo obejść. Tak jak na komponentach TADOTable nie ma problemu z implementacją relacji master - detail z racji istnienia pól MasterSource, MasterFields tak TADOQuery jest tego pozbawione. Z samym zapytaniem nie mam kompletnie problemu tylko z właściwym odświerzaniem tabeli detail:

Master.IDMaster -> Detail.MasterID;

Zapytanie z parametrem:

/* ID = DM.ADOMaster.FieldByName('IDMaster').AsInteger */
SELECT * FROM Detail WHERE Detail.MasterID = :ID;

Przeszukałem kilkanaście wątków na kilkunastu forach od for borlanda w dół i wszędzie info jest na temat jak zrobić zapytanie. Nie ma słowa jak to oprogramować aby w czasie rzeczywistym były widoczne zmiany.

Przeglądając dokumentację dla TADOQuery natrafiłem na zdarzenie OnMoveComplete. Wg helpa jest wywoływane w momencie zmiany pozycji pointera - czyli jak znalazł. Problem jest, że obsługa zdarzenia jest w TDataModule i dostaję wyjątek, że nie znaleziono pola. Postanowiłem więc przenieść cieżar tego do OnDrawColumnCell TDBGrida. Problem w tym, ze działa, ale nie do końca. Detail wyświetla to co ma ale dopiero po tym jak ustawię kursor na rekord i kliknę go dwa razy. Tu więc problem. Jak zrobić odświerzanie Detail.