welche Taste wurde gedrückt
Übersicht

Dirk KnoopBetreff: welche Taste wurde gedrückt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Select WaitEvent(1000) Case $103 End ;Text verschieben If KeyDown(205)=1 Then textx=textx+1 If KeyDown(203)=1 Then textx=textx-1 If KeyDown(200)=1 Then texty=texty-1 If KeyDown(208)=1 Then texty=texty+1 .xxxxxxxxxxxxxxxxx ;Bild verschieben If KeyDown(31)=1 Then bildx=bildx+1 If KeyDown(30)=1 Then bildx=bildx-1 If KeyDown(17)=1 Then bildy=bildy-1 If KeyDown(44)=1 Then bildy=bildy+1 Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=0 Then xx=0 If xx=1 Then End EndSelect Bei diesem Code möchte ich, wenn beispielsweise "w" gedrückt wird, das textx=textx+1 gerechnet wird. Mit Case $103 ermittle ich nur, ob eine Taste gedrückt wurde, wenn ja, wird der Befehl END ausgeführt. Klappt also wunderbar. Wenn ich nun das END wieder lösche, soll nun geprüft werden, welche Taste gedrückt wurde. Wie geht das ? Gruß, Dirk Knoop |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
pogi02 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich bin mir jetzt nicht ganz sicher aber ich glaub mit taste=Waitkey() da bekommst du den ASCII-Code der gedrückten Taste jedoch wird mit diesem Befehl das Programm komplett gestoppt bis eine Taste gedrückt wurde, falls die Programmausführung weiterhin laufen soll nimm besser taste=GETKEY () Dieser Befehl liefert auch den ASCII-Code, wenn keine Taste gedrückt wird ist dann die Variable 0 Edit: Ach ja und dein Code Code: [AUSKLAPPEN] Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=0 Then xx=0 If xx=1 Then End EndSelect Das If xx=0 Then xx=0 kannst du ja prinziepell weglassen?!? |
||
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Case $103 Confirm(EventData()) Siehe EventData() Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für Eure Antworten.
Das klappt nun ganz gut. Wenn ich dieses Programm ausführe, und die Tasten WYSA drücke, wird dies hier Text 10,10,bildx Text 10,30,bildy angezeigt, klappt auch super. Wenn ich dann aber auf einen der beiden Buttons klicke, wird das Drücken der Tasten wyas nicht mehr angezeigt. Woran liegt das ? Gruß, Dirk Code: [AUSKLAPPEN] ;Hauptfenster window = CreateWindow("Win1",50,50,500,400,0,9) ;Canvas can = CreateCanvas(0,0,50,150,window) SetBuffer CanvasBuffer(can) r1=CreateButton("Bunt",100,10+125,140,20,window,1) r2=CreateButton("Bunt",100,30+125,140,20,window,1) UpdateWindowMenu window .Start Cls Text 10,10,bildx Text 10,30,bildy Text 10,100,rahmenauswahl FlipCanvas (can) Select WaitEvent() Case $103 hil=(EventData()) If hil=115 Then bildx=bildx+1 If hil=97 Then bildx=bildx-1 If hil=119 Then bildy=bildy-1 If hil=121 Then bildy=bildy+1 Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=1 Then End Case $401;Rahmengruppe auswählen Select EventSource() Case r1 rahmenauswahl=1 anzahlrahmen=4 Case r2 rahmenauswahl=2 anzahlrahmen=3 End Select End Select Goto start |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: $103 - Event wird gesendet, wenn Taste lange Zeit festgehalten wird und dadurch automatische Wiederholung entsteht. Dies funktioniert aber nicht, wenn ein Objekt ausgewählt ist. EVENTDATA liefert Asciicode zurück. Ich denke es liegt an dem .... Lösungsvorschlag: Code: [AUSKLAPPEN] ;Hauptfenster window = CreateWindow("Win1",50,50,500,400,0,9) ;Canvas can = CreateCanvas(0,0,50,150,window) SetBuffer CanvasBuffer(can) r1=CreateButton("Bunt",100,10+125,140,20,window,1) r2=CreateButton("Bunt",100,30+125,140,20,window,1) UpdateWindowMenu window .Start Cls Text 10,10,bildx Text 10,30,bildy Text 10,100,rahmenauswahl FlipCanvas (can) Select WaitEvent(1000) Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=1 Then End Case $401;Rahmengruppe auswählen Select EventSource() Case r1 rahmenauswahl=1 anzahlrahmen=4 Case r2 rahmenauswahl=2 anzahlrahmen=3 End Select End Select hil = GetKey() If hil=115 Then bildx=bildx+1 if hil=97 Then bildx=bildx-1 If hil=119 Then bildy=bildy-1 If hil=121 Then bildy=bildy+1 Goto start Habs aber nicht getestet.... |
||
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo simi,
das läuft leider auch nicht. Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi dirk,
ich hab nun eine Lösung gefunden: HotKeyEvent Code: [AUSKLAPPEN] ;Hauptfenster window = CreateWindow("Win1",50,50,500,400,0,9) ;Canvas can = CreateCanvas(0,0,50,150,window) SetBuffer CanvasBuffer(can) r1=CreateButton("Bunt",100,10+125,140,20,window,1) r2=CreateButton("Bunt",100,30+125,140,20,window,1) UpdateWindowMenu window ;Für jede Taste einen Hotkey beim Event $666 erstellen for x = 1 to 200 HOTKEYEVENT x,0,$666,x next .Start Cls Text 10,10,bildx Text 10,30,bildy Text 10,100,rahmenauswahl FlipCanvas (can) Select WaitEvent() ;Denn selbst erstellten Event abfragen Case $666 hil=(EventData()) If hil=115 Then bildx=bildx+1 If hil=97 Then bildx=bildx-1 If hil=119 Then bildy=bildy-1 If hil=121 Then bildy=bildy+1 Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=1 Then End Case $401;Rahmengruppe auswählen Select EventSource() Case r1 rahmenauswahl=1 anzahlrahmen=4 Case r2 rahmenauswahl=2 anzahlrahmen=3 End Select End Select Goto start cu simi |
||
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo simi,
leider läuft das bei mir auch nichtt. Sobald ich das Programm starte, kommt die Fehlermeldung: Too many hotkey events registered. Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Dirk,
Sorry das ich nie etwas ausprobiere... ![]() Code: [AUSKLAPPEN] ;Hauptfenster window = CreateWindow("Win1",50,50,500,400,0,9) ;Canvas can = CreateCanvas(0,0,50,150,window) SetBuffer CanvasBuffer(can) r1=CreateButton("Bunt",100,10+125,140,20,window,1) r2=CreateButton("Bunt",100,30+125,140,20,window,1) UpdateWindowMenu window ;Für jede Taste einen Hotkey beim Event $666 erstellen HOTKEYEVENT 115,0,$666,115 HOTKEYEVENT 97,0,$666,97 HOTKEYEVENT 119,0,$666,119 HOTKEYEVENT 121,0,$666,121 .Start Cls Text 10,10,bildx Text 10,30,bildy Text 10,100,rahmenauswahl FlipCanvas (can) Select WaitEvent() ;Denn selbst erstellten Event abfragen Case $666 hil=(EventData()) If hil=115 Then bildx=bildx+1 If hil=97 Then bildx=bildx-1 If hil=119 Then bildy=bildy-1 If hil=121 Then bildy=bildy+1 Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=1 Then End Case $401;Rahmengruppe auswählen Select EventSource() Case r1 rahmenauswahl=1 anzahlrahmen=4 Case r2 rahmenauswahl=2 anzahlrahmen=3 End Select End Select Goto start |
||
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo simi,
hatte leider erst heute Zeit, den Code auszuprobieren. Leider passiert hier gar nichts, wenn die Tasten gedrückt werden. Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst die Eingabe doch ganz normal in einer separaten Funktion abarbeiten.
Oder ist es so wichtig, dass du es mit Events löst? MfG |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Endgültige Lösung(getestet)
Code: [AUSKLAPPEN] ;Hauptfenster window = CreateWindow("Win1",50,50,500,400,0,9) ;Canvas can = CreateCanvas(0,0,50,150,window) SetBuffer CanvasBuffer(can) r1=CreateButton("Bunt",100,10+125,140,20,window,1) r2=CreateButton("Bunt",100,30+125,140,20,window,1) UpdateWindowMenu window ;Für jede Taste einen Hotkey beim Event $666 erstellen HotKeyEvent 205,0,$666,205 HotKeyEvent 203,0,$666,203 HotKeyEvent 200,0,$666,200 HotKeyEvent 208,0,$666,208 .Start Cls Text 10,10,bildx Text 10,30,bildy Text 10,100,rahmenauswahl FlipCanvas (can) Select WaitEvent() ;Denn selbst erstellten Event abfragen Case $666 hil=(EventData()) If hil=205 Then bildx=bildx+1 If hil=203 Then bildx=bildx-1 If hil=208 Then bildy=bildy-1 If hil=200 Then bildy=bildy+1 Case $803;Fenster schliessen xx=Confirm("Wirklich beenden ?",1) If xx=1 Then End Case $401;Rahmengruppe auswählen Select EventSource() Case r1 rahmenauswahl=1 anzahlrahmen=4 Case r2 rahmenauswahl=2 anzahlrahmen=3 End Select End Select Goto start So, der Fehler war, das ich anstatt Scancodes ASCII-Codes angab... ![]() ![]() @2006 Es geht nicht anders, habe ich herausgefunden. Oder hast du eine andere Lösung? cu simi |
||
Dirk Knoop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo simi,
der Code funktioniert sehr gut. Danke für Deine Hilfe. Gruß, Dirk |
||
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist www.torchance.de - ein etwas anderer Fußball-Manager |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group