Private Sub combo1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then msgbox "left" Else If Button = 1 msgbox "right" End If
jeg har min combobox "nyheder" som indeholder en stak url's til nyheds-sites..
Private Sub Nyheder_Click() doNyheder End Sub
det der så er problemet er, at idet man rører en hvilket som helst tast (udover ctrl osv) så reagerer den som om det var et click - og eksekverer den øverste på min liste.
det er rimeligt uholdbart, og i sidste ende ville jeg gerne kunne bruge piletasterne til at vælge min nyhed fra listen, og trykke enter for at aktivere den. _keydown er også fin til det med enter-delen, men jeg når aldrig at vælge min nyhed på listen jo, for formen "tror" jeg clicker når jeg trykker på pil ned/op osv...
dog vil jeg stadig gerne have det sådan, at når jeg vælger min nyhed med musen, så bliver nyheden stadig eksekveret automatisk...
Martin_moth: din kunne ikke bruges, eftersom comboboxen ikke har en _mousedown ting.
venne: din kunne ikke bruges, for bl.a. kræver den at comboboxen er en "style = 2" - og min skal være "Style = 0" for at jeg kan skrive noget i selve feltet - Style = 2 er tom... (derudover er den ret ustabil idet den kræver at form_unload bliver kørt for at den ikke skal crashe VB's enviroment..) håber det giver mening, ellers kan jeg forsøge at forklare det lidt bedere...
Kan du ikke i KeyDown tjekke den tast der trykkes. Annuler tasten, hvis den ikke skal have nogen virkning, og udfør den handling du ønsker, hvis det er en tast, man gerne må bruge. Kan man ikke løse det sådan (har ikke VB til at teste med)
hvordan skulle jeg kunne annulere tasten? jeg har prøvet med: Private Sub Nyheder_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyDown Or KeyCode = vbKeyUp Or KeyCode = vbKeyLeft Or KeyCode = vbKeyRight Then Else Nyheder.Text = "Nyheder" End If End Sub -det gør ingenting hvis der tastes på en af de anvendte taster, men alligevel bliver det betragtet som et click, og aktiverer _click
Private Sub txtBox_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyReturn 'Enter-tast SendKeys "{tab}" 'Sender tabulatortegn i stedet for Case 48 To 57 'Tallene 0-9 Case Else 'Alle andre tastetryk KeyAscii = 0 'Sletter det tastede tegn End Select End Sub
I ovenstående kan man KUN taste tal og return, og return bliver lavet om til Tab.
Hvis du sætter en KeyAscii = 0 ind i din KeyPress, kan du annulere tastetrykket, før det sendes til kontrollen.
Private Sub Nyheder_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDown msgbox "pil ned" 'kode for pil ned - hvad du end vil have skal ske Case vbKeyUp msgbox "pil op" 'kode for pil op - hvad du end vil have skal ske Case Else 'Alle andre tastetryk KeyAscii = 0 'Sletter det tastede tegn End Select End Sub
tror den er tæt på... hvad skal jeg skrive for at den bare tager alle taster ukritisk?
Private Sub Nyheder_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case Else All KeyAscii = 0 'Sletter det tastede tegn End Select End Sub
virker ikke...
den du skrev virkede næsten, idet at alle andre taster end pil op og ned resulterede i at den skrev en msgbox (jeg tilføgede en test-msgbox før end select) - men pil op/ned aktiverede stadig _click
Private Sub Nyheder_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyDown MsgBox "KeyDown" KeyAscii = 0 'Sletter det tastede tegn End Select End Sub
den kommer ikke engang med keydown, men fortsætter bare med _click -det kunne tyde på den behandler pile-tasterne specielt?
desværre, det prøvede jeg kort efter du havde skrevet det... det virker som om piletasterne er "hævet over loven" der...
I Bedste fald skulle piletasterne kunne "bladre" i listen, men som kompromis ville jeg gå med til at de var slået helt fra... men det kan jeg ikke få dem til.
grunden til de ikke virker til at bladre med, er at lige så snart man starter på at bladre, aktiverer den _click... -og det udenom keydown, keyup og keypress ser det ud til...
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.