Horizontale Scrollbar im Listviewgadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Horizontale Scrollbar im Listviewgadget

Beitrag von bluejoke »

Hallo!

Ich habe zwar nach eingem Suchen im englischen Forum

Code: Alles auswählen

SendMessage_(ListViewGadgetHandle,#LB_SETHORIZONTALEXTENT,width,0)
entdeckt, aber es ist leider nicht ganz das was ich brauche.
Ich hätte gerne einen horizontalen Scrollbalken der nur dann erscheint, wenn er auch benötigt wird. Kann mir da jemand helfen?


Danke,

Simon
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Ich hätte noch ein Problem, bei dem ich zwar weiß, dass es gehen müsste, mich bis jetzt aber dumm und dapplig (<- wie schreibt man das?) gesucht hab:

Ich möchte im ListViewGadget dem User die Möglichkeit geben, mehrere Zeilen auszuwählen. Wenn er draufklickt wird jeweils der Eintrag markiert bzw. entmarkiert.
Dann müsste ich rausfinden, welche Einträge alle markiert sind.



Danke, Simon
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

bluejoke hat geschrieben:Ich hätte noch ein Problem, bei dem ich zwar weiß, dass es gehen müsste, mich bis jetzt aber dumm und dapplig (<- wie schreibt man das?) gesucht hab:

Ich möchte im ListViewGadget dem User die Möglichkeit geben, mehrere Zeilen auszuwählen. Wenn er draufklickt wird jeweils der Eintrag markiert bzw. entmarkiert.
Dann müsste ich rausfinden, welche Einträge alle markiert sind.



Danke, Simon
Da kann ich vielleicht helfen:

Code: Alles auswählen

For k=0 To CountGadgetItems(#ListViewGadget)-1
  If GetGadgetItemState(#ListViewGadget, k) : MessageRequester("", Str(k)) : EndIf
Next
Beim ersten kann ich nicht helfen. Das selbe Problem hatte ich auch, habs aber nie gelöst bekommen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Ahh, klar, so muss das klappen, aber erst muss man doch irgendwie das Multiselect-Feature (hab gerade gesehen, bei ListIcongadget gibts das so: #PB_ListIcon_MultiSelect) einschalten.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Dazu brauchst du diese Flag-Konstante: #LBS_EXTENDEDSEL
Wenn ich mir die flags ansehe, dann geht das mit dem Horizontalscrolling nicht wirklich richtig:
LBS_MULTICOLUMN

Specifies a multicolumn list box that is scrolled horizontally. The LB_SETCOLUMNWIDTH message sets the width of the columns.

Code: Alles auswählen

#WindowWidth  = 640
#WindowHeight = 480
#WindowFlags  = #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu

hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "")

CreateGadgetList(hWnd)
ListViewGadget(0, 0, 0, #WindowWidth, #WindowHeight, #LBS_EXTENDEDSEL | #LBS_MULTICOLUMN)

Text.s = "Blubb"
For k=0 To 50
  AddGadgetItem(0, -1, Text)
Next

Repeat
  Event = WindowEvent()
  Delay(10)
Until Event = #PB_Event_CloseWindow
End
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten