hoe kan ik met keypress een softreturn voorkomen, want ik weet alleen maar hoe je 1 toets kan ondervangen, maar softreturn = shift + enter. Met keydown kan ik de toetsen wel ondervangen, maar dan kan ik de actie niet veranderen, alleen maar de waarde opvragen van de ingedrukte toetsen.
Kijk eens in MSDN Library Online bij GetShiftState en GetKeyboardState.
Daarnaast gaat WM_KEYDOWN ook gewoon by-reference, dus lijkt me sterk dat je in de OnKeyDown de waarde niet kunt veranderen in VB (kan bijv. in Delphi nl. ook)
Daarnaast gaat WM_KEYDOWN ook gewoon by-reference, dus lijkt me sterk dat je in de OnKeyDown de waarde niet kunt veranderen in VB (kan bijv. in Delphi nl. ook)
Ehm, ik kan niets met die info, in mn library staat geen VB6 code voor getkeystate
Ja euh dan maak je dieEhm, ik kan niets met die info, in mn library staat geen VB6 code voor getkeystate
13 is CR oftewel carriage return, 10 is LF oftewel linefeed. Soft-return is volgens mij niet officieel gedefinieerd (maar dat kun je uitproberen
Verwijderd
Wanneer je het event KeyDown gebruikt krijg je twee parameters gratis en voor niets mee.
Met keycode kan je de toets (Return) afvragen in dit geval dus 13 en met Shift kan je de status van de verschillende toetsen (ALT, SHIFT, CTRL) afvragen. Wanneer je CTRL en SHIFT tegelijk indrukt krijg je som van die twee toetsen. In de help staat nog veeeeeel meer hierover
Sorry topicstart niet volledig gelezen!
Wat je wel kan doen is wanneer die actie voor komt hem terug draaien, door het laatste ingevoerde karakter weer te verwijderen.
Ik krijg het nu even niet naar boven maar volgens mij komt KeyDown eerder voor dan KeyPress. Als je nu de combinatie afvangt in KeyDown een module globale boolean variabele (mblnSoftReturn) op true zet en dan die weer afvragen in Change. Wanneer blnSoftReturn = True dan blnSoftReturn = Not blnSoftReturn
Dus in code, om je het wel heel makkelijk te maken:
Visual Basic:
1
| Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer) |
Met keycode kan je de toets (Return) afvragen in dit geval dus 13 en met Shift kan je de status van de verschillende toetsen (ALT, SHIFT, CTRL) afvragen. Wanneer je CTRL en SHIFT tegelijk indrukt krijg je som van die twee toetsen. In de help staat nog veeeeeel meer hierover
Sorry topicstart niet volledig gelezen!
Ik krijg het nu even niet naar boven maar volgens mij komt KeyDown eerder voor dan KeyPress. Als je nu de combinatie afvangt in KeyDown een module globale boolean variabele (mblnSoftReturn) op true zet en dan die weer afvragen in Change. Wanneer blnSoftReturn = True dan blnSoftReturn = Not blnSoftReturn
Dus in code, om je het wel heel makkelijk te maken:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
| Private Sub Text8_BeforeUpdate(Cancel As Integer) If blnSoftReturn Then Cancel = Not Cancel mblnSoftReturn = Not mblnSoftReturn End If End Sub Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = acShiftMask And KeyCode = vbKeyReturn Then mblnSoftReturn = True End If End Sub |
[ Voor 51% gewijzigd door Verwijderd op 13-06-2003 14:08 ]
Verwijderd
misschien kun je shift-enter als hotkey voor iets instellen en daar dan geen actie aan verbinden. google maar eens naar hotkey api ofzo
Deze?Y3PP3R schreef op 13 June 2003 @ 13:30:
Ehm, ik kan niets met die info, in mn library staat geen VB6 code voor getkeystate
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| 'In a module Public Const WH_KEYBOARD = 2 Public Const VK_SHIFT = &H10 Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Public hHook As Long Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 'if idHook is less than zero, no further processing is required If idHook < 0 Then 'call the next hook KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) Else 'check if SHIFT-S is pressed If (GetKeyState(VK_SHIFT) And &HF0000000) And wParam = Asc("S") Then 'show the result Form1.Print "Shift-S pressed ..." End If 'call the next hook KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam) End If End Function 'In a form, called Form1 Private Sub Form_Load() 'set a keyboard hook hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID) End Sub Private Sub Form_Unload(Cancel As Integer) 'remove the windows-hook UnhookWindowsHookEx hHook End Sub |
Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery
Pagina: 1