Yo tengo un grid que me sirve para administrar 4 tablas simultáneamente con Firebird. Lo único que tienes que hacer es darle el sql al Query, abrirlo y despues puedes llamar a dbgrid.Columns.RebuildColumns para que se actualice las columnas, los anchos, etc.
En lugar de pasar un entero a la funcion Cargar(consulta :integer) usa constantes, o incluso Tipos enumerados, te saldrá un código más descriptivo:
Código Delphi
[-]
type
TTipoConsulta = (tcClientes= 0, tcProductos, tcFacturas);
var ConsultaSql = Array [TTipoConsulta] of String = (' SELECT * FROM CLIENTES',
'SELECT UNO, DOS FROM PRODUCTOS',
'SELECT TRES, CUATRO FROM FACTURAS');
procedure Cargar( TipoDeConsulta : TTipoConsulta);
begin
case TipoDeConsulta of
tcClientes: ....
tcProductos: .....
tcFacturas: ....
else
raise exception.Create('No está controlado esta sql en este procedimiento');
end;
query1.Sql.Text := Consultasql[TipoDeConsulta];
end;