Newsgroup: it.comp.lang.visual-basic
Titolo: [?] maskedit e posizione del cursore

Ciao a tutti,
devo fare in modo che, quando riceve il focus, il cursore in una maskedit si
posizioni all'ultimo carattere digitato.
Pensavo fosse facilmente risolvibile e infatti, usando selstart e sellength
in combinata con la length della maskedit, funziona; il problema è che
funziona se uso il tab ma se uso il mouse seleziona dal punto finale a dove
si trova il mouse!
Es. se ho scritto "pippo" e uso il tab il cursore si posiziona correttamente
dopo la lettera O, se però clikko col mouse sulla i viene selezionata la
scritta "ippo".
Qualche idea su come ovviare a questo problema? (anche non usando selstart e
sellength ma con un'altra tecnica; ho anche provato ad inserire nel buffer
di tastiera la pressione della freccia destra finché non arrivavo all'ultimo
carattere, ma questo approccio mi ha creato problemi se contemporaneamente
viene premuto il tasto SHIFT; ho anche provato a disattivare e riattivare
subito dopo lo shift, nel caso fosse premuto, ma ottendo dei risultati
"bizzarri").
Grazie a tutti in anticipo.

Se ho ben inteso non ti occorre selezionare 
il testo nel controllo.
Ma quindi perchè usi sellength?
Sono persuaso che, se l'unico scopo è 
portare il cursore in posizione di append per
ulteriore input, sia  sufficiente nell'evento
GotFocus impostare:
    MiaMaskEdit.SelStart = Len(MiaMaskEdit) + 1
Posizionare il punto d'inserimento (selstart) oltre 
la lunghezza del testo equivale a portarsi al termine
del testo (cfr MSDN).
Funziona indipendentemente da come arrivi il focus
e qualsiasi testo sia nel controllo. 
Se il controllo è intonso (VbNullString), non 
solleva alcun errore.
Ma forse non ho capito il problema
HTH
Ciao 
	Adriano


sellength lo impostavo a 0 per sicurezza, probabilmente č inutile.
Ho fatto esattamente come dici te, ma se clicchi col mouse ti seleziona la
porzione di testo che sta tra l'ultimo carattere (dove hai posizionato il
cursore) e la posizione dove hai clickato col mouse (nonostante appunto io
abbia settato la sellength=0).

 ha scritto

Prova a vedere in quale sequenza succedono gli eventi gotFocus e mouseClick... forse
dovrai mettere del codice anche nella seconda procedura.

 | sellength lo impostavo a 0 per sicurezza, probabilmente è inutile.


 | sellength lo impostavo a 0 per sicurezza, probabilmente è inutile.


Sě, cosě diventa impossibile manutenere il tutto...
Se scopri qualcos'altro (forse sě, con un subclassing per intercettare
l'onclick e bloccarlo.....)
Grazie moltissime.

Il problema è che non esiste l'evento mouse_click

Ho cercato e cercato e cercato, ma invano. 
Qualche giorno ordinerň tutto. Forse.
Ma sii ottimista: consultando MSDN ho trovato alcuni
articoli dai quali sembra sia sufficiente inviare un
message al controllo, API SendMessage.
Gli articoli sono:
    ArticleID: Q12190 
    Placing a caret after Edit-Control Text
    ArticleID: Q109550
    HOWTO: Programmatically Append Text to an Edit Control
Per entrambi ci sono teoria e linee di codice.
Se usi come argomento della search, su MSDN, la costante
EM_SETSEL, li trovi entrambi. E alcuni altri.
HTH
Ciao 
	Adriano


Stasera testo e ti faccio sapere se riesco...
Grazie.

Niente da fare, ho provato con API sendmessage e Postmessage ma il problema
è sempre lo stesso....
Grazie comunque, se ti viene in mente qualche altra idea fammi sapere.

Guardo meglio sui dischi e ti 
informo se trovo qualcosa.
Ciao
	Adriano
