Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.211 Beiträge
 
Delphi 12 Athens
 
#51

AW: dbCheckbox und dbGrid mit Abfrage

  Alt 30. Aug 2014, 17:12
Das Löschen der geschweiften Klammern erzeugt auch noch einen Stack Überlauf.
Rate mal, welches Ereignis ausgelöst wird, wenn sich der Wert einer CheckBox ändert? Egal ob durch den Benutzer oder vom Programm.
OnClick

Aber das hätte man durch Debuggen rausbekommen können (das Zuweisen DBCheckBox1.Checked := True; im Einzelschritt durchgehen),
bzw. durch einen Blick in den Stacktrace, nach der Exception. (wer, wo und warum die Funktionen aufrief)

Die CheckBox ändert selber ihren Status, wenn man sie anklickt, also du brauchst das Checked hier eigentlich nicht zu manipulieren.

Delphi-Quellcode:
if DBCheckBox1.Checked then // if DBCheckBox1.Checked = True then
  DBCheckBox1.Checked := False;
if not DBCheckBox1.Checked then // if DBCheckBox1.Checked = False then
  DBCheckBox1.Checked := True;
Sowas ist natürlich auch "sinnlos", denn nach dem ersten IF ist Checked immer False (entweder es war schon False und blieb unverändert, oder es wurde auf False geändert)
und beim zweiten IF wird es dadurch natürlich gleich wieder auf True gesetzt, womit es am Ende immer True wäre.
Delphi-Quellcode:
if DBCheckBox1.Checked then
  DBCheckBox1.Checked := False
else
  DBCheckBox1.Checked := True;
Aber, wie gesagt, brauchst du an dem Checked, in der OnChangeOnClick-Methode, eigentlich garnicht dran rumspielen, da es bereits von der VCL umgeschaltet wird.



Zitat:
Update Tabelle set FELD
"FELD" ist ein Feld in der Tabelle "Tabelle"?

Auf was soll FELD eigentlich gesetzt werden?

Und welcher Datensatz soll eigentlich geändert werden? (bei dir alle Datensätze der Tabelle)

Beispiel: UPDATE tabelle SET feld = neuerWert WHERE bedingung




Tipp: Besser nicht mit False und vorallem nicht mit True vergleichen.
Außerdem ist das nicht nötig, da der Boolean für's IF eh schon vorhanden ist.
Delphi-Quellcode:
if DBCheckBox1.Checked = True then
if DBCheckBox1.Checked = False then

if DBCheckBox1.Checked then
if not DBCheckBox1.Checked then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Aug 2014 um 17:21 Uhr)
  Mit Zitat antworten Zitat