Newsgroup: it.comp.lang.visual-basic
Titolo: [tetxtBox] Cursore all'ultima riga

Sto facendo un applicazione per esercitarmi con winsock e questa è in
pratica un telnet!
Ho creato una textbox dove vengono visualizzati tutti i messagi del server,
e un altr dove vengono invece inseriti i comandi.
Quando invio un comando sulla finestra compare il messagio del server(ad
esempio il saluto helo quando ti connetti ad un server di posta),
ma quando le righe dei messaggi sono troppo, vengono scritte, ma il cursore
non rimane in fondo! Insomma, non vedo ciò che accade e devo scrollare (non
pensate  male :-))) sempre!!
Come devo fare? C'è un metodo per mantenere sempre il cursore all'ultima
riga scritta nella textbox dei messaggi del server? (Per farla breve na cosa
tipo Mirc)
Grazie Simo
(forse qualcuno ha già fatto questa domanda....perdonate la ripetizione)!
--
_________________________
www.simone.ferrigno.com

 ha scritto nel messaggio
news:9cpmh5$7oc$1...@fe2.cs.interbusiness.it...


>Text1.selstart = len(Text1.text)
Copio dalla guida:
SelStart
restituisce o imposta il punto di inizio del testo selezionato. Se non è
selezionato nessun testo, indica la posizione del punto di inserimento.
A parte che non fa niente, e poi semmai dovresti non metterlo uguale al
numero della lunghezza dei caratteri contenuto nella textbox, ma semmai
uguale a 1, almeno scrive in testa a tutto.
In entrambi i modi però scrive
sempre in coda.
Una soluzione vermante stupida ma funzionante? Prima di
scrivere nella textbox copi il suo contentuto in una variabile di appoggio,
scrivi quello che vuoi e poi riattacchhi il resto :))
VB di predefinito
non ha niente da impostare e scegliere se scrivere in testa o in coda al
testo già presente in una textbox, devi fare da te :)
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it
 

 sempre in coda.
Forse non ho capito il problema, ma pensavo che Simone volesse
solatnto visualizzare in automatico l'ultima riga di una textbox, in modo
da non dover fare lo scrolling ogni volta che ne aggiunge una da codice...
Il metodo che ho postato risolve questo problema visualizzando l'ultima
riga della textbox e facendo lo scrolling in automatico, se non ho capito
aspetto delucidazioni sul problema...


riga
della textbox e facendo lo scrolling in automatico, se non ho capito
non
è vero :)) Ho provato il tuo codice e non funziona...forse sbaglio io
ma...così secondo me è giusto che non funzioni.
Ti copio cosa ho scritto
io:
Private Sub Command1_Click()
    'Text1.SelStart = Len(Text1.Text)
Text1.Text = "Pippo"
    Text1.SelStart = Len(Text1.Text)
End Sub
Private Sub Form_Load()
    Text1.Text = "Pulto"
End Sub
Così facendo
perdo "Pltuo" quando scrivo "Pippo" e non si seleziona niente.
Se vuoi
selezionare il testo lo puoi fare ma, manca un pezzo, ti faccio un esempio
stupido:
Private Sub Text1_GotFocus()
    Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
In questo caso si seleziona
TUTTO il testo quando il controllo prende il focus. Adesso puoi controllare
cosa evidenziare usando SelStart (parti da qua) e SelLenght (per una
lunghezza di).
Solo in questo modo puoi decide che evidenziare e in ogni
modo non esiste la selezione automatica dell' ultima riga con relativo
scorrimento automatico :))
Quello che dici tu in parte avviene nelle
listview; quando selezioni un Item e poi clicchi sulle intestazioni di
colonna puoi usare il metodo EnsureVisible per far si che la tua selezione
segua l' ordinamento della listview. Così la lista si ordina in funzione
dell' ordinamento che hai scelto, l' item resta selezionato, e la scrollbar
si posiziona automaticamente al posto giusto.
La textbox purtroppo non a
niente del genere; devi quindi gestire il tutto manualmente...se poi non è
così, posta un pezzo di codice funzionante che così lo riprovo, magari
imparo una cosa nuova.


 scorrimento automatico :))
Mah...
Non sono per niente convinto (e come ho già detto non pensavo alla
selezione...):
Per fare la prova mi sono fatto un form con un textbox, multiline=true,
e un commandbutton ed ho messo questo codice:
Private Sub Command1_Click()
Text1.SelStart = Len(Text1.Text)
Text1.SetFocus
End Sub
Private Sub Form_Load()
Dim x As Integer
Text1.Text = ""
For x = 1 To 100 'per essere sicuri che necessiti dello scroll
Text1.Text = Text1.Text & x & vbCrLf
Next x
End Sub
(Ho fatto la prova cambiando la proprietà scrollbars di text1, per
vedere se funzionava ed in ogni caso funziona...)
All'avvio mi ritrovo il cursore all'inizio della textbox (giustamente),
schiaccio command1 e mi ritrovo il cursore all'ultimo carattere
dell'ultima riga, con tanto di scrolling automatico...


 perdo "Pltuo" quando scrivo "Pippo"
SKUNK ! CAVOLI !
PI ELLE U TI O
p-l-u-t-o
!!!
cos'e' pltuo ? etabetese ?
se cerchi lavoro come dattilografo, non venire da me.
so fare errori anche per conto mio :)

Text1.Text = Text1.Text & Text2.Text & vbCrLf
Text1.SelStart = Len(Text1.Text)
SEGUENDO il consiglio dI Assa sono riuscito nel mio intento con  questo
codice messo in un controllo Command Button!
Grazie a tutti!


 Grazie a tutti!
Mi sembrava che funzionasse...
ciao
