Ciao a tutti... volevo sapere se c'è un modo per capire in che posizione si trova il cursore in una RichTextBox. Per cursore intendo la lineetta lampeggiate che rappresenta il punto in cui si scrive...
Ciao a tutti... volevo sapere se c'è un modo per capire in che posizione si trova il cursore in una RichTextBox. Per cursore intendo la lineetta lampeggiate che rappresenta il punto in cui si scrive...
up![]()
La posizione del cursore è data dalla somma delle proprietà SelStart e SelLength.
Amaro C++, il gusto pieno dell'undefined behavior.
non credo perchè SelStart è sempre uguale a zero e se faccio la somma con SelLength mi dà la lunghezza totale del testo... se per caso il cursore si trova a metà testo come faccio? L'unica idea che mi è venuta è tenere traccia manualmente carattere per carattere e linea per linea al cambiare della posizione ma mi sa che è parecchio complicato
Supponendo che la tua RichTextBox si chiami Rtb1:
PosRow conterrà il valore della riga, PosCol quello della colonna (partendo da 0).codice:Option Explicit 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 Function SendMessageReferenceParams Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByRef wParam As Long, ByRef lParam As Long) As Long Private Const EM_GETLINECOUNT = &HBA: Private Const EM_LINEINDEX = &HBB Private Const EM_LINELENGTH = &HC1: Private Const EM_GETSEL = &HB0 Private Const EM_LINEFROMCHAR = &HC9 Private Sub Command1_Click() Dim start_pos As Long, end_pos As Long Dim PosRow As Integer, PosCol As Integer SendMessageReferenceParams Rtb1.hwnd, EM_GETSEL, start_pos, end_pos PosRow = SendMessage(Rtb1.hwnd, EM_LINEFROMCHAR, start_pos, 0) PosCol = start_pos - SendMessage(Rtb1.hwnd, EM_LINEINDEX, -1, 0) End Sub
Ciauz
Chico
p.s. : il cursore lampeggiante si chiama 'caret'![]()
infatti, almeno in un TextBox, la cosa funziona così. Ora non sò e c'è differenza con un RichTextBoxOriginariamente inviato da MItaly
La posizione del cursore è data dalla somma delle proprietà SelStart e SelLength.![]()
Grazie mille a tutti in particolare a chico62 è proprio quello che cercavo...