Una opción es cambiar la línea por un
Eso pararía el resto de procesamiento del Grid.
Pero también puede que cancele otro código que sí te puede interesar.
La opción más correcta para mí es usar una variable privada para controlar la entrada y salida de las celdas.
Sería como esto:
Código Delphi
[-]
TF_Vendes = class(TForm)
...
private
FLastCol: Integer; ...
...
procedure TF_Vendes.FormCreate(Sender: TObject);
begin
FLastCol := -1; end;
procedure TF_Vendes.JvDBUltimGrid1ColExit(Sender: TObject);
begin
If F_ModulDades.LVentas.State in dsEditModes then
begin
if JvDBUltimGrid1.SelectedField=F_ModulDades.LVentasUNIDADES then
begin
F_ModulDades.Stock_Unidades.Close;
F_ModulDades.Stock_Unidades.ParamByName('REFERENCIA').AsString:=F_ModulDades.LVentasREFERENCIA.Value ;
F_ModulDades.Stock_Unidades.Open;
iF F_ModulDades.LVentasUNIDADES.Value > F_ModulDades.Stock_UnidadesSTOCK.Value then
begin
Showmessage ('Estas vendiendo más unidades que el stock, Sólo puedes vender'+
IntToStr(F_ModulDades.Stock_UnidadesSTOCK.Value)+' unidades.');
F_ModulDades.LVentas.Edit;
F_ModulDades.LVentasUNIDADES.Clear;
F_ModulDades.LVentas.Post;
FLastCol := JvDBUltimGrid1.SelectedIndex;
end;
end;
end;
end;
procedure TF_Vendes.JvDBUltimGrid1ColEnter(Sender: TObject);
begin
if FLastCol > -1 then
JvDBUltimGrid1.SelectedIndex := FLastCol;
FLastCol := -1;
end;