You can try by using this code, involving OnGetInplaceEditorProperties (TTMSFNCDataGrid) and OnDataToField (TTMSFNCDataGridDatabaseAdapter):
procedure TForm1.FormCreate(Sender: TObject);
begin
TMSFNCDataGrid1.Columns[3].Editor := getComboEdit;
TMSFNCDataGrid1.Columns[2].AddSetting(gcsEditor);
end;
procedure TForm1.TMSFNCDataGrid1GetInplaceEditorProperties(Sender: TObject;
ACell: TTMSFNCDataGridCellCoord; AInplaceEditor: TTMSFNCDataGridInplaceEditor;
AInplaceEditorType: TTMSFNCDataGridInplaceEditorType);
var
cbo: TTMSFNCDataGridComboEdit;
sl: TStringList;
begin
if (ACell.Column = 3) and (AInplaceEditor is TTMSFNCDataGridComboEdit) then
begin
cbo := (AInplaceEditor as TTMSFNCDataGridComboEdit);
sl := TStringList.Create;
try
sl.Duplicates := TDuplicates.dupIgnore;
sl.Sorted := True;
TMSFNCDataGridDatabaseAdapter1.LoadValuesFromField(TMSFNCDataGridDatabaseAdapter1.FieldAtColumn[ACell.Column], sl);
cbo.Items.Assign(sl);
finally
sl.Free;
end;
end;
end;
procedure TForm1.TMSFNCDataGridDatabaseAdapter1DataToField(Sender: TObject;
ACell: TTMSFNCDataGridCellCoord; AMasterField, AField: TField;
AInplaceEditor: TTMSFNCDataGridInplaceEditor;
ACellValue: TTMSFNCDataGridCellValue; var Handled: Boolean);
var
cbo: TTMSFNCDataGridComboEdit;
begin
if (ACell.Column = 3) and (AInplaceEditor is TTMSFNCDataGridComboEdit) then
begin
cbo := (AInplaceEditor as TTMSFNCDataGridComboEdit);
AField.AsString := cbo.Text;
Handled := True;
end;
end;