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.

Hab' mich da schonmal mit sinnloser Fehlersuche abgequält...

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