Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
9.496 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DBGridSave und Checkbox Spalte

  Alt 30. Sep 2019, 10:18
Kann ich diese Spalte
so konfigurieren das anstatt 0 oder 1 ein Häkchen für 1 gesetzt wird und keins bei 0?
Mir ist keine Einstellung im Grid selbst bekannt, aber man kann das durch einen OnDrawColumnCell-Handler erreichen. Ich habe mir dafür einen Helper geschrieben:

Delphi-Quellcode:
type
  TGridHelper = class helper for TDBGrid
  public
    procedure DrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
  end;

procedure TGridHelper.DrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState: Integer;
  DrawRect: TRect;
begin
  if (Column.Field is TBooleanField) then begin
    DrawRect := Rect;
    InflateRect(DrawRect, -1, -1);
    DrawState := IsChecked[Column.Field.AsBoolean];
    Canvas.FillRect(Rect);
    DrawFrameControl(Canvas.Handle, DrawRect, DFC_BUTTON, DrawState);
  end
  else begin
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;
Im OnDrawColumnCell wird dann folgender Code ausgeführt:
Delphi-Quellcode:
  ...
  (Sender as TDBGrid).DrawColumnCell(Rect, DataCol, Column, State);
  ...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat