Aufklappen eines TreeGadgets
Verfasst: 08.08.2018 21:38
Hallo,
ich habe in meinem Programmfenster u.a. ein TreeGadget mit derzeit 20 Einträgen, von denen einige auch Untereinträge (also das, was die Hilfe 'Sublevels' nennt) sind. Da demnächst noch sehr viel mehr Einträge in den Baum hineinkommen, habe ich eine Suchfunktion zum TreeGadget geschrieben. D.h. über dem TreeGadget habe ich ein StringGadget plaziert, in das man einen Suchbegriff eingeben kann, der dann im TreeGadget gefunden werden soll. Ausgelöst wird die Suche durch die Betätigung eines ButtonImageGadgets.
Das Problem besteht nun darin, daß die Suchroutine beim Debuggen einwandfrei funktioniert, aber die Anzeige (das Aufklappen) des Eintrags im TreeGadget nicht. Es folgt der Kode im Case-Zweig zum ButtonImageGadget in meiner Ereignis-Schleife (der angesprungen wird, wenn darauf geklickt wird):Die eigentliche Suchfunktion (also die For-Next-Schleife, die Eintrag für Eintrag des Baumes #Bf_gE durchgeht) funktioniert, wie gesagt, perfekt. Bis auf den SetGadgetItemState-Befehl, der den Untereintrag, der den Suchbegriff enthält, aufklappen sollte. So versteht ich zumindest die Funktion der Flags #PB_Tree_Expanded|#PB_Tree_Selected laut Hilfe. Es wird aber trotz erfolgreicher Suche überhaupt nichts aufgeklappt, der SetGadgetItemState-Befehl bleibt ohne sichtbare Wirkung. Warum?
Vielen Dank
ich habe in meinem Programmfenster u.a. ein TreeGadget mit derzeit 20 Einträgen, von denen einige auch Untereinträge (also das, was die Hilfe 'Sublevels' nennt) sind. Da demnächst noch sehr viel mehr Einträge in den Baum hineinkommen, habe ich eine Suchfunktion zum TreeGadget geschrieben. D.h. über dem TreeGadget habe ich ein StringGadget plaziert, in das man einen Suchbegriff eingeben kann, der dann im TreeGadget gefunden werden soll. Ausgelöst wird die Suche durch die Betätigung eines ButtonImageGadgets.
Das Problem besteht nun darin, daß die Suchroutine beim Debuggen einwandfrei funktioniert, aber die Anzeige (das Aufklappen) des Eintrags im TreeGadget nicht. Es folgt der Kode im Case-Zweig zum ButtonImageGadget in meiner Ereignis-Schleife (der angesprungen wird, wenn darauf geklickt wird):
Code: Alles auswählen
Case #Bs_SG ; Bildschaltfläche Suche in Grammatik
St=GetGadgetText(#Ef_SG) ; Suchtext
gf=#False ; gefunden?
For Ix=0 To CountGadgetItems(#Bf_gE)-1
TdE=GetGadgetItemText(#Bf_gE, Ix) ; Text des Eintrags
If FindString(TdE, St, 1, #PB_String_NoCase)
SetGadgetItemState(#Bf_gE, Ix, #PB_Tree_Expanded|#PB_Tree_Selected)
gf=#True: Break ; gefunden
EndIf
Next
If Not gf
MessageRequester("Hinweis", "Der Suchtext wurde nicht gefunden.",
#PB_MessageRequester_Ok|#PB_MessageRequester_Info)
EndIf
Vielen Dank