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
Antwort Antwort
blutigerAnfänger

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

AW: dbCheckbox und dbGrid mit Abfrage

  Alt 10. Aug 2014, 16:16
Also ich hab jetzt die Datenbank erneuert, die Domain nach Vorschrift von Perlsau #16 mit IBExpert angelegt. Der Quelltext wurde rechtschreibmäßig (DBCheckbox.dataField := 'Feld' nach 'FELD') abgeändert. Und jetzt läuft gar nichts mehr. Fehlermeldung (ins Deutsche übersetzt): 'FELD' ist kein boolean Format.
Was jetzt? Muß die Domain aktiert werden? oder Wie bekomme ich nun ein boolean Feld, da Firebird keines mitliefert.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#2

AW: dbCheckbox und dbGrid mit Abfrage

  Alt 10. Aug 2014, 16:59
...(DBCheckbox.dataField := 'Feld' nach 'FELD') ...
mit 'FELD' ist der Name des Feldes gemeint, welches Du als Checkbox darstellen willst

Wie heißen deine drei Felder/Spaltennamen?
  Mit Zitat antworten Zitat
blutigerAnfänger

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

AW: dbCheckbox und dbGrid mit Abfrage

  Alt 10. Aug 2014, 17:58
1.Feld FELD Typ Integer
2.Feld NAME Typ varchar(50)
3.Feld BEZEICHNUNG Typ varchar(250)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: dbCheckbox und dbGrid mit Abfrage

  Alt 10. Aug 2014, 19:04
Ok. Du musst lernen, Programme zu debuggen, also Breakpoints setzen, schrittweise durchlaufen etc. Dann wäre der Fehler sofort aufgefallen. Auch ist es wichtig, der IDE zu sagen, den integrierten Debugger zu verwenden und bei Exceptions anzuhalten (alles in den Debug-Optionen).

Also
1. 'FELD' statt 'Feld' (hast Du schon beobachtet)
2. Auf das Feld kann nicht per 'AsBoolean' zugegriffen werden, denn es ist ja kein Boolean-Feld. Ersetze also die eine Zeile, füge noch die fehlenden Events hinzu (dient dem Editieren) und dann sollte das Problem gelöst sein.

Delphi-Quellcode:
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.AsInteger = 1]; // <----
      DBGrid1.Canvas.FillRect(Rect);
      DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
                       DFC_BUTTON, DrawState);
    end;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz