Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    85

    [VB6] Rilevamento cursore in un RichTextbox

    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...

  2. #2
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    85
    up

  3. #3
    La posizione del cursore è data dalla somma delle proprietà SelStart e SelLength.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    85
    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

  5. #5
    Supponendo che la tua RichTextBox si chiami Rtb1:
    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
    PosRow conterrà il valore della riga, PosCol quello della colonna (partendo da 0).

    Ciauz

    Chico

    p.s. : il cursore lampeggiante si chiama 'caret'

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    29
    Originariamente inviato da MItaly
    La posizione del cursore è data dalla somma delle proprietà SelStart e SelLength.
    infatti, almeno in un TextBox, la cosa funziona così. Ora non sò e c'è differenza con un RichTextBox

  7. #7
    Utente bannato
    Registrato dal
    Oct 2005
    Messaggi
    85
    Grazie mille a tutti in particolare a chico62 è proprio quello che cercavo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.