Une série d'articles intitulée Ajouter des composants à un DBGrid explique comment placer à peu près n'importe quel contrôle Delphi (composant visuel) dans une cellule d'un DGBrid. L'idée est de créer des interfaces utilisateur visuellement plus attrayantes pour éditer des champs à l'intérieur d'un DBGrid: un ComboBox pour des listes déroulantes; un DateTimePicker (calendrier) pour les valeurs de date; une case à cocher pour les champs booléens.
Comme l'a remarqué René van der Heijden, la solution est assez longue et ne fonctionne pas, du moins pas lorsque vous utilisez la souris pour cliquer sur les cases à cocher.
René suggère une approche plus simple qui ne nécessite que deux gestionnaires pairs: OnCellClick et OnCustomDrawCell pour votre contrôle DBGrid:
// Événement OnCellClik d'un DBGrid1 procédure TForm.DBGrid1CellClick(Colonne: TColonne); commencer si (Column.Field.DataType = ftBoolean) ensuite commencer bascule Vrai et Faux Column.Grid.DataSource.DataSet.Edit; Column.Field.Value: = ne pas Column.Field.AsBoolean; publication immédiate - voyez par vous-même si vous le souhaitez Column.Grid.DataSource.DataSet.Post; vous pouvez ajouter des fonctionnalités supplémentaires ici, à traiter après la modification fin; fin; // Événement OnDrawColumnCell d'un DBGrid1 procédure TForm.DBGrid1DrawColumnCell (expéditeur: TObject; const Rect: TRect; DataCol: Entier; Colonne: TColonne; État: TGridDrawState); const CtrlState: tableau[Booléen] de entier = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK ou DFCS_CHECKED); commencer si (Column.Field.DataType = ftBoolean) ensuite commencer DBGrid1.Canvas.FillRect (Rect); si VarIsNull (Column.Field.Value) ensuite DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK ou DFCS_INACTIVE) grisé autre DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, CtrlState [Column.Field.AsBoolean]); cochée ou décochée fin; fin;
Navigateur de conseils Delphi:
"Supprimer les éléments en double dans la liste TStringList de Delphi
"5 faits que vous ne saviez pas sur Delphi et les classes et la VCL et l'héritage et les contrôles personnalisés et…