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)
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.
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;
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;
Partager