Seite 1 von 1

Anzahl sichtbarer Zeilen in ListIconGadget

Verfasst: 10.01.2020 15:31
von techniker
Hallo,

wie kann ich herausfinden, wie viele Zeilen aktuell in einem LIG dargestellt werden?
Bzw. wenn ich die unterste, noch sichtbare Zeilennummer des LIG herausbekommen könnte,
würde mir dies auch reichen.

Die Anzahl der Zeilen kann sich aufgrund der Fenstergröße und Schriftart ändern.

Die oberste Zeile kann ich z.B. per

Code: Alles auswählen

GetScrollPos_(GadgetID(0), #SB_VERT)
abfragen.

Das Ganze muss ausschließlich auf Windows laufen - also darf API verwendet werden.
Die Information benötige ich für die weitere Programmverarbeitung.

Danke. <)

Re: Anzahl sichtbarer Zeilen in ListIconGadget

Verfasst: 10.01.2020 16:27
von bobobo
Geht CountGadgetItems() ?

Re: Anzahl sichtbarer Zeilen in ListIconGadget

Verfasst: 10.01.2020 16:29
von techniker
bobobo hat geschrieben:Geht CountGadgetItems() ?
Damit erfahre ich wie viele Einträge existieren - aber nicht welcher der unterste, gerade angezeigte ist.
Ebenso erfahre damit ich nicht, wie viele Zeilen momentan dargestellt werden.

Re: Anzahl sichtbarer Zeilen in ListIconGadget

Verfasst: 10.01.2020 16:45
von techniker

Code: Alles auswählen

SendMessage_(GadgetID(0), #LVM_GETCOUNTPERPAGE, 0, 0)
Könnte die Lösung sein - muss es aber noch ausgiebig testen.. :allright:

Re: Anzahl sichtbarer Zeilen in ListIconGadget

Verfasst: 10.01.2020 16:48
von sibru

Code: Alles auswählen

SendMessage_(GadgetID(GadNr), #LVM_GETCOUNTPERPAGE, 0, 0)
liefert Anzahl Zeilen

Code: Alles auswählen

;Modul      ListIcon_Index   Version 1.0 vom 21.03.2006
;
;Funktion:  bestimmt 1. sichtbare Zeile eines ListIcon-Gadget´s
;           
;           
;           
;
;Aufruf:    ListIcon_Index(#GadGetId, ZeilenNr)
;           GadgetID = Gadget-Handle des ListIcon´s
;           ZeilenNr = Nummer der ListIcon-Zeile (muß bereits belegt sein !!!), die
;                      als 1. im ListIcon angezeigt werden soll
;           

Procedure ListIcon_Index(GadNr, Index)
   SendMessage_(GadgetID(GadNr), #LVM_GETITEMRECT,0,r.RECT)
   SendMessage_(GadgetID(GadNr), #LVM_SCROLL,0,((r\bottom - r\top)*(Index-1)))
   SendMessage_(GadgetID(GadNr), #LVM_ENSUREVISIBLE, Index, 0)
EndProcedure
viel Erfolg !