Avatar billede mfrost Nybegynder
21. juli 2000 - 11:15 Der er 22 kommentarer og
1 løsning

Press Any key

Hvordan laves en simpel \'Press Any Key\' user control, som beholder focus (og ikke gør andet) indtil der trykkes på tastaturet?
Når der trykkes på en vikårlig tast, skal programmet fortsætte hvor det slap, da PressAnyKey.setFocus blev kaldt!

Findes der en bedre og alternativ løsning?

-mik
Avatar billede sjensen Nybegynder
21. juli 2000 - 11:19 #1
sub anykey
  a$ = input$
return

og så kald den hver gang du har brug for det
Avatar billede aller Nybegynder
21. juli 2000 - 11:24 #2
sjensen >> var det ikke et svar? ;)

Kim.
Avatar billede sjensen Nybegynder
21. juli 2000 - 11:28 #3
Jo kim, du har ret. Tak !
Avatar billede aller Nybegynder
21. juli 2000 - 11:29 #4
hehe, np :)

Jeg kunne jo godt selv tage dem, men det ville være lidt ledt :o

Kim.
Avatar billede mfrost Nybegynder
21. juli 2000 - 11:40 #5
jeg får compile error på
a$ = input$

(jeg benytter VB6.0)

Avatar billede sjensen Nybegynder
21. juli 2000 - 11:51 #6
Hvad siger fejlen ?

Det er muligt du skal deklarere a først (med dim) !
Avatar billede mfrost Nybegynder
21. juli 2000 - 13:04 #7
jeg får compile error : syntax error

hvor skal jeg i øvrigt indsætte sub anykey?
i forms, class modules eller user controls?

Avatar billede ultik Nybegynder
21. juli 2000 - 14:20 #8
prøv med den her :

Public Sub anykey
  Dim a
  a$ = input$
End Sub

et sted i en form eller et modul, husk dog at det skal være udenfor alle andre subs.....
Avatar billede mfrost Nybegynder
21. juli 2000 - 15:28 #9
samme resultat med dim a : syntax error
allerede i editoren markeres a$ = input$ med rødt!
Avatar billede ultik Nybegynder
21. juli 2000 - 22:15 #10
prøv at fjerne dollartegn

a = input$

Avatar billede mikker Nybegynder
22. juli 2000 - 07:56 #11
Hej mfrost!

Jeg må indrømme at der var engang hvor input$(1) klarede ærterne. Det var vistnok dengang med QBasic :-)

