Utilizando el truco 96 de trucomania se logro resolver el problema pero el detalles estaba en que al cerrar el formulario primero hay que cerrar la tabla y luego hacer el Pack y ademas hay que pasar en el nombre del fichero la extension del mismo (.dbf)
Asi fue como lo pudimos lograr, quizas a alguien le pueda servir
Código:
procedure PackDBF(Const ADatabase, ATable : String);
begin
with TTable.Create(nil) do
try
DatabaseName := ADataBase;
TableName := ATable;
TableType := ttFoxPro;
Exclusive := True;
Open;
Check(DbiPackTable(Database.Handle,Handle,'','',True));
finally
Free;
end;
end;
procedure TFormCorrecionCadeca.FormActivate(Sender: TObject);
begin
DataModule1.Cadeca.TableName:= nomcadeca;
DataModule1.Cadeca.Open;
ButtonGuardar.Enabled:= False;
end;
procedure TFormCorrecionCadeca.DSCadecaDataChange(Sender: TObject;
Field: TField);
begin
ButtonGuardar.Enabled:= DataModule1.Cadeca.State in dsEditModes;
end;
procedure TFormCorrecionCadeca.ButtonGuardarClick(Sender: TObject);
begin
DataModule1.Cadeca.Post;
ButtonGuardar.Enabled:= False;
end;
procedure TFormCorrecionCadeca.ButtonSalirClick(Sender: TObject);
begin
DataModule1.Cadeca.Close;
PackDBF('',nomcadeca + '.dbf');
Close;
end;