Wie macht man Menüs mit "ComboBoxGadget" ?

Anfängerfragen zum Programmieren mit PureBasic.
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag von Coder Pinhead »

Kiffi das geht nicht :/

Beispiel Skript:

Code: Alles auswählen

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
  #CheckBox_1
  #String_2
  #ComboBox_3
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 392, 181, 235, 91, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Button_0, 15, 54, 100, 30, "Knopf")
      CheckBoxGadget(#CheckBox_1, 15, 5, 40, 20, "Text")
      StringGadget(#String_2, 120, 55, 100, 30, "Output")
      ComboBoxGadget(#ComboBox_3, 15, 28, 100, 100)
      AddGadgetItem(#ComboBox_3,-1,"-----")
      AddGadgetItem(#ComboBox_3,-1,"Funktion 1")
      AddGadgetItem(#ComboBox_3,-1,"Funktion 2")
      SetGadgetState(#ComboBox_3,0)
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #Button_0
        Select EventGadget()
          Case #Button_0
            
            Select GetGadgetText(#ComboBox_3)
              
              Case "Funktion 1"
                Ausgabe.s = "Alpha"
                
              Case "Funktion 2"
                Ausgabe.s = "Beta"
                
            EndSelect
            
           SetGadgetText(#String_2,"Auswahl: " + Ausgabe)
        EndSelect
      ElseIf EventGadget = #CheckBox_1
      ElseIf EventGadget = #String_2
      ElseIf EventGadget = #ComboBox_3
      EndIf
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Also wie kriege ich jetzt noch nen Text in meinen Output?
Beta und Gamma (Gamma soll die Checkbox sein!)

EDIT:

Danke Kiffi :)

Hat sich erledigt habs anhand deines Beispiels herausgefunden was ich machen muss :mrgreen:
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Coder Pinhead hat geschrieben:Hat sich erledigt habs anhand deines Beispiels herausgefunden was ich machen muss :mrgreen:
so war es auch gedacht! :allright:

Grüße ... Kiffi
a²+b²=mc²
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag von Coder Pinhead »

Kiffi?

Code: Alles auswählen

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #ComboBox_0
  #ComboBox_1
  #String_2
  #Button_3
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 401, 148, 139, 137, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Window_0))
      ComboBoxGadget(#ComboBox_0, 20, 15, 100, 100)
      AddGadgetItem(#ComboBox_0,-1,"-----")
      AddGadgetItem(#ComboBox_0,-1,"Funktion 1")
      AddGadgetItem(#ComboBox_0,-1,"Funktion 2")
      SetGadgetState(#ComboBox_0,0)
      ComboBoxGadget(#ComboBox_1, 20, 45, 100, 100)
      AddGadgetItem(#ComboBox_1,-1,"-----")
      AddGadgetItem(#ComboBox_1,-1,"X1")
      AddGadgetItem(#ComboBox_1,-1,"X2")
      SetGadgetState(#ComboBox_1,0)
      StringGadget(#String_2, 20, 70, 100, 20, "Output",#PB_String_ReadOnly)
      ButtonGadget(#Button_3, 20, 95, 100, 20, "Knopf")
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #ComboBox_0
      ElseIf EventGadget = #ComboBox_1
      ElseIf EventGadget = #String_2
      ElseIf EventGadget = #Button_3
        Select EventGadget()
          Case #Button_3
            
            Select GetGadgetText(#ComboBox_0)
              Case "-----"
                Asugabe.s = ""
              Case "Funktion 1"
                Ausgabe.s = "Alpha"
              Case "Funktion 2"
                Ausgabe.s = "Beta" 
            EndSelect
            
            Select GetGadgetText(#ComboBox_1)
              Case "-----"
                AsugabeX.s = ""
              Case "X1"
                AusgabeX.s = "A1X"
              Case "X2"
                AusgabeX.s = "B2X"
            EndSelect
            
            If Ausgabe And AusgabeX
              New.s = Ausgabe+"!"+AusgabeX
            EndIf
            
            SetGadgetText(#String_2,Chr(34)+New+Chr(34))
        EndSelect
      EndIf
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}

Also wen ich Funktion 1 und X1 auswähle steht ja im Output "Alpha!A1X". Und wen ich dan die beiden schalter wieder auf "-----" zurückstelle und den Knopf noch mal drücke soll der Text wieder auf Output gehen... :/

Also wie kriege ich das hin??
Zuletzt geändert von Coder Pinhead am 18.08.2007 00:23, insgesamt 3-mal geändert.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Coder Pinhead hat geschrieben:Kiffi?
ja, mein Sohn? :cool:

Code: Alles auswählen

AsugabeX
Grüße ... Kiffi
a²+b²=mc²
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag von Coder Pinhead »

Dein Hinweis Hilft mir irgendwie nicht :(
Kannst du mir nicht das anhand des Scripts zeigen was ich machen muss?
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Wenn du nicht weiß was Kiffi gemeint hat dann ist dir nicht zu helfen.
Er meint natürlich den Buchstabendreher in deinem Case-Konstrukt.
Aber selbst dann wird es nicht funktionieren weil du auch noch eine
Abfrage vergessen hast und die könnte so aussehen mit Beseitigung des Buchstabendrehers:

Code: Alles auswählen

Select GetGadgetText(#ComboBox_1)
              Case "-----"
                AusgabeX.s = ""
              Case "X1"
                AusgabeX.s = "A1X"
              Case "X2"
                AusgabeX.s = "B2X"
            EndSelect
           
            If Ausgabe And AusgabeX
              New.s = Ausgabe+"!"+AusgabeX
              Else
              New.s = "Output"
            EndIf
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Coder Pinhead hat geschrieben:Dein Hinweis Hilft mir irgendwie nicht :(
Kannst du mir nicht das anhand des Scripts zeigen was ich machen muss?
dysti hat geschrieben:Wenn du nicht weiß was Kiffi gemeint hat dann ist dir nicht zu helfen.
Er meint natürlich den Buchstabendreher in deinem Case-Konstrukt.
@Coder Pinhead:
Du solltest Dir generell angewöhnen mit "EnableExplicit" zu arbeiten.
Dann würden Dir solche Flüchtigkeitsfehler sofort selber selber auffallen.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag von Coder Pinhead »

PureLust hat geschrieben:@Coder Pinhead:
Du solltest Dir generell angewöhnen mit "EnableExplicit" zu arbeiten.
Dann würden Dir solche Flüchtigkeitsfehler sofort selber selber auffallen.
Kannte den Befehl noch gar nicht der mir dabei Hilft Flüchtigkeitsfehler zu finden. Danke werde ihn dan jetzt immer nutzen um Fehler schneller zu finden <)
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Antworten