Een reeks artikelen met de titel Componenten toevoegen aan een DBGrid bespreekt het plaatsen van vrijwel elk Delphi-besturingselement (visuele component) in een cel van een DGBrid. Het idee is om visueel aantrekkelijkere gebruikersinterfaces te maken voor het bewerken van velden in een DBGrid: een ComboBox voor vervolgkeuzelijsten; een DateTimePicker (kalender) voor datumwaarden; een selectievakje voor Booleaanse velden.
Zoals opgemerkt door Rene van der Heijden is de oplossing vrij lang, en het werkt niet, althans niet wanneer je met de muis op de selectievakjes klikt.
Rene suggereert een eenvoudigere aanpak waarbij slechts twee even handlers nodig zijn: OnCellClick en OnCustomDrawCell voor uw DBGrid-besturingselement:
// OnCellClik-gebeurtenis van een DBGrid1 procedure TForm.DBGrid1CellClick(Kolom: TColumn); beginnen als (Column.Field.DataType = ftBoolean) vervolgens beginnen schakelen waar en onwaar Column.Grid.DataSource.DataSet.Edit; Column.Field.Value: = niet Column.Field.AsBoolean; onmiddellijk bericht - kijk zelf of je dit wilt Column.Grid.DataSource.DataSet.Post; u kunt hier aanvullende functionaliteit toevoegen, die moet worden verwerkt nadat de wijziging is aangebracht einde; einde; // OnDrawColumnCell-gebeurtenis van een DBGrid1 procedure TForm.DBGrid1DrawColumnCell (Afzender: TObject; const Rect: TRect; DataCol: geheel getal; Kolom: TColumn; Staat: TGridDrawState); const CtrlState: rangschikking[Boolean] van geheel getal = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK of DFCS_CHECKED); beginnen als (Column.Field.DataType = ftBoolean) vervolgens beginnen DBGrid1.Canvas.FillRect (Rect); als VarIsNull (Column.Field.Value) vervolgens DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK of DFCS_INACTIVE) Grijs anders DrawFrameControl (DBGrid1.Canvas.Handle, Rect, DFC_BUTTON, CtrlState [Column.Field.AsBoolean]); aangevinkt of niet aangevinkt einde; einde;
Delphi tips navigator:
"Verwijder dubbele items uit de TStringList van Delphi
"5 feiten die u niet wist over Delphi en klassen en de VCL en overerving en aangepaste controles en ...