Gå til innhold

Anbefalte innlegg

Jeg holder på å lage en kalkulator, bare for å få litt øvelse i VB og slikt. Jeg har tenkt å "binde" tall-tastene til tall slik at man ikke trenger å stå i tekstboksen å skrive.

 

Kan jeg få disse til å fungere uansett hvilket object som har "Focus" ? Prøvde meg litt frem, slik at det ble:

Code:

Private Sub Command1_Click()
Command2.SetFocus
End Sub

 

Dette gjør at den setter focus til txt_svar. Der har jeg lagt inn dette:

Code:

Private Sub Command2_KeyPress(KeyCode As Integer)
If KeyCode = 31 Then
Text1.Text = "1"
End If
End Sub

 

Men dette ser ikke ut til å virke..

 

Hvordan skal jeg gjøre dette ? Kan det legges en plass slik at den oppfatter "KeyPress" og utfører dem?

 

Gi gjerne links til tutorials og slike ting.

Lenke til kommentar
Videoannonse
Annonse

Det enkleste du kan gjøre er å gå på Properties til Formen din og sette KeyPreview = True.

Da vil alle tastetrykk komme til formens KeyPress, uansett hvilket objekt som har fokus.

 

F.eks:

 

Private Sub Form_KeyPress(KeyAscii As Integer)

'Sjekker om tasten som er trykket er numerisk

If IsNumeric(Chr(KeyAscii)) Then

Text1.Text = Text1.Text & Chr(KeyAscii)

ElseIf ...

bla bla

End If

End Sub

Lenke til kommentar
  • 7 måneder senere...

Du kan også:

 

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const GWL_STYLE = (-16)

Const ES_NUMBER = &H2000&

 

Public Sub SetNumber(NumberText As TextBox, Flag As Boolean)

Dim curstyle As Long, newstyle As Long

 

'retrieve the window style

curstyle = GetWindowLong(NumberText.hwnd, GWL_STYLE)

 

If Flag Then

curstyle = curstyle Or ES_NUMBER

Else

curstyle = curstyle And (Not ES_NUMBER)

End If

 

'Set the new style

newstyle = SetWindowLong(NumberText.hwnd, GWL_STYLE, curstyle)

'refresh

NumberText.Refresh

End Sub

 

Private Sub Form_Load()

 

' Isteden for Text1 skriv inn navnet på den tekstboksen du skal gjøre om

' til numretisk

 

SetNumber Text1, True

 

End Sub

 

 

Nå kan ikke brukeren skrive inn bokstaver i tekstboksen

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...