/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
program til at reagere på en tast fra tast~
Fra : Joachim Boll


Dato : 20-04-05 13:51

Hej gruppe

Jeg sidder og roder med et vb program, hvor jeg vha. 'Form_KeyDown(KeyCode
As Integer, Shift As Integer)'
kan få mit program til at reagere på en tast fra tastaturet det virker fint,
men jeg vil også gerne bruge 'space' knappen, dette gir dog lidt problemer,
for hvis en anden knap på slærmen har fokus vil space automatisk aktiver
denne, istedet for at udføre min kommando. har i nogle gode ide'er?



 
 
Tomas Christiansen (20-04-2005)
Kommentar
Fra : Tomas Christiansen


Dato : 20-04-05 22:20

Joachim Boll skrev:
> 'Form_KeyDown(KeyCode As Integer, Shift As Integer)'
....
> fint, men jeg vil også gerne bruge 'space' knappen, dette gir dog...

Har du husket at sætte KeyPreview til True på formen?

-------
Tomas

Joachim Boll (21-04-2005)
Kommentar
Fra : Joachim Boll


Dato : 21-04-05 07:44

Som jeg skrev i mit første indlæg, så har jeg faktisk ingen problemer med at
få programmet til at reagere på en tast fra tataturet, jeg bruge bla.
piletasterne til at styre nogle forskellige ting med og det virker fint, så
'KeyPreview' er selvfølgelig sat til 'True'. Nej problemet er at windows
også benytter 'space' tasten til at aktivere den knap på formen som har
fokus, det vil jeg gerne have deaktiveret så jeg kan benytte 'space' tasten
til mit program.

"Tomas Christiansen" <toc-01-nospam-removethisword@blikroer.dk> skrev i en
meddelelse news:Xns963EED3FC91BDtomascdenmark@212.242.40.162...
> Joachim Boll skrev:
> > 'Form_KeyDown(KeyCode As Integer, Shift As Integer)'
> ...
> > fint, men jeg vil også gerne bruge 'space' knappen, dette gir dog...
>
> Har du husket at sætte KeyPreview til True på formen?
>
> -------
> Tomas



Jan Jørgensen (21-04-2005)
Kommentar
Fra : Jan Jørgensen


Dato : 21-04-05 10:17

Hej Joachim

Jeg er ikke ekspert, med prøv nedenstående kode:

Private Sub Command1_Click()
MsgBox "TEST"
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
KeyCode = 0
Label1.Caption = "TEST"
End If

End Sub

mvh
Jan Jørgensen
"Joachim Boll" <joachimFJERN@DETTEinmedico.dk> skrev i en meddelelse
news:42674bd1$0$73745$edfadb0f@dread14.news.tele.dk...
> Som jeg skrev i mit første indlæg, så har jeg faktisk ingen problemer med
> at
> få programmet til at reagere på en tast fra tataturet, jeg bruge bla.
> piletasterne til at styre nogle forskellige ting med og det virker fint,
> så
> 'KeyPreview' er selvfølgelig sat til 'True'. Nej problemet er at windows
> også benytter 'space' tasten til at aktivere den knap på formen som har
> fokus, det vil jeg gerne have deaktiveret så jeg kan benytte 'space'
> tasten
> til mit program.
>
> "Tomas Christiansen" <toc-01-nospam-removethisword@blikroer.dk> skrev i en
> meddelelse news:Xns963EED3FC91BDtomascdenmark@212.242.40.162...
>> Joachim Boll skrev:
>> > 'Form_KeyDown(KeyCode As Integer, Shift As Integer)'
>> ...
>> > fint, men jeg vil også gerne bruge 'space' knappen, dette gir dog...
>>
>> Har du husket at sætte KeyPreview til True på formen?
>>
>> -------
>> Tomas
>
>



Tomas Christiansen (21-04-2005)
Kommentar
Fra : Tomas Christiansen


Dato : 21-04-05 10:27

