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

Wie macht man Menüs mit "ComboBoxGadget" ?

Beitrag 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?
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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?
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag 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:
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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 :(
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Beitrag von pede »

Dann nimm statt dem ComboboxGadget das ListViewGadget...

Dort funktioniert das so wie du dirs vorstellst :allright:

Viel Spaß!
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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 <)
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 »

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
a²+b²=mc²
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag von Coder Pinhead »

Du bist mein Retter Kiffi :mrgreen:
Dankö
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Beitrag 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 :( :( :(
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: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
a²+b²=mc²
Antworten