Seite 1 von 2

ScrollBar im ListIconGadget erzwingen

Verfasst: 29.11.2005 01:21
von Jake
Ich möchte eine ScrollBar im ListIconGadget erzwingen. Das geht auch solange nichts drin steht, aber sobald ich was reinschreibe ist die ScrollBar wider weg.

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #ListIcon_0
EndEnumeration

OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "New window ( 0 )")
	CreateGadgetList(WindowID())
		ListIconGadget(#ListIcon_0, 70, 40, 370, 190, "Column1", 100)
		ShowScrollBar_(GadgetID(#ListIcon_0),#SB_VERT,#True)
		AddGadgetItem(#ListIcon_0, -1, "Test")
		
Repeat
Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
Kommentiert mal AddGadgetItem aus und ihr werdet sehen das es dann geht. Warum ist das so?

Re: ScrollBar im ListIconGadget erzwingen

Verfasst: 29.11.2005 14:52
von hiltwin
Jake hat geschrieben: Kommentiert mal AddGadgetItem aus und ihr werdet sehen das es dann geht. Warum ist das so?
Ich kann Dir nicht sagen, warum das so ist. Allerdings hatte ich ein anderes Problem mit nen ListIconGadget und ts-soft hat ein nettes Kurzprogramm gebastelt, bei dem dann auch ein Scrollbalken auftaucht ...

Link ist hier

http://forums.purebasic.com/german/viewtopic.php?t=5776

Vielleicht hilft es Dir ja auch ;o)

Ansonsten erzwingst Du ein Scroll auch dann, wenn Du die Masse des Gadgets kleiner als die Breite aller Spalten und kleiner als die Menge aller Zeilen definierst ...

Verfasst: 29.11.2005 18:12
von Jake
Das hilf mir leider nicht. Da ist auch erst eine Scrollbar wenn der Inhalt des ListIconGadgets größer ist als der angezeigte Bereich und das ist Standart.
Ich möchte aber das immer eine Scrollbar da ist.

hiermit ginge es per beginn

Verfasst: 29.11.2005 18:36
von hiltwin

Code: Alles auswählen


; PureBasic Visual Designer v3.90 build 1361 


;- Window Constants 
; 
Enumeration 
  #Window_0 
EndEnumeration 

;- Gadget Constants 
; 
Enumeration 
  #ListIcon_0 
EndEnumeration 


Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )") 
    If CreateGadgetList(WindowID()) 
      
      ;- 
      ListIconGadget(#ListIcon_0, 90, 55, 100, 165, "Column1", 105) 
      
    EndIf 
  EndIf 
EndProcedure 

Open_Window_0() 
For abc = 0 To 10 
AddGadgetItem(#ListIcon_0, -1, "Test") 
Next 
ActivateGadget(#ListIcon_0) 
;SetGadgetState(#ListIcon_0, 1) 
SetGadgetItemState(#ListIcon_0, 0, #PB_ListIcon_Selected) 

Programmschleifenstart: 
Repeat 
  
  Event = WindowEvent() 
  WindowID = EventWindowID() 

Until WindowID=#Window_0 And event= #PB_Event_CloseWindow 

Ergebnis=MessageRequester("Programm schliessen", "Programm wirklich beenden?", #PB_MessageRequester_YesNoCancel) 

If Ergebnis=7 Or Ergebnis=2 
Goto Programmschleifenstart 
EndIf 

End 
; 



1.)

ListIconGadget(#ListIcon_0, 90, 55, 100, 165, "Column1", 105)

hinten die Breite der Spalte 105 ist grösser als die Gadgetbreite 100 ...

für den horizontalen Scrollbalken

2.)

For abc = 0 To 10
AddGadgetItem(#ListIcon_0, -1, "Test")
Next

sind mehr Items angelegt, als das Gadget hoch, ist der vertikale Scrollbalken auch von Beginn an da ...


Ist zwar nur Stückwerk, aber vielleicht hilfts, bis einer der Profis etwas besseres für Dich hat ...

Verfasst: 29.11.2005 21:07
von Jake
Ist alles nett gemeint von euch aber genau dass will ich nicht und ist mir auch bekannt da es der Standard ist.

Evtl. ist da ja nicht richtig rüber gekommen. Ich möchte daß der Scrollbalken eingeblendet wird auch wenn er gar nicht benötigt wird. Also ohne einen breiten Header oder eine lange Liste.
Der Sinn ist das das Layout des Fensters bzw. speziell des ListIconGadgets sich nicht verändert wenn der User in das ListIconGadget so viele Einträge eingibt das die Scrollbar automatisch eingeblendet wird.

Verfasst: 30.11.2005 20:44
von ts-soft
Beim erstellen des ListIconGadget, als letzten zusätzlichen Parameter:

Code: Alles auswählen

#LBS_DISABLENOSCROLL
also als opt. Flags

Verfasst: 30.11.2005 23:17
von Jake
#LBS_DISABLENOSCROLL - geht leider auch nicht. Dann erscheint nichtmal das Eingefügte Item.

Ich habe mir im PSDK den Eintrag dazu durchglesen und meine es sollte doch gehen. Kann es sein das ich das ListIconGadget dann mit der CreateWindow API erstellen muß?

Verfasst: 01.12.2005 03:06
von edel
Es handelt sich ja auch um 2 verschiedene Fensterklassen , einmal die
Listbox und dann SysListView32 . Fuer die Listviewklasse musst du dann
LVS nehmen , falls es die Konstante dort uberhaupt gibt.

Verfasst: 01.12.2005 03:35
von ts-soft
>> falls es die Konstante dort uberhaupt gibt
Dort gibt es nur das Gegenteil: #LVS_NOSCROLL
Pech gehabt /:->

Verfasst: 01.12.2005 18:17
von Jake
Das hört sich nicht gut an. Wit anderen Worten das geht überhaupt nicht es sei denn ich Nehme ein ListViewGadget.
Da kann man aber keine Gridlines und keinen Hearder einblenden oder irre ich mich.