Ver la Versión Completa : Cxgrid celda readonly
dfarias
02-02-2021, 07:37:43
Quisiera saber si existe alguna forma de poder hacer que algunas celdas de un Cxgrid puedan convertirse, en runtime, a READONLY según el valor del registro. Todo el grid será editable pero si el valor que tiene un determinado registro es x solo podra modificar algunas columnas/celdas.
Neftali [Germán.Estévez]
02-02-2021, 09:11:58
Dentro de la propiedad Properties de las columnas del cxGrid tienes la propiedad ReadOnly, que puedes cambiar en ejecución:
// Por ejemplo en el evento OnDBTableViewFocusedRecordChanged puedes hacer...
CodigoColumn.Properties.ReadOnly := ...
dfarias
02-02-2021, 12:13:05
Si no entiendo mal lo que tu comentas es valido para una columna.
tipo dato 1 dato 2 dato 3 dato 4 dato 5
1 Carga peso 1000 bcn
2 Carga litros 200
J Descarga bultos 4
X Descarga pack amarilla amarilla
1 Carga peso 1000 bcn
2 Carga litros 200
J Descarga bultos 4
Pero lo que intento hacer es que por ejemplo si el valor de tipo es X no deje modificar las celdas amarillas
Pongo la imagen (con columnas) para que se entienda mejor.
https://i.imgur.com/NxcuwTV.png
Neftali [Germán.Estévez]
02-02-2021, 13:21:36
Con un código como este:
procedure TForm1.cxGrid1DBTableView1Editing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
var
ARecordIndex: Integer;
AValue: Variant;
begin
if (AItem.Index = cxGrid1DBTableView1dato3.Index) or (AItem.Index = cxGrid1DBTableView1dato5.Index) then
begin
ARecordIndex := cxGrid1DBTableView1.DataController.FocusedRecordIndex;
AValue := cxGrid1DBTableView1.DataController.Values[ARecordIndex, cxGrid1DBTableView1dato2.Index];
AAllow := (AValue <> 'pack');
end;
end;
Consigues que la columna dato3 y dato5 sean ReadOnly si el valor de dato2 es igual a "pack".
Puedes modificar las condiciones como necesites.
https://i.ibb.co/X5kHxpV/cx-Grid-Read-Only.gif
También se puede hacer de otras formas.
Aquí tienes un ejemplo utilizando el evento OnEditing (https://supportcenter.devexpress.com/ticket/details/t654665/set-readonly-a-cell-according-the-value-of-another-field-of-the-same-row).
dfarias
11-02-2021, 11:26:54
Perdón por no responder antes pero salte a otro proyecto y aqui vuelvo otra vez. Perfecto es justamente lo que no lograba conseguir. Muchas gracias Germán.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.