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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;