Seite 1 von 2

ComboBox

Verfasst: 14.07.2014 15:48
von schleicher
Ich habe im Forum gesucht, aber nichts darüber gefunden.

Ist es möglich eine Combobox in eine Statusbar einzubauen ?
Wenn ja, wie müsste der Code dann aussehen?

Re: ComboBox

Verfasst: 14.07.2014 15:48
von RSBasic
SetParent_()

Re: ComboBox

Verfasst: 14.07.2014 16:05
von schleicher
Leider gibt es zu SetParent_() in PB keine Hilfe.
Wie müsste der code lauten um eine ComboBox in die Statusbar zu bekommen?

Re: ComboBox

Verfasst: 14.07.2014 16:10
von RSBasic
SetParent_() ist keine PB-Funktion, sondern eine vom Betriebssystem bereitgestellte WinAPI-Funktion, die du in PureBasic ebenfalls nutzen kannst. Die Dokumentation dieser Funktionen findest du auf der Microsoft-Seite (MSDN).
Bezüglich dieser Funktion kannst du auf der folgenden Seite die Beschreibung und Parameterliste lesen: http://msdn.microsoft.com/de-de/library ... 85%29.aspx
1. Parameter: Quell-Handle deines Gadgets (GadgetID())
2. Parameter: Ziel-Handle deiner StatusBar (StatusBarID())
Das sollte jetzt klar sein oder? Wenn nicht, frag nochmal. ;)

\\Edit:
Siehe ts-softs Beispielcode, wobei ich der Meinung bin, dass man das selber lernen sollte, denn reines Copy Paste ist nicht so hilfreich. :D

Re: ComboBox

Verfasst: 14.07.2014 16:13
von ts-soft
Wenn es für Windows ist (und nur dann :wink: ):

Code: Alles auswählen

EnableExplicit

OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "")

If ComboBoxGadget(0, 102, 2, 200, 19)
  AddGadgetItem(0, -1, "True")
  AddGadgetItem(0, -1, "False")
  
  SetGadgetState(0, 0)
EndIf

If CreateStatusBar(0, WindowID(0))
  AddStatusBarField(100)
  
  SetParent_(GadgetID(0), StatusBarID(0))
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
  EndSelect
ForEver

Re: ComboBox

Verfasst: 14.07.2014 16:25
von schleicher
Danke für den Tip. Funktioniert !
Da es eine Winapi-Funktion ist, geht das nur in Windows, verstehe ich.
Gibt es eine andere Möglichkeit, das es auch für Linux funktionieren würde ?

Re: ComboBox

Verfasst: 14.07.2014 16:36
von RSBasic

Re: ComboBox

Verfasst: 14.07.2014 16:40
von NicTheQuick
So scheint es zu gehen:

Code: Alles auswählen

EnableExplicit

OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "")

If ComboBoxGadget(0, 102, 2, 200, 19)
	AddGadgetItem(0, -1, "True")
	AddGadgetItem(0, -1, "False")
	
	SetGadgetState(0, 0)
EndIf

If CreateStatusBar(0, WindowID(0))
	AddStatusBarField(100)
	
	CompilerSelect #PB_Compiler_OS
		CompilerCase #PB_OS_Windows
			SetParent_(GadgetID(0), StatusBarID(0))
		CompilerCase #PB_OS_Linux
			gtk_widget_reparent_(GadgetID(0), StatusBarID(0))
	CompilerEndSelect
EndIf

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
	EndSelect
ForEver 

Re: ComboBox

Verfasst: 14.07.2014 16:43
von edel
Also wenn gtk_widget_reparent funktioniert, dann sollte auch ein UseGadgetList reichen, und diesmal wirklich :D

Code: Alles auswählen

EnableExplicit

OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "")

If CreateStatusBar(0, WindowID(0))
	AddStatusBarField(100)
	UseGadgetList(StatusBarID(0))
	
	If ComboBoxGadget(0, 102, 2, 200, 19)
		AddGadgetItem(0, -1, "True")
		AddGadgetItem(0, -1, "False")
		
		SetGadgetState(0, 0)
	EndIf	
	
EndIf

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
	EndSelect
ForEver


Re: ComboBox

Verfasst: 14.07.2014 16:49
von ts-soft
edel hat geschrieben:und diesmal wirklich :D
Naja, aber unter linux kommt da nix :twisted: