ok, te recomendaria que en vez de un AdoQuery, pusieras dos y por ende dos datasource, en el primer ADOQuery, puedes poner la consulta:
Código SQL
[-]
Select id_libro, titulo, genero, id_editorial, etc from libros
Esto acarrearia todos los libros de a la DBGrid1, en el segundo ADOQuery pondrias:
Código SQL
[-]
Select id_editorial, nombre, localidad, país, etc from editoriales
Where id_editorial = :id_editorial
Ahora en el evento Click de tu DBGrid1 pon este codigo:
Código Delphi
[-]
ADOQuery2.Close;
ADOQuery2.ParamByName('id_editorial').Value := AdoQuery1.FieldByName('id_editorial ').AsInteger;
ADOQuery2.Open;
Y claro todos los objetos deben estar enlazados correctamente:
http://avt7ya.bay.livefilestore.com/...u/q.jpg?psid=1

Espero te sea de utilidad