Delphi-Quellcode:
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
{
if DBCheckBox1.Checked then
DBCheckBox1.Caption := DBCheckBox1.ValueChecked
else
DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
}
DBGrid1.Columns[0].ReadOnly := False;
if DBCheckBox1.Checked then
begin
DBCheckBox1.Checked := False;
end ;
end;
Es wurde schon ausführlich erklärt, dass die DBCheckBox in dieser Methode nicht gesetzt werden darf.
So, wie der Source jetzt ist, wird die DBCheckBox immer False sein.
Nochmal:
Wenn DBCheckBox.Checked in dieser Methode gesetzt wird, wird die Methode automatisch wieder auf gerufen.
Ergebnis-Prüfung:
Fall 1: Die Box ist nicht gechecked.
- Anwender setzt die Box auf Checked.
- Die Methode wird dadurch aufgerufen.
- Methode setzt die Box auf nicht gechecked und ruft sie ohne Auswirkung nochmal auf.
Ergebnis: Die Box ist nicht gechecked.
Fall 2: Die Box ist gechecked.
- Anwender setzt die Box auf nicht Checked.
- Die Methode wird dadurch aufgerufen.
- Es passiert aber nichts weiter (außer ReadOnly-Einstellung).
Ergebnis: Die Box ist nicht gechecked.
Beide Fälle führen also dazu, dass DBCheckBox.Checked immer False sein wird, sobald der Anwender diese anklickt.
Du kannst die Methode komplett entfernen. Ich sehe auch für das
ReadOnly := false
keine Notwendigkeit.