"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