Cita:
Empezado por Oscar Guzmán
...
Como harían Uds. si tuvieran que validar que el mouse no pudiera modificar el una celda, o tal vez como deshabilitar el mouse mientras que estoy dentro del dbgrid? cualquier solución es válida mientras el mouse no me altere lo que tengo en el dbgrid
|
Hola Oscar.
Un modo puede ser usar el evento
OnSetText del campo en cuestión.
Un ejemplo rápido, supongamos que tenemos cuatro campos:
Descripcion,
Precio,
Cantidad y
Subtotal.
Y en el
TDBGrid las columnas relacionadas a
Descripcion,
Precio y
Subtotal con su propiedad
ReadOly =
True, de modo que sólo sea posible ingresar datos en la columna asociada al campo
Cantidad.
Si nos interesara que el campo
Subtotal sea igual a
Cantidad *
Precio luego de ingresada la cantidad, podemos hacer:
Código Delphi
[-]
...
implementation
procedure TForm1.DataSetCantidadSetText(Sender: TField;
const Text: String);
begin
with DataSet do
begin
FieldByName('Cantidad').AsFloat := StrToFloat(Text);
FieldByName('Subtotal').AsFloat := FieldByName('Cantidad').AsFloat *
FieldByName('Precio').AsFloat;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DataSet.FieldByName('Cantidad').OnSetText := DataSetCantidadSetText;
...
end;
...
De este modo cuando se abandone una celda de la columna "cantidad" por el motivo que sea, se realizará el cálculo.
Saludos.
