Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DBGridSave und Checkbox Spalte (https://www.delphipraxis.net/202110-dbgridsave-und-checkbox-spalte.html)

Trafel21 30. Sep 2019 06:51

DBGridSave und Checkbox Spalte
 
Hallo zusammen,

ich hab in einem DBGridSave mehrere Felder, einige davon können den Wert 0 oder 1 annehmen. Momentan werden diese Werte in der Spalte auch angezeigt (0 oder 1). Kann ich diese Spalte
so konfigurieren das anstatt 0 oder 1 ein Häkchen für 1 gesetzt wird und keins bei 0?

Hab direkt im Gridsave gesucht und im IBDataSet, wurde nur leider nicht fündig.

mfg Trafel

haentschman 30. Sep 2019 07:18

AW: DBGridSave und Checkbox Spalte
 
Moin...8-)
Frage: Was ist ein "DBGridSave"? Ein Grid was den Namen "Save" in sich trägt? :wink:

Trafel21 30. Sep 2019 08:56

AW: DBGridSave und Checkbox Spalte
 
Ich meinte DBGrid. Mein Fehler. Hatte die Klasse so benannt. ^^,

Uwe Raabe 30. Sep 2019 10:18

AW: DBGridSave und Checkbox Spalte
 
Zitat:

Zitat von Trafel21 (Beitrag 1448425)
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);
  ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf