ListIconGadget mit Checkboxen vertut sich [gelöst]

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

ListIconGadget mit Checkboxen vertut sich [gelöst]

Beitrag von SirCus »

guten Nachmittag allerseits.

Ich habe glaube ich etwas wirres entdeckt:
Ich liste in einem ListIconGadget alle Dateien in einem Verzeichnis auf, die dann gelesen werden sollen.
Die Dateien kann man per ListIconGadget auswählen. Nur die mit Häkchen sollen verarbeitet werden.

Soweit sogut.
Leider kommt PB durcheinander, wenn ich die Auswahl ein paarmal ändere und, so glaube ich das beobachtet zu haben, statt einem Haken nur den Eintrag markiere (selected statt checked)

Ich frage aber nach Selected garnicht ab.

Das konfuse dabei:
Das passiert vor allem beim letzten Eintrag in der Liste (weshalb ich zunächste einen Zählerfehler meinerseits vermutete, aber keinen entdecken konnte) und zweitens nicht gleich beim ersten mal.

Ich klicke also in dieser Gadgetliste beliebige Einträge an und dann auf "Ausführen" im Programm. Dann ändere ich die Auswahl und klicke wieder auf den entsprechenden "AUsführen" Button.
Irgendwann, wenn ich das checked häkchen herausnehme und/oder den letzten eintrag Selektiere, erkennt er diesen Eintrag nichtmehr als "checked" (was jetzt noch richtig ist)
Und von da an nie mehr, bis das Programm neu gestartet wird!! Auch wenn ich ihn wieder checke.

die entsprechende Prozedur sieht so aus:

Code: Alles auswählen

Procedure ChkdDatAuslesen2()
   
    AddGadgetItem(#Editor_StatusLog, -1, FormatDate("%hh:%ii:%ss", Date())+" Thread gestartet") ; Statusmeldung ausgeben
    Directory$ = #KokoDir   ; Listet alle Einträge im Koko.exe Directory auf (ohne die Inhalte aus Unterverzeichnissen)
    chkdDateien.l = CountGadgetItems(#ListIconGadget_0)
    AddGadgetItem(#Editor_StatusLog, -1, Str(chkdDateien)+"Einträge gefunden")
    x.l=0
    For x=0 To chkdDateien-1 ; Gadgetliste fängt bei 0 an
      Eintrag$=  GetGadgetItemText(#ListIconGadget_0, x, 0)     ; Dateiname aus Liste nehmen
      Type$=Eintrag$                                                            ; ## für später
      If GetGadgetItemState(#ListIconGadget_0, x) = #PB_ListIcon_Checked ;                   ; Abgehakt und Dateinamen stimmen überein?
        AddGadgetItem(#Editor_StatusLog, -1, "+"+FormatDate("%hh:%ii:%ss", Date())+Eintrag$+"wird gelesen") 
        CheckDirLesen(Directory$+"\"+Eintrag$)                                      ;Prozeduraufruf zum Auslesen der Datei
      Else 
        AddGadgetItem(#Editor_StatusLog, -1, "-"+Eintrag$+"nicht ausgewählt") ;Datei nicht ausgewählt
      EndIf
    Next
    AddGadgetItem(#Editor_StatusLog, -1, "+ Batchverarbeitung abgeschlossen")
    AddGadgetItem(#Editor_StatusLog, -1, "-----------"+FormatDate("%hh:%ii:%ss", Date())+"--------")

  EndProcedure

kann hier im Moment keinen Screenshot anhängen, aber ich denke es ist klar was ich meine.
Das schräge ist: es funktioniert so lange, bis ich den letzten Eintrag unchecke und markiere, ab dann mags nichtmehr so laufen wies soll
Zuletzt geändert von SirCus am 30.10.2007 13:34, insgesamt 1-mal geändert.
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

so.. hier ein Screenshot:

Bild
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Code: Alles auswählen

If GetGadgetItemState(#ListIconGadget_0, x) = #PB_ListIcon_Checked
das ist ein all-time-running-gag und FAQ-würdig

Code: Alles auswählen

If GetGadgetItemState(#ListIconGadget_0, x) & #PB_ListIcon_Checked
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
SirCus
Beiträge: 182
Registriert: 10.09.2004 11:44
Wohnort: München
Kontaktdaten:

Beitrag von SirCus »

danke für die prompte hilfe
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu

- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Antworten