Seite 1 von 2

Wie macht man Menüs mit "ComboBoxGadget" ?

Verfasst: 14.08.2007 17:53
von Coder Pinhead
Beispiel Skript von mir:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 100, 40, "Auswahl Menü Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  ComboBoxGadget(1, 7, 10, 100, 100)
  For a = 1 To 5 : AddGadgetItem(1, -1,"Frage nummer " + Str(a) + " !!!") : Next a
  SetGadgetState(1, 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
            MessageRequester("Test","Nur ein Test mehr nicht!",0)
        EndSelect
    EndSelect
  ForEver
EndIf
Also wie baue ich da jetzt für jedes Menü einen anderen MessageRequester ein?

Verfasst: 14.08.2007 18:27
von Coder Pinhead
Habe es jetzt selber Herausgefunden <)
Dafür habe ich jetzt ein anderes Problem :(

Mein Skript:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 100, 40, "Auswahl Menü Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  CreateGadgetList(WindowID(0))
  ComboBoxGadget(1, 7, 10, 100, 100)
  For a = 0 To 2 : AddGadgetItem(1, -1,"Frage nummer " + Str(a) + " !!!") : Next a
  
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
      Case #PB_Event_Gadget
        Select EventGadget() = 1
          Case 1
            a=GetGadgetState(1)
            If a = 0
              MessageRequester("0","0",0)
            ElseIf a = 1
              MessageRequester("1","1",0)
            ElseIf a = 2
              MessageRequester("2","2",0)
            EndIf
        EndSelect
    EndSelect
  ForEver
EndIf
Wie kann man eine Box wieder abwählen falls man sich verklickt haben sollte?

Verfasst: 14.08.2007 18:35
von pede
Ich würd das Problem anders lösen...

Du fügst einfach einen Button hinzu, sobald dieser gedrückt wird, kommt die Messagebox...
und erst beim Gadget-Event des Buttons überprüfst du via GetGadgetState welcher Eintrag gerade aktiv ist, und dann kannst du die Nachricht ausgeben... :allright:

Verfasst: 14.08.2007 18:41
von Coder Pinhead
Das mit dem "MessageRequester" war ja auch nur als Beispiel gedacht bzw das ganze Sktipt :wink:

Ich möchte ein Fenster Proggen wo man verschiedene Sachen auswählt und die werden dan zum Schluß in eine Text Datei abgespeichert^^
Was das wird will ich noch nicht schreiben nacher klaut mir noch jemand meine Idee :lol: Dan muss ich mir was neues zum PB lernen ausdenken :(

Verfasst: 14.08.2007 18:44
von pede
Dann nimm statt dem ComboboxGadget das ListViewGadget...

Dort funktioniert das so wie du dirs vorstellst :allright:

Viel Spaß!

Verfasst: 15.08.2007 12:31
von Coder Pinhead
Ich habe jetzt ein ganz anderes Problem :cry:

Also wie kann ich den Text der Ausgegeben wird Ändern?

Hier mal ein kleines Beispiel Skript:

Code: Alles auswählen

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #ComboBox_0
  #Button_1
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 404, 168, 191, 115, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      ComboBoxGadget(#ComboBox_0, 20, 30, 155, 100)
      AddGadgetItem(#ComboBox_0,-1,"-----")
      AddGadgetItem(#ComboBox_0,-1,"Funktion 1")
      AddGadgetItem(#ComboBox_0,-1,"Funktion 2")
      SetGadgetState(#ComboBox_0,0)
      ButtonGadget(#Button_1, 20, 57, 100, 30, "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 = #Button_1
        Select EventGadget()
          Case #Button_1
            MessageRequester("Test Window","Ein anderer Text: "+GetGadgetText(#ComboBox_0),#PB_MessageRequester_Ok)  
        EndSelect
      EndIf
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Also der soll nicht Funktion 1 oder 2 ausgeben sondern z.b Befehl-Alpha für Funktion 1 und für Funktion 2 Befehl-Delta. Und bei ----- soll er gar nichts ausgeben.

Wie mache ich das jetzt???

Please Help :)

Danke schon mal <)

Verfasst: 15.08.2007 12:36
von Kiffi

Code: Alles auswählen

[...]
          Case #Button_1
            
            Select GetGadgetText(#ComboBox_0)
              
              Case "Funktion 1"
                Ausgabe.s = "Alpha"
                
              Case "Funktion 2"
                Ausgabe.s = "Beta"
                
            EndSelect
            
            MessageRequester("Test Window","Ein anderer Text: " + Ausgabe, #PB_MessageRequester_Ok) 
[...]


Grüße ... Kiffi

Verfasst: 15.08.2007 12:39
von Coder Pinhead
Du bist mein Retter Kiffi :mrgreen:
Dankö

Verfasst: 15.08.2007 16:02
von Coder Pinhead
Kiffi ich habe ein neues Problem :(

Und zwar geht es diesmal um ein "CheckBoxGadget" und ein "StringGadget".

Also wen die CheckBox [X] Selektiert ist soll er ein Text im StringGadget ausgeben und wen die CheckBox [ ] nicht Selektiert ist soll er gar nichts ausgeben. Wie mach ich das jetzt?

Weil wen ich das damit mach was du mir für das "ComboBoxGadget" gepostet hat gibt der immer den Text aus :/ Und bei dem was ich mir so ausgedacht habe auch :( :( :(

Verfasst: 15.08.2007 16:18
von Kiffi
Coder Pinhead hat geschrieben:Also wen die CheckBox [X] Selektiert ist soll er ein Text im StringGadget ausgeben und wen die CheckBox [ ] nicht Selektiert ist soll er gar nichts ausgeben. Wie mach ich das jetzt?

Code: Alles auswählen

[...]
  If GetGadgetState(DeinCheckBoxGadget) = 1
    SetGadgetText(DeinStringGadget, "Kuckuck!")  
  Else
    SetGadgetText(DeinStringGadget, "")  
  EndIf
[...]
Grüße ... Kiffi