![]() |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
|
AW: dbCheckbox und dbGrid mit Abfrage
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. |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
Wie heißen deine drei Felder/Spaltennamen? |
AW: dbCheckbox und dbGrid mit Abfrage
1.Feld FELD Typ Integer
2.Feld NAME Typ varchar(50) 3.Feld BEZEICHNUNG Typ varchar(250) |
AW: dbCheckbox und dbGrid mit Abfrage
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; |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
|
AW: dbCheckbox und dbGrid mit Abfrage
Gut. Ich auch. Streiten/nicht einer Meinung sein ist eine Sache, aber das geht zu weit.
|
AW: dbCheckbox und dbGrid mit Abfrage
Es funktioniert !!:-D
Danke an alle. Zitat:
Zitat:
|
AW: dbCheckbox und dbGrid mit Abfrage
Das war nur irgendein Vollpfosten, der hier rumgepöbelt hat. Seine Beiträge wurden dann entfernt.
|
AW: dbCheckbox und dbGrid mit Abfrage
Ich dachte ich hätte es geschafft.
Zitat:
Delphi-Quellcode:
Die Veränderung von true auf false und false auf true funktioniert nicht. Ich kann zwar eine Checkbox mit Haken auf false setzen, aber die Änderung wird nicht übernommen. Das Löschen der geschweiften Klammern erzeugt auch noch einen Stack Überlauf.
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin DBGrid1.Columns[0].ReadOnly :=False; if DBCheckBox1.Checked = true then begin DBCheckBox1.Checked := False; end ; {if DBCheckBox1.Checked = False then begin DBCheckBox1.Checked := True; end ; } end; Für die Übernahme der Änderung in die Datenbank habe ich folgenden Code:
Delphi-Quellcode:
Auch da funktioniert was nicht, FELD wird gar nicht gefunden! ? Obwohl es in der AbfrageProzedur läuft.
procedure TForm1.inDBspeichernClick(Sender: TObject);
begin with Query1 do begin Active:=False; SQL.Clear; SQL.Add('Update Tabelle set FELD '); Active:=True; end; end; Mittlerweile bin ich wieder auf Hilfe angewiesen. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 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