AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken dbCheckbox und dbGrid mit Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

dbCheckbox und dbGrid mit Abfrage

Ein Thema von blutigerAnfänger · begonnen am 2. Aug 2014 · letzter Beitrag vom 3. Okt 2014
 
blutigerAnfänger

Registriert seit: 23. Mär 2010
82 Beiträge
 
#1

dbCheckbox und dbGrid mit Abfrage

  Alt 2. Aug 2014, 08:37
Datenbank: Firebird • Version: 2.1 • Zugriff über: interbase
Hallo

Über Checkboxen in DbGrids wurde schon viel geschrieben. Mein Quelltext bezieht sich auf den Tip bei about.com.
Nur meine Umsetzung funktioniert nicht.
Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from Tabelle ');
    Active:=True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DBCheckBox1.DataSource := DataSource1;
 DBCheckBox1.DataField := 'Feld';
// DBCheckBox1.Visible := False;
 DBCheckBox1.Color := DBGrid1.Color;
 DBCheckBox1.Caption := '';

 //explained later in the article
 DBCheckBox1.ValueChecked := 'true';
 DBCheckBox1.ValueUnChecked := 'false';
end;

procedure TForm1.DBGrid1DrawColumnCell(
  Sender: TObject; 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 (gdFocused in State) then
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
     DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
     DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
     DBCheckBox1.Width := Rect.Right - Rect.Left;
     DBCheckBox1.Height := Rect.Bottom - Rect.Top;

     DBCheckBox1.Visible := True;
    end
  end
  else
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
      DrawRect:=Rect;
      InflateRect(DrawRect,-1,-1);

      DrawState := ISChecked[Column.Field.AsBoolean];

      DBGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
                       DFC_BUTTON, DrawState);
    end;
  end;
end;
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
  if DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField then
    DBCheckBox1.Visible := False
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key = Chr(9)) then Exit;

  if (DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField) then
  begin
    DBCheckBox1.SetFocus;
    SendMessage(DBCheckBox1.Handle, WM_Char, word(Key), 0);
  end;
end;

procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
  if DBCheckBox1.Checked then
     DBCheckBox1.Caption := DBCheckBox1.ValueChecked
  else
     DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
end;

end.
Es handelt sich um eine dreifeldrige Datentabelle, in welcher das erste Feld (Feld, siehe Quelltext) aus true und false besteht.

Ziel ist es: für jeden Datensatz eine editierbare vorbelegte Checkbox in dieses 'Feld' zu zeichnen.
Die zu editierenden Datensätze sollen aus Abfragen der Datentabelle erzeugt werden und bei veränderung von true oder false über UPDATE zurückgeschrieben werden.

Die DBCheckbox ist grau, zeigt aber den Zustand jeder Datenzeile (true mit Haken, false ohne Haken) an.

Woran liegt es, daß keine Checkboxen in dem DBGrid gezeichnet werden?

Danke.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz