Seite 1 von 1

Anfängerfrage Tastenabfrage

Verfasst: 17.03.2016 23:53
von jaberg
Hallo

Ich bin neu hier.
Wollte lernen wie ich etwas einfaches programmieren kann.
Wollte einen einfachen Taschenrechner erstellen.

Absicht ist es das Eingegebene in einem Editorenfeld anzuzeigen. So das die ganze Rechnung immer zu sehen ist.
Nun habe ich mal ein Fenster erstellt wo die Tasten dargestellt werden und ein Teil der Tasten auch im Editorenfeld angezeigt werden.
so weit so gut. (ich weiss ist noch nicht vollständig)

Code: Alles auswählen

Enumeration FormFont
  #Font_Window_0_0
EndEnumeration

LoadFont(#Font_Window_0_0,"Courier", 19)

Global Button_1, Button_2, Button_3, Button_9, Button_6, Button_8, Button_5, Button_7, Button_4, Button_division, Button_multi, Button_0, Button_minus, Button_punkt, Button_plus, ListView_0

If OpenWindow(0,100,100,500,400,"Fenster 1",#PB_Window_SystemMenu) 

  Button_1 = ButtonGadget(1, 320, 80, 40, 25, "1")
  Button_2 = ButtonGadget(2, 380, 80, 40, 25, "2")
  Button_3 = ButtonGadget(3, 440, 80, 40, 25, "3")
  Button_9 = ButtonGadget(9, 440, 160, 40, 25, "9")
  Button_6 = ButtonGadget(6, 440, 120, 40, 25, "6")
  Button_8 = ButtonGadget(8, 380, 160, 40, 25, "8")
  Button_5 = ButtonGadget(5, 380, 120, 40, 25, "5")
  Button_7 = ButtonGadget(7, 320, 160, 40, 25, "7")
  Button_4 = ButtonGadget(4, 320, 120, 40, 25, "4")
  Button_division = ButtonGadget(14, 370, 300, 40, 25, "/")
  Button_multi = ButtonGadget(13, 320, 300, 40, 25, "*")
  Button_0 = ButtonGadget(10, 380, 200, 40, 25, "0")
  Button_minus = ButtonGadget(12, 370, 260, 40, 25, "-")
  Button_punkt = ButtonGadget(15, 440, 200, 40, 25, ".")
  Button_plus = ButtonGadget(11, 320, 260, 40, 25, "+")
  ListView_0 = EditorGadget(99, 50, 80, 240, 250)  
  SetGadgetFont(99, FontID(#Font_Window_0_0))    
    
  Repeat
    EventID = WaitWindowEvent()
    
;     a$ = KeyboardInkey()
    
    
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    
    If EventID = #PB_Event_Gadget
      
      If EventGadget()=1
       	SetGadgetItemText(99,6,"1")
      EndIf        
        
      If EventGadget()=2
	      SetGadgetItemText(99,1,"2")
	    EndIf
	    
      If EventGadget()=3
	      SetGadgetItemText(99,1,"3")
	    EndIf
	    
	    If EventGadget()=4
	      SetGadgetItemText(99,1,"4")
	    EndIf
	    
      If EventGadget()=5
	      SetGadgetItemText(99,1,"5")
	    EndIf
	    
	    If EventGadget()=6
	      SetGadgetItemText(99,1,"6")
	    EndIf
	    
	    If EventGadget()=7
	      SetGadgetItemText(99,1,"7")
	    EndIf
	    
	    If EventGadget()=8
	      SetGadgetItemText(99,1,"8")
	    EndIf
	    
	    If EventGadget()=9
	      SetGadgetItemText(99,1,"9")
	    EndIf
	    
	    If EventGadget()=10
	      SetGadgetItemText(99,1,"0")
	    EndIf
	    
	    If EventGadget()=15
	      SetGadgetItemText(99,1,".")
	    EndIf
	    
	    If EventGadget()=12
	      SetGadgetItemText(99,1,"-")
	    EndIf
	    	    	    
     EndIf
  Until Quit=1
EndIf


Aber ich wollte das es auch Zahlen reinschreibt wenn ich diese mit der Tastatur eingebe.

Ich habe nun einige Stunden im Forum und in der Hilfe nachgesehen. Aber ich werde irgendwie nicht schlau daraus.

Wenn ich das richtig verstehe sollte eingeschaltet werden das die Tasten ausgewertet werden.
und in dem teil mit dem repeat sollte dann abgefragt werden welche taste gedrückt wurde und diese kann dann ausgewertet werden.

Hier meine stümperhaften versuch das Problem zu lösen. (Den Ausschnitt wo die Veränderungen drin sind)

Code: Alles auswählen

  ExamineKeyboard()  
    
  Repeat
    EventID = WaitWindowEvent()
    
    a$ = KeyboardInkey()
    
    
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    If EventID = #PB_Event_Gadget
      If EventGadget()=1
       	SetGadgetItemText(99,6,"1")
       EndIf
       
      If a$ ="1" 
      SetGadgetItemText(99,6,"1")
      EndIf
Suche eine möglichst schlanke und einfache lösung für mein Problem.

Danke vielmals im Voraus für euere Hilfe

Re: Anfängerfrage Tastenabfrage

Verfasst: 18.03.2016 00:43
von jaberg
Sorry Leute.
Mann bin ich Doof.
Ich habe ganz vergessen nur weil ich auf einen Buttom klicke ist der Curser nicht automatisch im Editorgadget, weil wenn der Curser dort aktive ist, wird auch ganz automatisch alle geschrieben was ich möchte.
Sorry aber danke vielmals für das mitdenken.
glg erwin :oops: :oops: :oops: :oops:

Re: Anfängerfrage Tastenabfrage

Verfasst: 18.03.2016 18:21
von mk-soft
Das ist bei Windows ein bisschen doof. Die Tasten kommen nicht immer am Hauptfenster an,
sondern immer an den aktiven Gadget.

Es geht nur über Keyboard Hook was rechts komplex ist oder über AddKeyboardShortcut.

Werd mal was basteln... Grob die Richtung

Code: Alles auswählen


Enumeration FormFont
  #Font_Window_0_0
EndEnumeration

LoadFont(#Font_Window_0_0,"Courier", 19)

Global Button_1, Button_2, Button_3, Button_9, Button_6, Button_8, Button_5, Button_7, Button_4, Button_division, Button_multi, Button_0, Button_minus, Button_punkt, Button_plus, ListView_0

Procedure InitTasten()
  
  AddKeyboardShortcut(0, #PB_Shortcut_0, 1000)
  AddKeyboardShortcut(0, #PB_Shortcut_1, 1001)
  AddKeyboardShortcut(0, #PB_Shortcut_2, 1002)
  AddKeyboardShortcut(0, #PB_Shortcut_3, 1003)
  AddKeyboardShortcut(0, #PB_Shortcut_4, 1004)
  AddKeyboardShortcut(0, #PB_Shortcut_5, 1005)
  AddKeyboardShortcut(0, #PB_Shortcut_6, 1006)
  AddKeyboardShortcut(0, #PB_Shortcut_7, 1007)
  AddKeyboardShortcut(0, #PB_Shortcut_8, 1008)
  AddKeyboardShortcut(0, #PB_Shortcut_9, 1009)
  
  AddKeyboardShortcut(0, #PB_Shortcut_Pad0, 1000)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad1, 1001)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad2, 1002)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad3, 1003)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad4, 1004)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad5, 1005)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad6, 1006)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad7, 1007)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad8, 1008)
  AddKeyboardShortcut(0, #PB_Shortcut_Pad9, 1009)
  
  AddKeyboardShortcut(0, #PB_Shortcut_Decimal, 1015)
  AddKeyboardShortcut(0, #PB_Shortcut_Divide, 1014)
  AddKeyboardShortcut(0, #PB_Shortcut_Multiply, 1013)
  AddKeyboardShortcut(0, #PB_Shortcut_Subtract, 1012)
  AddKeyboardShortcut(0, #PB_Shortcut_Add, 1011)
  
  AddKeyboardShortcut(0, #PB_Shortcut_Back, 1016)
  AddKeyboardShortcut(0, #PB_Shortcut_Delete, 1016)
  AddKeyboardShortcut(0, #PB_Shortcut_C, 1016)
  
EndProcedure


If OpenWindow(0,100,100,500,400,"Fenster 1",#PB_Window_SystemMenu) 
  
  Button_0 = ButtonGadget(0, 380, 200, 40, 25, "0")
  Button_1 = ButtonGadget(1, 320, 80, 40, 25, "1")
  Button_2 = ButtonGadget(2, 380, 80, 40, 25, "2")
  Button_3 = ButtonGadget(3, 440, 80, 40, 25, "3")
  Button_9 = ButtonGadget(9, 440, 160, 40, 25, "9")
  Button_6 = ButtonGadget(6, 440, 120, 40, 25, "6")
  Button_8 = ButtonGadget(8, 380, 160, 40, 25, "8")
  Button_5 = ButtonGadget(5, 380, 120, 40, 25, "5")
  Button_7 = ButtonGadget(7, 320, 160, 40, 25, "7")
  Button_4 = ButtonGadget(4, 320, 120, 40, 25, "4")
  
  Button_punkt = ButtonGadget(15, 440, 200, 40, 25, ".")
  Button_division = ButtonGadget(14, 370, 300, 40, 25, "/")
  Button_multi = ButtonGadget(13, 320, 300, 40, 25, "*")
  Button_minus = ButtonGadget(12, 370, 260, 40, 25, "-")
  Button_plus = ButtonGadget(11, 320, 260, 40, 25, "+")
  ListView_0 = EditorGadget(99, 50, 80, 240, 250)  
  SetGadgetFont(99, FontID(#Font_Window_0_0))    
  
  InitTasten()
  
  Repeat
    EventID = WaitWindowEvent()
    
    ;     a$ = KeyboardInkey()
    
    
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    
    If EventID = #PB_Event_Menu
      menu = EventMenu()
      If menu >= 1000 And menu <= 1016
        PostEvent(#PB_Event_Gadget, 0, menu - 1000, #PB_EventType_LeftClick)
      ElseIf menu = 1016
        If Len(a$) > 0
          a$ = Left(a$, Len(a$) - 1)
          SetGadgetText(99,a$)
        EndIf  
      EndIf
      
    ElseIf EventID = #PB_Event_Gadget
      
      If EventGadget()=1
        a$ = a$ + "1"
        SetGadgetText(99,a$)
      EndIf        
      
      If EventGadget()=2
        a$ = a$ + "2"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=3
        a$ = a$ + "3"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=4
        a$ = a$ + "4"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=5
        a$ = a$ + "5"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=6
        a$ = a$ + "6"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=7
        a$ = a$ + "7"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=8
        a$ = a$ + "8"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=9
        a$ = a$ + "9"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=0
        a$ = a$ + "0"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=11
        a$ = a$ + "+"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=12
        a$ = a$ + "-"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=13
        a$ = a$ + "*"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=14
        a$ = a$ + "/"
        SetGadgetText(99,a$)
      EndIf
      
      If EventGadget()=15
        a$ = a$ + "."
        SetGadgetText(99,a$)
      EndIf
      
    EndIf
  Until Quit=1
EndIf