unit ColumnsSimpleDemoCities; {$I ..\..\cxVer.inc} interface uses Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, StdCtrls, cxButtons, cxGridLevel, cxControls, cxGridCustomView, cxGrid, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, DB, cxDBData, cxClasses, cxLookAndFeelPainters, cxDataStorage; type TColumnsSimpleDemoCitiesForm = class(TForm) pnlCustomize: TPanel; tvCities: TcxGridDBTableView; lvCities: TcxGridLevel; GridCities: TcxGrid; btnSet: TcxButton; btnAdd: TcxButton; btnDelete: TcxButton; btnCancel: TcxButton; tvCitiesCity: TcxGridDBColumn; lbDescription: TLabel; procedure tvCitiesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnAddClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject); private function GetValue: Variant; { Private declarations } public { Public declarations } property Value: Variant read GetValue; end; var ColumnsSimpleDemoCitiesForm: TColumnsSimpleDemoCitiesForm; implementation uses ColumnsSimpleDemoData; {$R *.dfm} function TColumnsSimpleDemoCitiesForm.GetValue: Variant; begin Result := tvCities.Controller.FocusedRecord.Values[0]; end; procedure TColumnsSimpleDemoCitiesForm.tvCitiesKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_RETURN) and not tvCities.Controller.IsEditing then ModalResult := mrOk; end; procedure TColumnsSimpleDemoCitiesForm.btnAddClick(Sender: TObject); begin tvCities.DataController.Insert; tvCities.DataController.Edit; end; procedure TColumnsSimpleDemoCitiesForm.btnDeleteClick(Sender: TObject); begin tvCities.Controller.DeleteSelection; end; end.