Anzahl der angezeigten Listiconzeilen ermitteln
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Anzahl der angezeigten Listiconzeilen ermitteln
Vermutlich sehe ich den Wald vor lauter Bäumen nicht aber wie kann ich ermitteln wieviele Zeilen im angezeigten Listiconfenster dargestellt werden können?
Das ändert sich ja evtl. mit der Größe des Windows!
Es muss doch eine einfache Lösung mit PB-Mitteln geben oder geht das nur mit API?
LG
Wolfgang
Das ändert sich ja evtl. mit der Größe des Windows!
Es muss doch eine einfache Lösung mit PB-Mitteln geben oder geht das nur mit API?
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Nur mit API. Beispielsweise unter Windows: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Ok, so würde es funktionieren.RSBasic hat geschrieben:Nur mit API. Beispielsweise unter Windows: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Kann man mit PB abfragen ob Scroller rechts aktiviert ist oder nicht?
Man könnte dann so lange neue Elemente in das listicon einfügen bis der scroller aktiviert wird und zieht dann von der Anzahl eins ab.
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Code: Alles auswählen
EnableExplicit
Define a
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(1, 0, 0, 500, 360, "Spalte", 400, 0)
For a=1 To 25;15
AddGadgetItem(1, -1, "Item " + Str(a), 0, 0)
Next
ButtonGadget(2, 10, 370, 200, 20, "Ist vertikale Scrollleiste sichtbar?", 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 2
If GetWindowLongPtr_(GadgetID(1), #GWL_STYLE) & #WS_VSCROLL
Debug "Ja"
Else
Debug "Nein"
EndIf
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Schade, ist ja wieder eine Windowsfunktion! 

Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- 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
Hallo Wolfgang,
ich hab mal gegrübelt und mich gefragt, ob sich die Spaltenweite ändert in Abhängigkeit eines Scrollbalkens. JA!
Hier ein Probier-Beispiel
Tip: ein toller crossplattform Code von minimy - List Manager
viel Erfolg ~ Vera
ich hab mal gegrübelt und mich gefragt, ob sich die Spaltenweite ändert in Abhängigkeit eines Scrollbalkens. JA!
Hier ein Probier-Beispiel
Code: Alles auswählen
Window_0 = OpenWindow(#PB_Any, 238, 83, 543, 300, "List Width changed by scrollbar", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
If Window_0
ListIcon_0 = ListIconGadget(#PB_Any, 10, 20, 420, 250, "column 100", 100, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines | #PB_ListIcon_MultiSelect | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(ListIcon_0, 1, "right column", 200)
Button_1 = ButtonGadget(#PB_Any, 445, 20, 80, 25, "clear list")
Button_2 = ButtonGadget(#PB_Any, 445, 50, 80, 25, "add item")
Button_3 = ButtonGadget(#PB_Any, 445, 120, 80, 25, "debug width")
Button_7 = ButtonGadget(#PB_Any, 445, 80, 80, 25, "Delete")
EndIf
Repeat
Event = WaitWindowEvent(1)
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = ListIcon_0
ElseIf EventGadget = Button_1
ClearGadgetItems(ListIcon_0)
ElseIf EventGadget = Button_2
AddGadgetItem(ListIcon_0, -1, Str(Random(99999999)) + Chr(10) + "more... " + Str(Random(99999999)) )
ElseIf EventGadget = Button_3
Debug GetGadgetItemAttribute(ListIcon_0, 0, #PB_ListIcon_ColumnWidth, 0 )
Debug GetGadgetItemAttribute(ListIcon_0, 0, #PB_ListIcon_ColumnWidth, 1)
ElseIf EventGadget = Button_7
RemoveGadgetItem(ListIcon_0, 1)
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = Window_0
CloseWindow(Window_0)
Window_0 = 0
Break
EndIf
EndSelect
ForEver
viel Erfolg ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Hallo Vera,
mir ist jetzt nicht ganz klar wie mir das bei meiner Aufgabenstellung helfen kann.
Ich möchte wissen wieviele Zeilen in ein bestehendes listiconfenster passen damit ich nur die aus einer großen Liste mit mehreren hunderttausend Einträgen laden kann und das möglichst mit PB Funktionen.
LG
Wolfgang
mir ist jetzt nicht ganz klar wie mir das bei meiner Aufgabenstellung helfen kann.
Ich möchte wissen wieviele Zeilen in ein bestehendes listiconfenster passen damit ich nur die aus einer großen Liste mit mehreren hunderttausend Einträgen laden kann und das möglichst mit PB Funktionen.
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
- 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
Mhh?
Du fragst doch wieviele Einträge in ein gegebenes ListIcon-Feld hineinpassen. Wenn die Menge überschritten wird, dann wird ein Scrollbalken hinzugefügt und die Spaltenbreite ändert sich.
Der Eintrag, der die bestehende Breite verschmälert ist doch der 'Grenzeintrag', den Du suchst, ab dem nicht mehr angezeigt werden soll.
Man könnte doch das ListFeld verborgen füllen lassen, bis sich die Weite ändert und die Einträge-Anzahl -1 dann als maximale Füllmenge festlegen. ... und dementsprechend die anzeigbaren Listeinträge pro Ansicht/Aufruf aus der Gesamtliste aufteilen.
Wenn die ListIcon-Ansichstgröße variabel ist, dann müßen Höhe und Füllmenge eben immer neu ermittelt werden.
Du fragst doch wieviele Einträge in ein gegebenes ListIcon-Feld hineinpassen. Wenn die Menge überschritten wird, dann wird ein Scrollbalken hinzugefügt und die Spaltenbreite ändert sich.
Der Eintrag, der die bestehende Breite verschmälert ist doch der 'Grenzeintrag', den Du suchst, ab dem nicht mehr angezeigt werden soll.
Man könnte doch das ListFeld verborgen füllen lassen, bis sich die Weite ändert und die Einträge-Anzahl -1 dann als maximale Füllmenge festlegen. ... und dementsprechend die anzeigbaren Listeinträge pro Ansicht/Aufruf aus der Gesamtliste aufteilen.
Wenn die ListIcon-Ansichstgröße variabel ist, dann müßen Höhe und Füllmenge eben immer neu ermittelt werden.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
-
- Beiträge: 328
- Registriert: 06.06.2013 20:37
- Computerausstattung: Satellite A210-19Z, Samsung Netbook N130, VPAD10
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Also wenn ein Scrollbalken eingefügt wird ändert sich an den mit debug angezeigten Werten bei mir nichts.
LG
Wolfgang
LG
Wolfgang
Satellite A210-19Z, Samsung N130, VPAD10, WinXP, Win7, PuppyLinux, PB 5.24, 5.31. 5.70
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Elektronik, Mikrocontroller, CNC-Technik, 3D-Druck
Re: Anzahl der angezeigten Listiconzeilen ermitteln
Die Spaltenbreite ändert sich nicht. Nur die Optik ändert sich (ein Scrollbalken) aber der Wert von z.B. 200 ändert sich ja nicht.
Daher sind die Werte immer gleich.
Meines Wissens ist nur die API eine Lösung. Etwas OS-Unabhängiges hab ich leider noch nicht gesehen... evt. die Frage im englischen
Forum posten und vielleicht weiss Shardik Rat (öfters von ihm Windos API für Linux und Mac umgesetzt gesehen (mit deren API))
Daher sind die Werte immer gleich.
Meines Wissens ist nur die API eine Lösung. Etwas OS-Unabhängiges hab ich leider noch nicht gesehen... evt. die Frage im englischen
Forum posten und vielleicht weiss Shardik Rat (öfters von ihm Windos API für Linux und Mac umgesetzt gesehen (mit deren API))
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