Dependerá del componente que utilices para crear la tabla, en todo caso solo tienes que hacer un bucle que te lea las columnas de la primera fila (para crear la tabla) y luego otro (esta vez doble) para que recorra las filas y de cada una pase los datos de cada columa a los distintos campos.
El "donde" los pones dependerá del uso de la nueva tabla, si es en la misma aplicación lo suyo será cuando acabes de rellenar el grid, si solo quieres tenerla como resultado lo puedes poner antes de cerrar el form/aplicación (en el "OnClose" del form)
Con un componente TDbf (búscalo en sourceforge.net)
Código Delphi
[-]
procedure CrearNuevaTabla( Grid:TStringGrid; Path, Fichero:string);
var
Tabla:TDbf;
i, j : integer;
strCampo : string;
begin
if FileExists( Path+'\'+fichero+'.dbf' ) then exit;
Tabla :=TDbf.Create( nil );
with Table do begin
Active := false;
Exclusive := false;
FilePathFull := Path;
TableLevel := 4;
TableName := fichero+'.dbf';
end;
Tabla.FieldDefs.Clear;
for i:=1 to 4 do begin
strCampo : = Grid.Cells[i, 0];
with Tabla.FieldDefs do
case i of
1:
Add( strCampo, ftString, 10, false );
2:
Add( strCampo, ftFloat, 0, false );
3:
Add( strCampo, ftInteger, 0, false );
4:
Add( strCampo, ftBoolean, 0, false );
end;
end;
with Tabla do begin
IndexDefs.Clear;
CreateTable;
Exclusive := true;
Open;
AddIndex( fichero, Grid.Cells[i, 0], [ixPrimary, ixUnique] );
Close;
Exclusive := false;
Free;
end;
Luego llamarías al procedimiento (donde creas necesario) tal que así
Código Delphi
[-]
CrearNuevaTabla( miGrid, 'C:\copias', 'copia');
Espero no haberme equivocado con el código y que te sirva de algo.
Saludos:
Salvica