![]() |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
OnClick :stupid: Aber das hätte man durch Debuggen rausbekommen können (das Zuweisen
Delphi-Quellcode:
im Einzelschritt durchgehen),
DBCheckBox1.Checked := True;
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:
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)
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; und beim zweiten IF wird es dadurch natürlich gleich wieder auf True gesetzt, womit es am Ende immer True wäre.
Delphi-Quellcode:
Aber, wie gesagt, brauchst du an dem Checked, in der OnChangeOnClick-Methode, eigentlich garnicht dran rumspielen, da es bereits von der VCL umgeschaltet wird.
if DBCheckBox1.Checked then
DBCheckBox1.Checked := False else DBCheckBox1.Checked := True; Zitat:
Auf was soll FELD eigentlich gesetzt werden? Und welcher Datensatz soll eigentlich geändert werden? (bei dir alle Datensätze der Tabelle) Beispiel:
SQL-Code:
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 |
AW: dbCheckbox und dbGrid mit Abfrage
Abgesehen von der Sinnlosigkeit hätte in diesem Fall auch ein einfaches Negieren genügt:
Delphi-Quellcode:
,was in der Langform nicht anderes heißt als
DBCheckBox1.Checked := not DBCheckBox1.Checked;
Delphi-Quellcode:
if DBCheckBox1.Checked then
DBCheckBox1.Checked := false else DBCheckBox1.Checked := true; |
AW: dbCheckbox und dbGrid mit Abfrage
@ himitsu
Den Inhalt der geschweiften Klammer hab ich gelöscht, soweit verstehe ich das auch. Dennoch bleibt die Veränderung des Datensatzes (also das Abklicken eines Häkchens) nicht erhalten. Das Anklicken einer Checkbox geht auch nicht (weil ja nicht programmiert?). Zitat:
Geändert werden soll nur der An- oder Abgeklickte Datensatz, welcher mit Select... ermittelt wird. Zur Vereinfachung wird hier die komplette Tabelle angezeigt, da im Anwendungsfall es auch mehrere Antwortdatensätze geben wird. Wie ich nun die Bedingung definieren soll, damit nur der An-oder Abgeklickte Datensatz gespeichert wird ist mir im Moment noch unklar. |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
Gruß K-H |
AW: dbCheckbox und dbGrid mit Abfrage
Wobei eine DBCheckBox den Wert eigentlich selber ändern sollte, im verbundenen Feld des aktuellen Records der Query-Komponente (DataSet).
Und beim nächsten Post würden dann die Änderungen automatisch in die DB zurückgeschrieben. :stupid: :gruebel: Das ist ja grade ein Grund für die Existenz der DB-Komponenten (TDBCheckbox), also daß sie die Daten selber aus dem DataSet holen und auch Änderungen zurückscheiben. Wohingegen man das bei den nicht-datensensitiven Komponenten (TCheckBox) alles selber machen müsste. |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
Es bleibt immer noch die Nichtübernahme des "Häkchens" beim DBGrid zu lösen. Noch mal zur Verdeutlichung des Sinns dieser Sache: Der Anwender selektiert aus mehreren tausend Datensätzen einige wenige heraus. Der Datensatz welcher ihm letzlich zusagt soll (soweit nicht vorhanden) mit Häckchen markiert werden. Weiter nichts. Die Markierung (Häkchen) soll keine Aktion oder Ähnliches auslösen. |
AW: dbCheckbox und dbGrid mit Abfrage
'ner datenunabhängige ID ist oftmal von Vorteil.
Aber im Grunde kann man auch einen anderen "eingeutigen" Indikator verwenden. (ein oder mehrere Unique-Felder) |
AW: dbCheckbox und dbGrid mit Abfrage
Zitat:
![]() Du könntest z.B. mal einen ScreenShot des Objektinspektors hochladen, der die Optionen deines Datasets zeigt ... Es gibt auch noch die Möglichkeit, ein berechnetes Feld in deiner Query-Komponente zu erstellen und in GetText je nach Feldinhalt den Wert True oder False zuzuweisen ... |
AW: dbCheckbox und dbGrid mit Abfrage
Liste der Anhänge anzeigen (Anzahl: 5)
Anbei die Screenshots der meisten Elemente: Ich hoffe sie sind aussagekräftig genug.
|
AW: dbCheckbox und dbGrid mit Abfrage
@Perlsau: Ich glaube, das ist gelöst. Die Datenbank liefert 0/1, aber das TDBCheckBox-Teil muss ja wissen, was 'True' und was 'False' ist. Das macht er, indem die Eigenschaften 'ValueChecked' und 'ValueUnchecked' zugewiesen werden, allerdings im Code. Lass dich also nicht von den Eigenschaften im OI verwirren, die TE hier gepostet hat.
Ich glaube, der Code im OnClick der TDBCheckbox-komponente ist überflüssig und falsch, denn er macht genau das wieder rückgängig, was die Komponente eh gemacht hätte. Also: Weg damit. Bei mir funktioniert es nämlich. Und ich habe FB extra installiert, um mir ganz sicher zu sein. Also: Das TDBCheckBox brauch kein OnClick-Event. Es benötigt gar nichts, nur die richtigen Eigenschaften. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 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