Hola dmartinezn.
No está muy en claro en tu mensaje si lo que queres borrar es el contenido de la celda o el contenido del registro en el DataSet. Si es el primer caso, el amigo
escafandra ya te ha dado la solución, si es el segundo podrías hacer:
Código:
/* Pasar registros del DataSet al StringGrid */
void __fastcall TForm1::CargarGridClick(TObject *Sender) {
TStringGrid *Grd = static_cast<TStringGrid*> (StringGrid1);
int f = Grd->FixedRows;
int i;
DataSet->First();
while(!DataSet->Eof) {
for(i=0;i < DataSet->FieldCount; i++) {
Grd->Objects[i][f] = DataSet->Fields->Fields[i];
Grd->Cells[i][f] = DataSet->Fields->Fields[i]->AsString;
};
DataSet->Next();
Grd->RowCount = Grd->RowCount +1;
f++;
}
Grd->RowCount = f;
}
/* Eliminar el registro del DataSet, eliminar la fila del StringGrid */
void __fastcall TForm1::StringGrid1DblClick(TObject *Sender) {
TStringGrid *Grd = static_cast<TStringGrid*>(Sender);
TLocateOptions LO;
TField *F = static_cast<TField*>(Grd->Objects[Grd->Col][Grd->Row]);
if (Grd->Row >= Grd->FixedRows) {
DataSet->Locate(F->FieldName,Grd->Cells[Grd->Col][Grd->Row], LO);
DataSet->Delete();
for(int i = Grd->Row; i< (Grd->RowCount-1); i++)
Grd->Rows[i]->Assign(Grd->Rows[i+1]);
if(Grd->RowCount > (Grd->FixedRows+1))
Grd->RowCount = (Grd->RowCount - 1);
else
Grd->Rows[Grd->FixedRows]->Clear();
}
}
Pero en este caso me parece mas sencillo usar un
TDBGrid...
Saludos.