Joachim Boll skrev:
> ...så 'KeyPreview' er selvfølgelig sat til 'True'. Nej
> problemet er at windows også benytter 'space' tasten til at aktivere
> den knap på formen som har fokus, det vil jeg gerne have deaktiveret
> så jeg kan benytte 'space' tasten til mit program.

OK. Men du skrev oprindelig at "for hvis en anden knap på slærmen har
fokus vil space automatisk aktiver denne, istedet for at udføre min
kommando". Når du skriver at din knap bliver aktiveret _i stedet for_ din
Form_KeyDown, lyder det som om KeyPreview er sat til False!

Hvis jeg sætte KeyPreview=True på en form, og placerer en CommandButton
på den, så vil aktiverring af space - såfremt fokus er på denne
CommandButton - medføre at der først udføres en Form_KeyDown og derefter
Command_Click.

Du kan måske udtænke en snedig måde at styre det på ved at sætte et flag
i Form_KeyDown, som fortæller at næste Command_Click skal ignoreres.
Command_Click skal naturligvis checke på dette flag og altid nulstille.

Eksempel:

Private LockSpace As Boolean

Private Sub Command1_Click()
Debug.Print "Command1_Click", LockSpace
If Not LockSpace Then
'Gør dit arbejde!
End If
LockSpace = False
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "Form_KeyDown " & KeyCode & " , " & Shift
LockSpace = KeyCode = 32 And Shift = 0
End Sub

-------
Tomas

ST (21-04-2005)
Kommentar
Fra : ST


Dato : 21-04-05 12:39


"Joachim Boll" <joachimFJERN@DETTEinmedico.dk> skrev i en meddelelse
news:42674bd1$0$73745$edfadb0f@dread14.news.tele.dk...
> Som jeg skrev i mit første indlæg, så har jeg faktisk ingen problemer med
at
> få programmet til at reagere på en tast fra tataturet, jeg bruge bla.
> piletasterne til at styre nogle forskellige ting med og det virker fint,

> 'KeyPreview' er selvfølgelig sat til 'True'. Nej problemet er at windows
> også benytter 'space' tasten til at aktivere den knap på formen som har
> fokus, det vil jeg gerne have deaktiveret så jeg kan benytte 'space'
tasten
> til mit program.

du kunne tilføje sidst i din kode for knappen at fokus skal være på form1
(eller hvad du vil have fokus skal være på).



Agner (21-04-2005)
Kommentar
Fra : Agner


Dato : 21-04-05 13:52


"Joachim Boll" <joachimFJERN@DETTEinmedico.dk> skrev i en meddelelse
news:42665016$0$73749$edfadb0f@dread14.news.tele.dk...
> Hej gruppe
>
> Jeg sidder og roder med et vb program, hvor jeg vha. 'Form_KeyDown(KeyCode
> As Integer, Shift As Integer)'
> kan få mit program til at reagere på en tast fra tastaturet det virker
> fint,
> men jeg vil også gerne bruge 'space' knappen, dette gir dog lidt
> problemer,
> for hvis en anden knap på slærmen har fokus vil space automatisk aktiver
> denne, istedet for at udføre min kommando. har i nogle gode ide'er?

Set Tabstop til False på de CommandButtons som driller (formentlig dem
alle).
Du skal gøre det i propertyBoxen. Du kan godt i MyForm_KeyDown event
sætte Command1.Tabindex = False, og så bagefter sæt den tilbage til True ved
anden metode (så skal KeyPreview være sat til True), men den går bare
ikke alligevel. Button proceduren kører alligevel, fordi det ikke er muligt
at tyvstjæle button-focus til for eksempel en lille textBox sat op til kun
det formål, når MyForm_KeyDown proceduren kører. Af samme grund
virker STs forslag heller ikke. Og det hjælper ikke at indsætte DoEvents.

Hvis du absolut ikke vil undvære Tab-funktionen, så kan det gøres således:

Dim byPas As Boolean ' i declaration section

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then byPas = True
End Sub

Private Sub Command1_Click()
If byPas then
byPas=False
Exit Sub
End If
Do stuff here
End Sub

Den If...Then...sætning skal du så ha i hver CommandButton.

agner





Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste