¿ y si enlazas al dbgrid con el dataset a la hora del diseño? ¿funciona? ¿porque los asignas en tiempo de ejecución?
Estas dos líneas hacen los mismo, yo diría que quitaras una:
Código Delphi
[-] Datamodule4.ADOQuery3.Active:=true;
Datamodule4.ADOQuery3.Open;
y sigo teniendo mis dudas en la forma en que enlazas el dbgrid con la consulta.