wildjam Skrevet 2. april 2004 Del Skrevet 2. april 2004 Holder fortsatt på med kalkulatoren min, men jeg ville gjerne få lov å bruke tastene på tastaturet til å sette inn tallene, (eller aktivere en funksjon) Noen forslag til dette? F.eks Trykke på '1' skal aktivere knappen med '1' på kalkulatoren... ThanX in advance! Lenke til kommentar
d0ppler Skrevet 2. april 2004 Del Skrevet 2. april 2004 har sliti med noe tilsvarende, og den måten jeg brukte var et såkalt "hack", dvs. jeg lagde en PictureBox som gikk i ett med selve formen, slik at den ser ut som den er usynlig, men Visible = True. Deretter lagde jeg en Timer som satt fokus på den "usynlige picture boxen" et par ganger i sekundet, eks: Private Sub Timer1_Timer() Picture1.SetFocus End Sub deretter kan du skrive en KeyDown-event På pictureboxen : Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKey1: Command1_Click Case vbKey2: Command2_Click End Select End Sub vet at dette er grisete, men har faktisk ingen bedre forslag desverre.. Lenke til kommentar
wildjam Skrevet 2. april 2004 Forfatter Del Skrevet 2. april 2004 Takker! Hvis det finnes noen andre forslag til løsninger tar jeg gjerne imot det oxo... Foresten, signaturen din va utrolig bra!!! den ska jeg huske! Lenke til kommentar
d0ppler Skrevet 2. april 2004 Del Skrevet 2. april 2004 Foresten, signaturen din va utrolig bra!!! den ska jeg huske! takk, men nå skal ikke jeg påta meg æren for å være forfatteren bak denne glupe tesen Lenke til kommentar
aadnk Skrevet 2. april 2004 Del Skrevet 2. april 2004 En lettere metode er å legge til en & i begynnelsen av Caption, men dette krever at brukeren må bruke ALT+1 hvis f.eks knappen 1 skal trykkes. En derfor mer "sofistikert", men også mer kompleks metode ville være å sjekke tastestatusen til snarveisknappene med GetKeyState. Vi kan gjøre dette ved å gå igjenom alle tastene og bruke tag'en som en variabel for å lagre hvilken tast vi skal referere til. For å kjøre tastens prosedyre bruker vi SendMessage. Her er koden: Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Dim ExitLoop As Boolean Private Sub Form_Load() ' For å lage en snarvei til en av knappene ganske enkelt gjør ' noe lignende dette: ' Command1.Tag = vbKeyA Show KeyboardLoop End Sub Private Sub KeyboardLoop() Dim clcObj As Control Do Until ExitLoop For Each clcObj In Controls If IsNumeric(clcObj.Tag) Then If GetKeyState(clcObj.Tag) < 0 Then SendMessage clcObj.hwnd, WM_LBUTTONDOWN, 0&, ByVal 0& SendMessage clcObj.hwnd, WM_LBUTTONUP, 0&, ByVal 0& End If End If Next Sleep 10 DoEvents Loop End Sub Private Sub Form_Unload(Cancel As Integer) ExitLoop = True End Sub Dette gjelder ikke bare for knapper, men også for alle andre objekter som har hwnd egenskap. Derfor, vær forsiktig og for all del: ikke legg til numretiske verdier i Labels, Shapes, Timere, Lines, Frames og Images i den samme formen. Lenke til kommentar
d0ppler Skrevet 2. april 2004 Del Skrevet 2. april 2004 bra kode, men forferdelig formatert. Bruk innrykk, så er det mye lettere for alle å lese den. Lenke til kommentar
Rep Skrevet 3. april 2004 Del Skrevet 3. april 2004 Mange måter en kan løse ting på, har en annen metode her. Først slår en på KeyPreview på formen, slik at alle tastetrykk blir registrert der uansett hvilket object i formen som er aktiv. Deretter sjekke alle tastetrykk på formen om det er numerisk og deretter legge tallene der de skal. Private Sub Form_Load() Me.KeyPreview = True End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If IsNumeric(Chr(KeyAscii)) Then Text1.Text = Text1.Text & Chr(KeyAscii) End Sub Lenke til kommentar
GeirGrusom Skrevet 4. april 2004 Del Skrevet 4. april 2004 Bedre å bruke GetAsyncKeyState en GetKeyState. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå