Private Const EM_LINEINDEX As Long = &HBB 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 Function GetRowCaret(ByRef oRtb As RichTextBox) As Long GetRowCaret = oRtb.GetLineFromChar(oRtb.SelStart) + 1 End Function Function GetColCaret(ByRef oRtb As RichTextBox) As Long GetColCaret = oRtb.SelStart - SendMessage(oRtb.hwnd, EM_LINEINDEX, GetRowCaret - 1, ByVal 0&) End Function
mais ça ne marche pas
GetColCaret = oRtb.SelStart - SendMessage(oRtb.hwnd, EM_LINEINDEX, GetRowCaret - 1, ByVal 0&)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDu calme dayvid.
Usuellement, la position du curseur est celle de la souris. Dans ce cas, on la détecte par l'événement MouseMove.
Si maintenant vous parlez du point d'insertion, vous devriez vous en sortir avec la propriété SelectionStart, qui donne la position cherchée en termes de nombre de caractères, puis avec la fonction SetPositionFromCharIndex, qui à partir de la position en termes de nombre de caractères donne la position géométrique. Mais je n'ai pas testé.
Vos gesticulations écrites ont été sans effet sur le temps qu'il m'a fallu pour vous trouver cette éventuelle solution.
SetPositionFromCharIndex
Celle-là, je ne l'ai pas trouvée dans l'aide de VB 2012.
Le caret et le cuseur sont deux choses distinctes
SetPositionFromCharIndex
GetPositionFromCharIndex
Le caret est le petit machin qui clignote pour indiquer où se trouve le point d'insertion, ainsi nommé parce ce que vous tapez s'écrira là
Si j'ai bien compris, ce que vous voulez est la position géométrique du point d'insertion. D'après ce que j'ai lu dans l'explorateur d'objets, vous pouvez l'obtenir en employant successivement la propriété puis la fonction que je vous indiqués.
RichTextBox1.GetPositionFromCharIndex(RichTextBox1.SelectionStart).ToString
GetColCaret = oRtb.SelStart - SendMessage(oRtb.hwnd, EM_LINEINDEX, GetRowCaret - 1, ByVal 0&)
selectionChange
la position du caret en caractère en X et Y
SelectionStart
GetLineFromCharIndex
GetFirstCharIndexOfCurrentLine