Seite 2 von 2

Re: Anzahl der angezeigten Listiconzeilen ermitteln

Verfasst: 01.11.2014 14:54
von Vera
Hallo Shardik,
again, vielen Dank für die Mühe die Du Dir machst und die wertvollen Ergebnisse. :-)

Deine Lösung läuft bei mir auf Anhieb:
- Linux Suse 11.1 x86 mit PB 4.51 x86
- XP SP2

Gut ist, dass Deine Lösung nicht von der Spaltenanzahl abhängt und toll, dass der horizontale Scrollbalken berücksichtigt wird.
Beides macht nämlich Probleme in meinem von Omi wunderbar erweiterten Beispiel, worin ich nur einen ersten Schritt klären konnte.

Was beide Lösungen nicht abfangen ist ListIconGadget - #PB_EventType_Change, wenn nämlich durch manuelle Weitenänderung einer Spalte der horizontale Scrollbalken erscheint oder verschwindet. (Das könnte vermutlich auch passieren, wenn die Zelleninhalte variieren.) Mit dem #PB_Event_SizeWindow wird das im Nachgang jedoch abgefangen.

Fragt sich welches Gewicht (Relevanz) das für die letztendliche Anwendung haben würde.


Hallo Omi,
hab'mich über Deine Erweiterung gefreut :-)
Willst Du daran noch weiter arbeiten? Vielleicht magst Du ja noch meine Repeat-Schleife ausprobieren.

Code: Alles auswählen

Repeat
  Event = WaitWindowEvent(0)
  Select Event

    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType   = EventType()
      If EventGadget = ListIcon_0
        If #PB_EventType_Change
            CompilerIf #PB_Compiler_OS= #PB_OS_Linux
                 gInitLastColumnWidth= TV_GetLastColumnWidth(ListIcon_0) 
            CompilerEndIf
         Debug "GetLast / InitLast: " + Str(TV_GetLastColumnWidth(ListIcon_0)) + " ?< " + Str(gInitLastColumnWidth)
        EndIf
      ElseIf EventGadget = Button_1
        ClearGadgetItems(ListIcon_0)
        TimerGet()
       
      ElseIf EventGadget = Button_2
         AddGadgetItem(ListIcon_0, -1, Str(Random(99999999)) + Chr(10) + "more... " + Str(Random(99999999)) )
         TimerGet()
       
       ElseIf EventGadget = Button_3
         Debug "GetLast / InitLast: " + Str(TV_GetLastColumnWidth(ListIcon_0)) + " ?< " + Str(gInitLastColumnWidth)

      ElseIf EventGadget = Button_7
         RemoveGadgetItem(ListIcon_0, 1)
         TimerGet()
       
      EndIf

    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = Window_0
        CloseWindow(Window_0)
        Window_0 = 0
        Break
      EndIf
     
    Case #PB_Event_Timer
       Debug "VSlider: " + Str(TV_IsVSliderVisible(ListIcon_0))
       RemoveWindowTimer(Window_0, 0)
       
  EndSelect
ForEver 
schönen gruseligen Feiertag ~ Vera

Re: Anzahl der angezeigten Listiconzeilen ermitteln

Verfasst: 01.11.2014 15:09
von derschutzhund
Hallo Shardik,

deine Lösung ist das was ich gesucht hatte und läuft bei mir unter XP!
Vielen Dank erst mal!
Muss es jetzt nur noch in mein Programm einbauen.

Viele Grüße

Wolfgang