Seite 1 von 1

ComboBoxGadget

Verfasst: 16.10.2008 02:34
von Toshy
hi.
ich habe ein kleines ComboBoxGadget mit Pureform erstellt. Da ich nur ein kleines Programmfenster habe, soll auch das ComboBoxGadget klein sein (schmal). Nun aber ist der Text der drinn stehen soll viel zu breit. Und auch werden nur wenige Zeilen angezeigt (mit scrollbalken in der ComboBoxGadget).

Kann ich irgendwie dafür sorgen, daß beim klick auf die ComboBoxGadget die Anzeige breiter angezeigt wird, entweder mit fester größe oder sich halt der Textbreite anpaßt.

Auch wüßte ich gerne wie ich "nachträglich" einstellen kann, das mehr Einträge angezeigt werden.

Gruß
Toshy

Verfasst: 16.10.2008 11:14
von X0r
Du könntest mit EventGadget()(Und eventuell EventType()) prüfen, ob das Combobox gadget angeklickt wurde.

Verfasst: 17.10.2008 16:14
von Toshy
das ändert ja nicht die Breite.
Wenn mann auf die Combo klickt, dann klappt die ja aus. Die Größe der Anzeige in der Höhe läßt sich soweit ich weiß einfach einstellen, in dem man biem erstellen die Höhe der Box angibt. Beim erstellen wird dann ja nicht die Box so groß angezeigt, sondern nur wenn man drauf klickt die Auswahl.
Selbiges geht "direkt" nicht mit der Breite. Die angegebene Breite der Box entspricht genau der Darstellung.
Aber es müsste doch eine Message oder Flag oder sowas geben mit dem man nachträglich die Breite der Ausweilleiste angibt.

Verfasst: 17.10.2008 19:57
von Fluid Byte

Code: Alles auswählen

OpenWindow(0,0,0,160,50,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ComboBoxGadget(0,5,15,150,200)

String$ = "The demo version of this program may be freely distributed provided all contents."

For i=1 To 50 : AddGadgetItem(0,-1,String$) : Next

SetGadgetState(0,0)

hdc = StartDrawing(WindowOutput(0))
DrawingFont(GetGadgetFont(0))
ItemWidth = TextWidth(String$) + GetSystemMetrics_(#SM_CXVSCROLL) + (GetSystemMetrics_(#SM_CXEDGE) * 2)
SendMessage_(GadgetID(0),#CB_SETDROPPEDWIDTH,ItemWidth,0)
StopDrawing()

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend

Verfasst: 17.10.2008 20:03
von Toshy
VIELEN DANK.
Genau das habe ich gesucht :-)
Toshy

Verfasst: 18.10.2008 16:41
von Regenduft
Xor hat geschrieben:Du könntest mit EventGadget()(Und eventuell EventType()) prüfen, ob das Combobox gadget angeklickt wurde.
Funktioniert leider nicht!
PureBasic-Doku hat geschrieben:Die folgenden Gadgets unterstützen EventType():

- ExplorerListGadget()
- ExplorerTreeGadget()
- ImageGadget()
- ListViewGadget()
- ListIconGadget()
- MDIGadget()
- SpinGadget()
- StringGadget()
- WebGadget()
Da ist leider kein Combobox-Gadget dabei. :roll: Hab' mich da schonmal mit sinnloser Fehlersuche abgequält... :oops:

Verfasst: 18.10.2008 18:34
von Fluid Byte
Da ist leider kein Combobox-Gadget dabei
Das heißt aber nicht das es nicht funktioniert. Auch wenn nicht nativ unterstützt, werden sehr wohl entsprechende Events gesendet:

Code: Alles auswählen

OpenWindow(0,0,0,160,50,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ComboBoxGadget(0,5,15,150,200)

For i=1 To 10 : AddGadgetItem(0,-1,"ComboBox Item #" + Str(i)) : Next

Repeat
	EventID = WaitWindowEvent()  
	
	If EventID = #PB_Event_Gadget And EventGadget()  = 0
		Select EventType()
			Case #CBN_SELCHANGE : Debug "#CBN_SELCHANGE"
			Case #CBN_DROPDOWN : Debug "#CBN_DROPDOWN"
			Case #CBN_CLOSEUP : Debug "#CBN_CLOSEUP"
		EndSelect
	EndIf
Until EventID = #PB_Event_CloseWindow