ScrollBar im ListIconGadget erzwingen

Anfängerfragen zum Programmieren mit PureBasic.
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

ScrollBar im ListIconGadget erzwingen

Beitrag 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?
MfG Jake
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Re: ScrollBar im ListIconGadget erzwingen

Beitrag 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 ...
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag 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.
MfG Jake
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

hiermit ginge es per beginn

Beitrag 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 ...
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag 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.
MfG Jake
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Beim erstellen des ListIconGadget, als letzten zusätzlichen Parameter:

Code: Alles auswählen

#LBS_DISABLENOSCROLL
also als opt. Flags
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag 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ß?
MfG Jake
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> falls es die Konstante dort uberhaupt gibt
Dort gibt es nur das Gegenteil: #LVS_NOSCROLL
Pech gehabt /:->
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag 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.
MfG Jake
Antworten