ComboBoxGadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

ComboBoxGadget

Beitrag 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
1. Win10
PB6.1
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Du könntest mit EventGadget()(Und eventuell EventType()) prüfen, ob das Combobox gadget angeklickt wurde.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag 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.
1. Win10
PB6.1
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

VIELEN DANK.
Genau das habe ich gesucht :-)
Toshy
1. Win10
PB6.1
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag 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:
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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 
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten