ListIcon ScrollState ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
es_91
Beiträge: 411
Registriert: 25.01.2011 04:48

ListIcon ScrollState ?

Beitrag von es_91 »

Hi.

Ich möchte ein ListIconGadget mit vielen Datensätzen aus einer Datenbank füllen. Es können aber nicht alle Daten sofort abgefragt und angezeigt werden, stattdessen gibt es einen Thread, der die Datensätze abruft und das ListIconGadget soll zuerst nur die ersten 50 Datensätze anzeigen (nachdem diese von dem Thread abgefragt wurden) und später den Rest anzeigen. Der Rest soll genau dann in 50-Datensätzen-Schritten angezeigt werden, wenn der Benutzer beim ListIconGadget über dreiviertel der Höhe herunterscrollt. Das heißt, das Scrollen nach unten soll das weitere Befüllen des ListIconGadgets triggern.

Mit welcher Funktion, gerne auch API, kann ich den "ScrollState" des Gadgets abfragen?

Schöne Grüße,

es_91.
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListIcon ScrollState ?

Beitrag von Kiffi »

es_91 hat geschrieben:Mit welcher Funktion, gerne auch API, kann ich den "ScrollState" des Gadgets abfragen?
Position der Scrollbar in einem ListIconGadget ermitteln: http://www.purebasic.fr/german/viewtopi ... =3&t=27911

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: ListIcon ScrollState ?

Beitrag von Bisonte »

Was hindert dich daran, das ListIconGadget komplett zu befüllen, wenn die Daten vorliegen ?

Meines Wissens gibt das sehr unschöne Effekte. Wenn ein ListIcon Stück für Stück "befüllt" wird, während der User
es sieht oder gar darin herumfuhrwerkt, springt es immer wieder an den ersten Eintrag zurück, den man dann wieder
korrigieren muss. Es ist also ein böses "Gezuckel".

Es schwirrt hier im Forum ein Snippet herum, mit dem man das neuzeichnen eines ListIcons unter Windows unterbinden kann.
Damit ist es möglich, das Gadget viel schneller zu befüllen. Also meines Erachtens erst befüllen wenn alle Daten da sind.
Eventuell dem Benutzer ein kleines Fenster mit Fortschrittsbalken präsentieren, in dem mitgeteilt wird, das gerade etwas
heftig viel zu tun ist... So als Vorschlag.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ListIcon ScrollState ?

Beitrag von RSBasic »

Bisonte hat geschrieben:Es schwirrt hier im Forum ein Snippet herum, mit dem man das neuzeichnen eines ListIcons unter Windows unterbinden kann.
http://www.rsbasic.de/aktualisierung/wi ... 3%BCgen.pb
Bisonte hat geschrieben:Meines Wissens gibt das sehr unschöne Effekte. Wenn ein ListIcon Stück für Stück "befüllt" wird, während der User
es sieht oder gar darin herumfuhrwerkt, springt es immer wieder an den ersten Eintrag zurück, den man dann wieder
korrigieren muss. Es ist also ein böses "Gezuckel".
Eigentlich nicht:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "", WindowWidth(0)-30, 0)
  
  AddWindowTimer(0, 123, 100)
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Timer And EventTimer() = 123
      AddGadgetItem(1, -1, "Item " + Random(999), 0, 0)
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Weder die Scrollposition noch die Markierung ändert sich.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
es_91
Beiträge: 411
Registriert: 25.01.2011 04:48

Re: ListIcon ScrollState ?

Beitrag von es_91 »

Kiffi hat geschrieben:
es_91 hat geschrieben:Mit welcher Funktion, gerne auch API, kann ich den "ScrollState" des Gadgets abfragen?
Position der Scrollbar in einem ListIconGadget ermitteln: http://www.purebasic.fr/german/viewtopi ... =3&t=27911
RSBasic hat geschrieben:Mit:

Code: Alles auswählen

GetScrollPos_(GadgetID(#Gadget), #SB_VERT)
Danke, Kiffi und Dank an RSBasic. Zu dem was Bisonte gesagt hat, schreibe ich später noch was.
Antworten