Seite 1 von 1

ButtonGadget mit Returntaste belegen

Verfasst: 22.10.2005 19:53
von Zerosurf
Hallo!

Hier hab ich jetzt einmal ein einfaches Script, wobei ich versuche, die ButtonGadget(6) und (11) (Berechnen 1 und Berechnen 2) jeweils zu jederzeit mit der Returntaste betätigen zu können. Irgendwie kapier ich das nicht:
Hier mal das Script:

Code: Alles auswählen

Procedure ShowProgramm1()
      SetGadgetText(2,"")
      SetGadgetText(3,"")
      SetGadgetText(5,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=2 To 6
        HideGadget(a,0)
      Next
EndProcedure

Procedure ShowProgramm2()
      SetGadgetText(7,"")
      SetGadgetText(8,"")
      SetGadgetText(10,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=7 To 11
        HideGadget(a,0)
      Next
EndProcedure

 If OpenWindow(0, 216, 0, 400, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Test")
    If CreateMenu(0, WindowID())
      MenuTitle("Programme")
      MenuItem(1, "Programm 1")
      MenuItem(2, "Programm 2")
      MenuBar()
      MenuItem(3, "Ende")

    EndIf
    If CreateGadgetList(WindowID())
      ButtonGadget(0, 80, 130, 90, 20, "Programm 1")
      ButtonGadget(1, 220, 130, 90, 20, "Programm 2")
      
      StringGadget(2, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(3, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(4, 80, 70, 70, 20, "Addition", #PB_Text_Center)
      TextGadget(5, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(6, 150, 180, 90, 20, "Berechnen 1")
      
      StringGadget(7, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(8, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(9, 80, 70, 70, 20, "Multiplikation", #PB_Text_Center)
      TextGadget(10, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(11, 150, 180, 90, 20, "Berechnen 2")
      
    EndIf
      
      For a=2 To 11
        HideGadget(a,1)
      Next
       
      Repeat 
        EventID = WaitWindowEvent()
        If EventID = #PB_Event_CloseWindow 
          Quit = 1 
        ElseIf EventID = #PB_EventMenu
          If EventMenuID()=3
            Quit = 1
          EndIf 
          If  EventMenuID()=1
            ShowProgramm1()
          EndIf
          If  EventMenuID()=2
            ShowProgramm2()
          EndIf
          
        EndIf
        
        If EventID = #PB_Event_Gadget
          If EventGadgetID()=0
            ShowProgramm1()
          EndIf
          If EventGadgetID()=1
            ShowProgramm2()
          EndIf
          
          If EventGadgetID()=6
            
            aa.f = ValF(GetGadgetText(2))
            bb.f = ValF(GetGadgetText(3))
            
              
              erg1.f = aa + bb
              result1$ = StrF(erg1,2)

                                       
              SetGadgetText(5,result1$)

           EndIf
          EndIf
          If EventGadgetID()=11
            
            cc.f = ValF(GetGadgetText(7))
            dd.f = ValF(GetGadgetText(8))
            
              
              erg2.f = cc * dd
              result2$ = StrF(erg2,2)
                                       
              SetGadgetText(10,result2$)
              
           EndIf
      Until Quit=1
    EndIf
End
Bitte um Hilfe,
mfg. Zerosurf

Verfasst: 22.10.2005 20:00
von Tafkadasom2k5
Hallo!
Ich hab das bei nem programm auch mal gebraucht, habe aber ned mehr den Code da...
Ich habs aber mit AddKeyboardShortcut() gelöst.
Du setzt diesen befehl und rufst zusätzlich zu der EventID noch die MenuID ab...wenn dieser Shortcut in der MenuID auftaucht, weist du, das der Button gedrückt wurde....

Klingt sehr kompliziert, aber isset ned-mit der Hilfe sollteste dir was basteln können :)

GnAbend
DerMarc :allright: :allright:

Verfasst: 22.10.2005 20:03
von Zerosurf
Ts-Soft hat mir das auch schon gesagt, aber irgendwie klappts bei mir nicht.
Deswegen hab ich mal meinen Code vereinfacht und es jetzt als Beispiel gepostet, da mein eigentlicher Code ziemlich unübersichtlich ist.

Könntest Du es mir bitte anhand von meinem Codebeispiel zeigen?

Das täte mir unheimlich viel helfen.

Vielen Dank,
mfg. Zerosurf

Verfasst: 22.10.2005 20:16
von Tafkadasom2k5
....code den ich ned lust habe jetzt aufzuführen...

Code: Alles auswählen

For a=2 To 11
    HideGadget(a,1)
  Next
  
  AddKeyboardShortcut(0,#PB_Shortcut_Return , 111) 
  
  
  Repeat
    EventID = WaitWindowEvent()
    MenuID = EventMenuID() 
restlicher code...

Jetzt musste nur noch an der richtigen Stelle abfragen ob die "MenuID = 111" ist, und schwupps hast du deine Return taste im Anschlag ;)

Gr33tz
DerMarc

P.S.: Ich bin gerade ned durhc dein Prog durchgestiegen-ausserdem muss man es n bissl umschreiben damit es geht-weil du alles so geschrieben hast das bloss ein "WindowEvent" deine Programme zum laufen bringt...(klingt komplizierter als ichs meine...) :allright: :allright: :allright:

Verfasst: 22.10.2005 20:24
von edel
EventID liefert doch auch wm_keyup bzw wm_keydown .
Das duerfte doch fuer diesen Zweck auch reichen .

Code: Alles auswählen

    If EventID = #WM_KEYUP
      If GetFocus_() = GadgetID(6) And EventwParam() = #VK_RETURN
        Debug "RETURN"
      EndIf 
    EndIf 

Verfasst: 22.10.2005 20:36
von Zerosurf
nichts funktioniert - ich hab leider keine ahnung wo ich was hinsetzen muß von euren codes!

BITTE UM HILFE - Ich werde bald verrückt, ich scheiß schon so lang mit dieser Sache herum, daß ich schon ganz narrisch werde!

Verfasst: 22.10.2005 20:40
von edel

Code: Alles auswählen

Repeat
  EventID = WaitWindowEvent() 

  If EventID = #WM_KEYUP
    If GetFocus_() = GadgetID(6) And EventwParam() = #VK_RETURN
       Debug "RETURN"
    EndIf 
  EndIf 
[...]

Verfasst: 22.10.2005 21:00
von ts-soft

Code: Alles auswählen

Procedure ShowProgramm1()
      SetGadgetText(2,"")
      SetGadgetText(3,"")
      SetGadgetText(5,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=2 To 6
        HideGadget(a,0)
      Next
      ActivateGadget(6)
EndProcedure

Procedure ShowProgramm2()
      SetGadgetText(7,"")
      SetGadgetText(8,"")
      SetGadgetText(10,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=7 To 11
        HideGadget(a,0)
      Next
      ActivateGadget(11)
EndProcedure

 If OpenWindow(0, 216, 0, 400, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Test")
    AddKeyboardShortcut(0, #PB_Shortcut_Return, 4)
    If CreateMenu(0, WindowID())
      MenuTitle("Programme")
      MenuItem(1, "Programm 1")
      MenuItem(2, "Programm 2")
      MenuBar()
      MenuItem(3, "Ende")

    EndIf
    If CreateGadgetList(WindowID())
      ButtonGadget(0, 80, 130, 90, 20, "Programm 1")
      ButtonGadget(1, 220, 130, 90, 20, "Programm 2")
     
      StringGadget(2, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(3, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(4, 80, 70, 70, 20, "Addition", #PB_Text_Center)
      TextGadget(5, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(6, 150, 180, 90, 20, "Berechnen 1")
     
      StringGadget(7, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(8, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(9, 80, 70, 70, 20, "Multiplikation", #PB_Text_Center)
      TextGadget(10, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(11, 150, 180, 90, 20, "Berechnen 2")
     
    EndIf
     
      For a=2 To 11
        HideGadget(a,1)
      Next
       
      Repeat
        EventID = WaitWindowEvent()
        If EventID = #PB_Event_CloseWindow
          Quit = 1
        ElseIf EventID = #PB_EventMenu
          If EventMenuID()=3
            Quit = 1
          EndIf
          If  EventMenuID()=1
            ShowProgramm1()
          EndIf
          If  EventMenuID()=2
            ShowProgramm2()
          EndIf
          If EventMenuID() = 4
            Select GetFocus_()
              Case GadgetID(6)
                aa.f = ValF(GetGadgetText(2))
                bb.f = ValF(GetGadgetText(3))
               
                 
                  erg1.f = aa + bb
                  result1$ = StrF(erg1,2)
    
                                           
                  SetGadgetText(5,result1$)              
              Case GadgetID(11)
                cc.f = ValF(GetGadgetText(7))
                dd.f = ValF(GetGadgetText(8))
               
                 
                  erg2.f = cc * dd
                  result2$ = StrF(erg2,2)
                                           
                  SetGadgetText(10,result2$)
            EndSelect
          EndIf
        EndIf
       
        If EventID = #PB_Event_Gadget
          If EventGadgetID()=0
            ShowProgramm1()
          EndIf
          If EventGadgetID()=1
            ShowProgramm2()
          EndIf
         
          If EventGadgetID()=6
           
            aa.f = ValF(GetGadgetText(2))
            bb.f = ValF(GetGadgetText(3))
           
             
              erg1.f = aa + bb
              result1$ = StrF(erg1,2)

                                       
              SetGadgetText(5,result1$)

           EndIf
          EndIf
          If EventGadgetID()=11
           
            cc.f = ValF(GetGadgetText(7))
            dd.f = ValF(GetGadgetText(8))
           
             
              erg2.f = cc * dd
              result2$ = StrF(erg2,2)
                                       
              SetGadgetText(10,result2$)
             
           EndIf
      Until Quit=1
    EndIf
End

Verfasst: 22.10.2005 21:13
von Zerosurf
OK - ich hab´s geschafft - hier meine version:

Code: Alles auswählen

Procedure ShowProgramm1()
      SetGadgetText(2,"")
      SetGadgetText(3,"")
      SetGadgetText(5,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=2 To 6
        HideGadget(a,0)
      Next
      ActivateGadget(6)
EndProcedure

Procedure ShowProgramm2()
      SetGadgetText(7,"")
      SetGadgetText(8,"")
      SetGadgetText(10,"")
      For a=0 To 11
        HideGadget(a,1)
      Next
      For a=7 To 11
        HideGadget(a,0)
      Next
      ActivateGadget(11)
EndProcedure

Procedure CalcProgramm1()
            aa.f = ValF(GetGadgetText(2))
            bb.f = ValF(GetGadgetText(3))
            
              
              erg1.f = aa + bb
              result1$ = StrF(erg1,2)

                                       
              SetGadgetText(5,result1$)
EndProcedure

Procedure CalcProgramm2()
            cc.f = ValF(GetGadgetText(7))
            dd.f = ValF(GetGadgetText(8))
            
              
              erg2.f = cc * dd
              result2$ = StrF(erg2,2)
                                       
              SetGadgetText(10,result2$)
EndProcedure

 If OpenWindow(0, 216, 0, 400, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Test")
    If CreateMenu(0, WindowID())
      MenuTitle("Programme")
      MenuItem(1, "Programm 1")
      MenuItem(2, "Programm 2")
      MenuBar()
      MenuItem(3, "Ende")

    EndIf
    If CreateGadgetList(WindowID())
      ButtonGadget(0, 80, 130, 90, 20, "Programm 1")
      ButtonGadget(1, 220, 130, 90, 20, "Programm 2")
      
      StringGadget(2, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(3, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(4, 80, 70, 70, 20, "Addition", #PB_Text_Center)
      TextGadget(5, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(6, 150, 180, 90, 20, "Berechnen 1", #PB_Button_Default)
      
      StringGadget(7, 190, 50, 30, 20, "", #PB_Text_Right)
      StringGadget(8, 190, 90, 30, 20, "", #PB_Text_Right)
      TextGadget(9, 80, 70, 70, 20, "Multiplikation", #PB_Text_Center)
      TextGadget(10, 250, 70, 50, 20, "", #PB_Text_Right | #PB_Text_Border)
      ButtonGadget(11, 150, 180, 90, 20, "Berechnen 2")
      
    EndIf
      
      For a=2 To 11
        HideGadget(a,1)
      Next
       
      Repeat 
        EventID = WaitWindowEvent()
        
        If EventID = #WM_KEYUP
         If GetFocus_() = GadgetID(6) And EventwParam() = #VK_RETURN
            CalcProgramm1()
         ElseIf GetFocus_() = GadgetID(11) And EventwParam() = #VK_RETURN
            CalcProgramm2()
         EndIf
        EndIf 
        
        If EventID = #PB_Event_CloseWindow 
          Quit = 1 
        ElseIf EventID = #PB_EventMenu
          If EventMenuID()=3
            Quit = 1
          EndIf 
          If  EventMenuID()=1
            ShowProgramm1()
          EndIf
          If  EventMenuID()=2
            ShowProgramm2()
          EndIf
          
        EndIf
        
        If EventID = #PB_Event_Gadget
          If EventGadgetID()=0
            ShowProgramm1()
          EndIf
          If EventGadgetID()=1
            ShowProgramm2()
          EndIf
          
          If EventGadgetID()=6
            CalcProgramm1()
           EndIf
           
          EndIf
          If EventGadgetID()=11
            CalcProgramm2()              
           EndIf
      Until Quit=1
    EndIf
End
mfg. Zerosurf

Verfasst: 23.10.2005 01:04
von Zerosurf
Ein Problem aber hab ich noch:
Ich würde gerne nachdem ich einen Wert in das Zahlenfeld getippt habe, sofort mit der Returntaste die Berechnung starten, wie mach ich das?

mfg. Zerosurf