welche Taste wurde gedrückt

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Dirk Knoop

Betreff: welche Taste wurde gedrückt

BeitragFr, Okt 22, 2004 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 22, 2004 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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-X

Betreff: ....

BeitragFr, Okt 22, 2004 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Okt 23, 2004 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Okt 23, 2004 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 24, 2004 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Okt 24, 2004 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Okt 26, 2004 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Okt 27, 2004 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Dirk,

Sorry das ich nie etwas ausprobiere... Wink SO sollte es aber nun endgültig gehen(Habs nicht 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 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

BeitragFr, Okt 29, 2004 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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

D2006

Administrator

BeitragFr, Okt 29, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Okt 29, 2004 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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... Rolling Eyes Crying or Very sad

@2006
Es geht nicht anders, habe ich herausgefunden.
Oder hast du eine andere Lösung?

cu simi
 

Dirk Knoop

BeitragSa, Okt 30, 2004 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group