Ver Mensaje Individual
  #3  
Antiguo 21-01-2024
Delphi01 Delphi01 is offline
Miembro
 
Registrado: nov 2015
Ubicación: Barcelona,España
Posts: 68
Reputación: 9
Delphi01 Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
Buenas tardes a todos.


He estado mirando en el foro por si había un caso similar al mio y no he visto nada.
Tengo este código en el OnColExit del JVDBGrid


Código Delphi [-]
procedure TF_Vendes.JvDBUltimGrid1ColExit(Sender: TObject);
begin
        If F_ModulDades.LVentas.State in [dsEdit, dsInsert] then
                begin
                if JvDBUltimGrid1.SelectedField.Fieldname='UNIDADES' 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;
                                JvDBUltimGrid1.SelectedField:=F_ModulDades.LVentasUNIDADES;
                        end;
                end;
        end;
end;


Lo que me pasa es que la linea


JvDBUltimGrid1.SelectedField:=F_ModulDades.LVentasUNIDADES;


es como si no estuviera.


Tambien he probado con


JvDBUltimGrid1.SelectedIndex:=1;


Y tampoco consigo que al hacer el clear, el foco vuelva al campo Unidades para entrar la nueva cantidad.


Como siempre agradezo vuestro tiempo y si alguien tiene una ayudita, pues bien recibida.


Saludos


Josep
Código:
procedure TF_Vendes.JvDBUltimGrid1ColExit(Sender: TObject);
begin
  if F_ModulDades.LVentas.State in [dsEdit, dsInsert] then
  begin
    if JvDBUltimGrid1.SelectedField.FieldName = 'UNIDADES' 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('Estás vendiendo más unidades de las que hay en stock, solo puedes vender ' + IntToStr(F_ModulDades.Stock_UnidadesSTOCK.Value) + ' unidades.');
        
        F_ModulDades.LVentas.Edit;
        F_ModulDades.LVentasUNIDADES.Clear;
        F_ModulDades.LVentas.Post;
        
        JvDBUltimGrid1.SetFocus; // Establecer foco en JvDBUltimGrid1 (puedes intentar utilizar JvDBUltimGrid1.SetFocusCell(ACol, ARow) si es necesario)
        JvDBUltimGrid1.SelectedIndex := JvDBUltimGrid1.Columns.IndexOf('UNIDADES'); // Establecer el índice de columna seleccionada
        
        // Desactivar y reactivar el control JvDBUltimGrid1
        JvDBUltimGrid1.Enabled := False;
        JvDBUltimGrid1.Enabled := True;
      end;
    end;
  end;
end;
Responder Con Cita