Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Checklistbox.checked macht Probleme


Kralle - Sa 23.07.11 15:01
Titel: Checklistbox.checked macht Probleme
Moin,

da bin ich schon wieder.

Durch das anwählen oder abwählen eines Eintrages in einer Checklisbox, wird der Inhalt der Box als solches verändert.
Soweit so gut. Das Ändern des Inhaltes im OnCkliCHeck-Ereignis funktioniert auch, aber obwohl der Haken weg ist und auch die Änderung durch geführt wird, bleibt eine Abfrage

Delphi-Quelltext
1:
 oldArray[I,2]:= BoolToStr(CLB_Header.checked[I]);                    

auf True.
Auch beim Debug, verändert sich der Status nicht, obwohl die Visuelle-Komponente eine Änderung zeigt.

In den Eigenschaften der Komponente finde ich auch keine Einstellung die offensichtlich die Statusänderung verhindert.

Ertelle ich eine kleine Testanwendung um diesem Phänomen auf die Spur zu kommen, so läuft in der alles normal (auch im Debug).

Also, muss es irgendeine Einstellung geben, die in meinem Projekt verhindert, das der Status richtig ausgewertet wird.

Irgendwelche Ideen?

Gruß Heiko


Xion - Sa 23.07.11 15:36

user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
aber obwohl der Haken weg ist und auch die Änderung durch geführt wird, bleibt eine Abfrage

Delphi-Quelltext
1:
 oldArray[I,2]:= BoolToStr(CLB_Header.checked[I]);                    

auf True.

Mal davon abgesehen dass er -1 statt true zurückgibt funktionierts bei mir so. Kann es evtl was damit zu tun haben, dass du ein 2D-Array hast? Greifst du da irgendwie falsch zu?
user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
Auch beim Debug, verändert sich der Status nicht, obwohl die Visuelle-Komponente eine Änderung zeigt.

Ist es auch die richtige CheckListBox? Im andren Thread hattest du CLB_middle.


jaenicke - Sa 23.07.11 16:55

Warum hast du denn ein array of string? Ein array of Boolean wäre wohl besser geeignet...


Kralle - Sa 23.07.11 17:49

Moin,

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

Mal davon abgesehen dass er -1 statt true zurückgibt funktionierts bei mir so. Kann es evtl was damit zu tun haben, dass du ein 2D-Array hast? Greifst du da irgendwie falsch zu?


Die Daten landen schon falsch im Array, wie man im Debug sehen kann.

Zitat:
Ist es auch die richtige CheckListBox? Im andren Thread hattest du CLB_middle.

Gibt beide.

Gruß Heiko

Nachtrag: Die Anzeige im Debug hat Mist angezeigt.
Nachdem ich die Zuüberwachenden Variablen gelöscht und neu angelegt hatte, bekam ich auch den Status richtig angezeigt.
Vielleicht mag es TDP wenn man Windows den den Ruhezustand versetzt.
Jetzt, muß ich nur noch im Code den Fehler finden, was mit einem funktionierenden Debug einfacher ist :-)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Moin,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Warum hast du denn ein array of string? Ein array of Boolean wäre wohl besser geeignet...

Es ist ein StringArray, weil auch Strings gespeichert werden.
Das Speichern der Bool-Info habe ich nur noch nachträglich mit rein genommen.

Gruß Heiko


jaenicke - Sa 23.07.11 18:38

user profile iconKralle hat folgendes geschrieben Zum zitierten Posting springen:
Nachtrag: Die Anzeige im Debug hat Mist angezeigt.
Wenn du in einer Schleife bist, weiß der Debugger nicht unbedingt den korrekten Wert der Schleifenvariable, wenn die Optimierung in den Projektoptionen eingeschaltet ist (Standard = an). ;-)


Kralle - Sa 23.07.11 18:52

Moin,

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du in einer Schleife bist, weiß der Debugger nicht unbedingt den korrekten Wert der Schleifenvariable, wenn die Optimierung in den Projektoptionen eingeschaltet ist (Standard = an). ;-)


Da bin ich einmal drauf reingefallen, seit dem schalte ich die Optimierung bis zu Schluß ab.

Aber, trotzdem verhält der Debug-Modus wie ein Blinker - mal stimmt die Anzeige und mal nicht ;-(

Gruß Heiko


Kralle - Mi 27.07.11 12:14

Moin,

das Problem war nicht der Debugger, sondern meine "IF ... =" true Abfragen.

Gruß Heiko