Anzahl der angezeigten Listiconzeilen ermitteln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Anzahl der angezeigten Listiconzeilen ermitteln

Beitrag 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
Zuletzt geändert von Vera am 03.11.2014 23:26, insgesamt 1-mal geändert.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
derschutzhund
Beiträge: 328
Registriert: 06.06.2013 20:37
Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10

Re: Anzahl der angezeigten Listiconzeilen ermitteln

Beitrag 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
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Antworten