In einer Reihe von Artikeln mit dem Titel Hinzufügen von Komponenten zu einem DBGrid wird erläutert, wie Sie nahezu jedes Delphi-Steuerelement (visuelle Komponente) in eine Zelle eines DGBrid einfügen. Die Idee ist, optisch attraktivere Benutzeroberflächen zum Bearbeiten von Feldern in einem DBGrid zu erstellen: eine ComboBox für Dropdown-Listen; ein DateTimePicker (Kalender) für Datumswerte; ein Kontrollkästchen für Boolesche Felder.
Wie von Rene van der Heijden bemerkt, ist die Lösung ziemlich langwierig und funktioniert nicht, zumindest nicht, wenn Sie mit der Maus auf die Kontrollkästchen klicken.
Rene schlägt einen einfacheren Ansatz vor, für den nur zwei gerade Handler erforderlich sind: OnCellClick und OnCustomDrawCell für Ihr DBGrid-Steuerelement:
// OnCellClik-Ereignis eines DBGrid1 Verfahren TForm.DBGrid1CellClick(Spalte: TColumn); Start wenn (Column.Field.DataType = ftBoolean) dann Start Wahr und Falsch umschalten Column.Grid.DataSource.DataSet.Edit; Column.Field.Value: = nicht Column.Field.AsBoolean; sofortiger Post - sehen Sie selbst, ob Sie das wollen Column.Grid.DataSource.DataSet.Post; Sie können hier zusätzliche Funktionen hinzufügen, die nach der Änderung verarbeitet werden sollen Ende; Ende; // OnDrawColumnCell-Ereignis eines DBGrid1 Verfahren TForm.DBGrid1DrawColumnCell (Absender: TObject; const Rect: TRect; DataCol: Integer; Spalte: TColumn; Zustand: TGridDrawState); const CtrlState: Array[Boolean] von Ganzzahl = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK oder DFCS_CHECKED); Start wenn (Column.Field.DataType = ftBoolean) dann Start DBGrid1.Canvas.FillRect (Rect); wenn VarIsNull (Column.Field.Value) dann DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK oder DFCS_INACTIVE) grau sonst DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, CtrlState [Column.Field.AsBoolean]); markiert oder nicht markiert Ende; Ende;
Delphi Tips Navigator:
"Entfernen Sie doppelte Elemente in Delphis TStringList
"5 Fakten, die Sie nicht über Delphi und Klassen und die VCL und Vererbung und benutzerdefinierte Steuerelemente wussten und ...