19.10.2022, Vladimír Klaus, navštíveno 469x

Delphi

Při práci s TcxGrid, resp. TcxGridView mě velmi často trápilo to, že není možné při "CellSelect=false" editovat údaje. Je to ale pochopitelné - buňka nejde vybrat, tak jak bych ji mohl editovat, že? Ale když povolím výběr buňky, tak zase hrozí neúmyslná změna hodnoty a také to není uživatelsky tak přívětivé, jako když je selektována celá řádka.

Připravil jsem si tedy náhradní řešení, které vypadá nadějně.

{*----------------------------------------------------------------------
  Po doubleclicku umožním editaci tak, že umožním seletování buněk.
  Celý GridView má pochopitelně editaci povolenou
-----------------------------------------------------------------------}
procedure TMyForm.MyGridViewCellDblClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  TcxGridDBTableView(Sender).OptionsSelection.CellSelect:=true;
end;

{*----------------------------------------------------------------------
  Po uložení záznamu (přímo uložení nebo přechodem na další řádek)
  zruším možnost selektování buněk
-----------------------------------------------------------------------}
procedure TMyForm.MyViewFocusedRecordChanged(
  Sender: TcxCustomGridTableView; APrevFocusedRecord,
  AFocusedRecord: TcxCustomGridRecord;
  ANewItemRecordFocusingChanged: Boolean);
begin
  TcxGridDBTableView(Sender).OptionsSelection.CellSelect:=false;
end;