ComboBox

Anfängerfragen zum Programmieren mit PureBasic.
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

ComboBox

Beitrag 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?
Zuletzt geändert von schleicher am 14.07.2014 15:49, insgesamt 1-mal geändert.
Purebasic 5.51
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ComboBox

Beitrag von RSBasic »

SetParent_()
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: ComboBox

Beitrag 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?
Purebasic 5.51
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ComboBox

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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

Re: ComboBox

Beitrag 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
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
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

Re: ComboBox

Beitrag 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 ?
Purebasic 5.51
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ComboBox

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ComboBox

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

Re: ComboBox

Beitrag 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

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

Re: ComboBox

Beitrag von ts-soft »

edel hat geschrieben:und diesmal wirklich :D
Naja, aber unter linux kommt da nix :twisted:
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
Antworten