ButtonGadget mit Returntaste belegen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

ButtonGadget mit Returntaste belegen

Beitrag 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
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Beitrag 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
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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 
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

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

Beitrag 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 
[...]
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

Beitrag 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
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
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Beitrag 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
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Beitrag 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
Antworten