Pues no, no se entiende
En tu código dice:
Código Delphi
[-]If (SG.Cells[1,SG.Row] = '') or (SG.Row = '0') Then
Begin
Application.MessageBox('No se puede eliminar esta fila','Mensaje');
Exit;
End
Else
begin
SG.DeleteRow(SG.Row);
end;
Resumiendo: si la celda está vacía o tiene un cero, saca un mensaje y sale. NO borra.
Si tiene algo escrito distinto de '' y distinto de cero, (que por cierto tendrás que poner el cero entre comillas porque el stringgrid sólo almacena cadenas)
entonces sí la borra.
¿Y cuál es el problema entonces?