Avatar billede orca Nybegynder
15. maj 2002 - 21:46 Der er 10 kommentarer og
1 løsning

Override keydown

Hej alle. Møj simpelt spm.

Jeg har en textbox hvor jeg opfanger tryk på tab tasten. Jeg skriver så noget text til tekstboksen, men herefter ønsker jeg ikke at der skal tilføjes en tab til teksten. Så hvordan gør jeg således der ikke bliver trykket tab efter jeg har opfanget trykket? Jeg ville gætte på noget med Return True men det virker ik.

Mvh Mark
Avatar billede ducks Nybegynder
15. maj 2002 - 22:02 #1
vil du ikke prøve at skære det lidt mere ud?
Avatar billede orca Nybegynder
15. maj 2002 - 22:10 #2
Jo, det er egentligt lidt svært at læse nu hvor jeg selv ser på det :). Mit tekstfelts keydown event ser således ud:

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Then
        Text1.SelLength = 1
        Text1.SelText = "  "
    End If
End Sub

Det gør at hver gang jeg trykker tab bliver der tilføjet to mellemrum, men herefter bliver der også indsat tab i feltet, jeg vil kun have mine to mellemrum.

Er det nemmere at forstå? Ellers så sig til :).
Avatar billede ducks Nybegynder
15. maj 2002 - 22:49 #3
ja hvis det er fordig når du trykker på tab kommer der 2 mellemrum (iorden) men den sprænger samtidig videre til næste "objekt" (iuorden)
Avatar billede ducks Nybegynder
15. maj 2002 - 23:00 #4
jeg har selv lige prøvet.... ser mystisk ud, prøver om ikke andet så i morgen :)
Avatar billede jelzin101 Praktikant
15. maj 2002 - 23:01 #5
prøv at kigge på keypreview...
Avatar billede orca Nybegynder
15. maj 2002 - 23:39 #6
Det er ikke fordi den springer videre til næste objekt, jeg har slået tab stop (tror jeg nok den hedder), det er fordi den indsætter tab i tekstboksen (altså noget der svarer til omkring 10 mellemrum). Hvordan kan jeg sørge for at den kun indsætter min tekst, og så bare glemmer at brugeren trykkede på tab?
Avatar billede tjacob Juniormester
16. maj 2002 - 11:00 #7
Hvis du har tabstop=False på alle kontroller på formen (incl. textboxen), så indsætter den kun de to mellemrum. (i hvert fald hos mig). Men ellers prøv:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 9 Then
        Text1.SelLength = 1
        Text1.SelText = "  "
        KeyCode = 0
    End If
End Sub

/tjacob
Avatar billede orca Nybegynder
16. maj 2002 - 18:54 #8
Hej, jeg har tabstop på alle kontroller, hvilket forhindrer at den skifter kontrol når der bliver trykket på tab. I stedet bliver tab nu indsat i tekstfeltet, altså ligesom når man trykker på tab i word, det er det jeg vil undgå. KeyCode = 0 hjælper desværre ikke.

Mvh Mark
Avatar billede tjacob Juniormester
22. maj 2002 - 17:39 #9
Det forstår jeg ikke! Koden virker fint hos mig med eller uden KeyCode=0, og også med eller uden KeyPreview. -Forudsat alle kontroller har TabStop=False. ?????????
Hvis jeg helt fjerner al kode, og sætter alle TabStop=False, så har Tab overhovedet ingen effekt!
Avatar billede tjacob Juniormester
22. maj 2002 - 17:49 #10
Jeg opdager nu at problemet opstår, når MultiLine = True!
Hvis du kører uden multiline, så virker det, ellers ikke.
Desværre kan denne property ikke ændres i runtime, så du må nok leve med det.
Avatar billede tjacob Juniormester
22. maj 2002 - 17:50 #11
Hvis du kan bruge KeyPress eventet i stedet for, virker følgende:

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 9 Then
        Text1.SelLength = 1
        Text1.SelText = "  "
        KeyAscii = 0
    End If
End Sub

/tjacob
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