Men hvor irriterende den end er kan jeg s** ikke få det til at virke. :-(

Hvad med at udbygge nedenstående idé til noget du kan bruge?

Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case Chr$(KeyAscii)
Case Chr$(0) To Chr$(255)
End Select
Text1.Text = \"det lykkedes!\"
End Sub

Håber du snart får løst dit problem.
Avatar billede mfrost Nybegynder
22. juli 2000 - 09:14 #12
ultik>>hvis jeg fjerner $ fra a$, får jeg:
\"compile error: expected: (\"

mikker>>jo, textbox\'en kunne være den sidste udvej, men det giver to problemer: cursoren blinker for input, og man kan bruge TAB til at skifte til en anden control.
Kan textbox-cursoren skjules? Kan man disable TAB?
Avatar billede mikker Nybegynder
22. juli 2000 - 11:10 #13
du kan sætte tabStop = false men det bliver dit prog ikke ligefrem mere fleksibelt af.

Hvis du kunne være lidt mere præcis med hensyn til hvad du skal bruge det til ville det jo nok hjælpe på min kreativitet.

Avatar billede skwat Praktikant
23. juli 2000 - 11:48 #14
Vil du have at programmet skal holde pause mens der ventes på at brugeren trykker på en knap eller???

da kan evt. prøve at lege med
if keyascii <= 0 then
\'blablabla
endif
Avatar billede super_g Nybegynder
01. august 2000 - 00:05 #15
Jeg bruger VB 5.0
Det gode ved denne funktion er, at du også kan fange \"keypres\" LIGEMEGET om det er på din form!
Lav følgende function i et modul:

------------------ Start kopiering:

Public Declare Function GetAsyncKeyState Lib \"user32\" (ByVal vKey As Long) As Integer
Public CurrentKeyPressed(255) As Boolean

Public Function GetAllKeys()
Dim nr As Integer

For nr = 0 To 255
    If GetAsyncKeyState(nr) = -32767 Then
    CurrenctKeyPressed(nr) = True
    End If
Next
End Function

------------------ Stop kopering

Du kan så fra din form, tjekke hvilke knapper der er trykket på. Husk at musen bruger nr 1-3 (tror jeg) og HUSK at der ikke bruges ANSCII koder, så du skal lige prøve dig frem.
Send en mail for mere hjælp.
Avatar billede super_g Nybegynder
01. august 2000 - 00:12 #16
Dog skal jeg lige gøre opmærksom på, at responsen fra GetASyncKeyState vist har følgende 3 responses:
0 - Knappen holdes ikke inde
1 - Knappen er blevet trykket på
-32767 - Knappen er trykket ind
-32768 - Knappen er stadig trykket ind, Dvs at den ikke er blevet sluppen siden sidst du spurgte.
Avatar billede mfrost Nybegynder
01. august 2000 - 21:14 #17
GetAsyncKeyState synes at være funktionen der skal anvendes. Men jeg kan ikke få følgende programstump (uddrag) til at virke:

[module key code]
Public Declare Function GetAsyncKeyState Lib \"user32\" (ByVal vKey As Long) As Integer

[form code]
.
.
do
label1.caption = key.GetAsyncKeyState(1)
loop
.

label1 skulle gerne udskrive returværdien af funktionskaldet key.GetAsyncKeyState(1), der undersøger om venstre museknap holdes nede. Men der bliver ingenting udskrevet, uanset hvor mange gange eller hvor hårdt jeg trykker på min venstre museknap!
Hvad har jeg overset her?
Skulle jeg få eksemplet her til at virke, tror jeg PressAnyKey-problemet er løst.  :)

(GetAsyncKeyState bliver iøvrigt nævnt i en spil-artikel fra 1996..
tjek : http://www.microsoft.com/mind/1296/inthisissue1296.htm
--> games interview)
Avatar billede super_g Nybegynder
01. august 2000 - 21:25 #18
Det er fordi, at do og loop kører lige så hurtigt, som din pc kan klare, og derfor bruger alle resourcer. Derfor er der ikke resourcer til at opdatere label1.
Dette kan løses ved at sætte en \"DoEvents\" ind.
do
Doevents
label1 = bla bla bla
loop

Men dette bør kun være til afprøvning, da doevents gør at andre events også køres.
Jeg har en ide, der nok er bedre.
Lav en Timer (Timer1), og sæt interval til 1.

Private Sub Timer1_Timer()
Label1.Caption = GetAsyncKeyState(1)
End Sub
Avatar billede super_g Nybegynder
01. august 2000 - 21:26 #19
Utroligt hvad man gør for sølle 30 points. hehe
Avatar billede mfrost Nybegynder
01. august 2000 - 22:39 #20
100 point (hehe)
Jeg vender tilbage mht. DoEvents og Timer!
Avatar billede super_g Nybegynder
30. august 2000 - 19:37 #21
Hmmm. Glemte man ikke noget IGEN ???? Klassisk bare, at lade spørgsmålet stå uden at besvare det.
Avatar billede super_g Nybegynder
12. december 2000 - 23:02 #22
Og så først acceptere efter en halv snes måneder.
Avatar billede mfrost Nybegynder
13. december 2000 - 05:45 #23
Sådan kan det jo gå når man er en travl softwareudvikler :)
Jeg undskylder den lange ventetid, og takker for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester