Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cxgrid celda readonly (https://www.clubdelphi.com/foros/showthread.php?t=95046)

dfarias 02-02-2021 07:37:43

Cxgrid celda readonly
 
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:

Código Delphi [-]
// 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.


Neftali [Germán.Estévez] 02-02-2021 13:21:36

Con un código como este:


Código Delphi [-]
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.




También se puede hacer de otras formas.
Aquí tienes un ejemplo utilizando el evento OnEditing.

dfarias 11-02-2021 11:26:54

Cxgrid celda readonly
 
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.


La franja horaria es GMT +2. Ahora son las 20:17:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi