Incruster des composants en FMX dans un TGrid
Bonsoir à tous,
je me suis inspiré du web pour un code qui fonctionne bien pour la partie ComboBox.
ce code insère un TComboBox dans une cellule de mon TGrid (relié à une base de données)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
type THelpModelGrid = class(TGridModel);
procedure TFormMain.ChangeGrid_NDFcomboBoxTypeFrais(Sender: TObject);
begin
Grid_NDF.BeginUpdate;
try
THelpModelGrid(Grid_NDF.Columns[3].Model).DoSetValue(Grid_NDF.col, Grid_NDF.row, TValue.From<String>(TCombobox(sender).Items[TCombobox(sender).ItemIndex]));
Grid_NDF.Model.PostEditorValue;
BindSrc_FDQ_NDF.DataSet.Edit;
BindSrc_FDQ_NDF.DataSet.FieldByName('NDF_TypeFrais').AsString:= TComboBox(sender).Items[TCombobox(sender).ItemIndex];
BindSrc_FDQ_NDF.DataSet.Post;
finally
Grid_NDF.EndUpdate;
end;
end;
procedure TFormMain.Grid_NDFCreateCustomEditor(Sender: TObject; const Column: TColumn; var Control: TStyledControl);
begin
if Column = Grid_NDF.Columns[3] then
begin
Control:= TcomboBox.Create(self);
TComboBox(Control).Items.Add('Autres frais');
TComboBox(Control).Items.Add('Carburant');
TComboBox(Control).Items.Add('Courrier');
TComboBox(Control).Items.Add('Etc');
TCombobox(Control).ItemIndex:= TCombobox(Control).Items.IndexOf(THelpModelGrid(Grid_NDF.Columns[3].Model).DoGetValue(Grid_NDF.col, Grid_NDF.row).AsString);
TComboBox(Control).OnChange:= ChangeGrid_NDFcomboBoxTypeFrais;
end;
if Column = Grid_NDF.Columns[0] then
begin
Control:= TDateEdit.Create(self);
TDateEdit(Control).OnChange:= ChangeDate_NDF;
end;
end; |
je souhaite maintenant faire de même dans une autre colonne et y insérant cette fois un TDateEdit pour le choix d'une date.
mais là je coince : avec ChangeDate_NDF :
avec ce code j'obtiens une erreur comme quoi : l'ensemble de données n'est pas en mode edition ou insertion...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
procedure TFormMain.ChangeDate_NDF(Sender: TObject);
begin
Grid_NDF.BeginUpdate;
try
THelpModelGrid(Grid_NDF.Columns[0].Model).DoSetValue(Grid_NDF.col, Grid_NDF.row, TValue.FromVariant(TDateEdit(Sender).Date));
Grid_NDF.Model.PostEditorValue;
BindSrc_FDQ_NDF.DataSet.Edit;
BindSrc_FDQ_NDF.DataSet.FieldByName('NDF_Date').AsString:= Grid_NDF.Cells[Grid_NDF.col,Grid_NDF.row];
BindSrc_FDQ_NDF.DataSet.Post;
finally
Grid_NDF.EndUpdate;
end;
end; |