Hola ElDuc, con componentes puedes utilizar los procedimientos GetTableNames, GetFieldNames de tu componente de base de datos (Database, ADOConnection, SQLConnection....)
Código Delphi
[-]
var
slTablas : TStringList;
begin
slTablas := TStringList.Create;
Try
Database1.GetTableNames(slTablas);
ListBox1.Items.Assign(slTablas);
Finally
slTablas.Free;
end;
var
slCampos : TStringList;
begin
slCampos := TStringList.Create;
Try
Database1.GetFieldNames(ListBox1.Items[ListBox1.ItemIndex],slCampos);
ListBox2.Items.Assign(slCampos);
Finally
slCampos.Free;
end;
Dependiendo del componente que uses tienes mas opciones, por ejemplo con dbExpress puedes obtener los indices, procedimientos.....
Si quieres hacerlo con consultas, como te dice Casimiro depende de la Base de datos.
Saluditos