Positionnement automatique d'un textBox

Le
SAISAS
Bonjour,

j'ai une "textbox" qui me sert à empiler des messages de déroulement d'un
processus (i.e. j'insère des lignes en base, et à chaque ligne, je rajoute un
message dans la textbox : ligne insérée ).

Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox :
quelqu'un sait-il comment positionner automatiquement le texte?

Merci.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Picalausa François
Le #15453461
Hello,

En jouant sur SelStart on arrive à ce genre de résultats:
Public Sub LogAppend(txtLog As TextBox, Data As String)
'Enregistre la sélection actuelle
Dim OSS As Long
Dim OSL As Long
OSS = txtLog.SelStart
OSL = txtLog.SelLength

'Ajoute la nouvelle entrée
txtLog.SelStart = Len(txtLog.Text)
txtLog.SelText = Data

'Restaure la sélection
txtLog.SelStart = OSS
txtLog.SelLength = OSL
End Sub

Private Sub Timer1_Timer()
LogAppend Text1, Format(Now, "hh:nn:ss") & " - Newline" & vbCrLf
End Sub

Attention cependant que le textbox a une limite de capacité.
Il faudra donc, en fonction de la quantité typique de données et du publique
ciblé, gérer (ou non) le possible dépassement en supprimant les premières
entrées (ou en envoyant un EM_SETLIMITTEXT, puisque sous XP, on peut monter
à 2147483646 caractères, la limite par défaut - qui est la valeur max sous
9x - étant de 32767 caractères)

--
Picalausa François

"SAISAS"
Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox
:
quelqu'un sait-il comment positionner automatiquement le texte?


SAISAS
Le #15453001
Merci

en fait, ma zone de texte sert à définir un rapport d'exécution, dont la
solution est OK. Mon code :

Me.Rapport.SelStart = Len(Me.Rapport.Text)
Me.Rapport.SelLength = 0
DoEvents

j'aurais cependant aimé une solution qui ne joue pas avec la sélection en
cours ...

"Picalausa François" a écrit :

Hello,

En jouant sur SelStart on arrive à ce genre de résultats:
Public Sub LogAppend(txtLog As TextBox, Data As String)
'Enregistre la sélection actuelle
Dim OSS As Long
Dim OSL As Long
OSS = txtLog.SelStart
OSL = txtLog.SelLength

'Ajoute la nouvelle entrée
txtLog.SelStart = Len(txtLog.Text)
txtLog.SelText = Data

'Restaure la sélection
txtLog.SelStart = OSS
txtLog.SelLength = OSL
End Sub

Private Sub Timer1_Timer()
LogAppend Text1, Format(Now, "hh:nn:ss") & " - Newline" & vbCrLf
End Sub

Attention cependant que le textbox a une limite de capacité.
Il faudra donc, en fonction de la quantité typique de données et du publique
ciblé, gérer (ou non) le possible dépassement en supprimant les premières
entrées (ou en envoyant un EM_SETLIMITTEXT, puisque sous XP, on peut monter
à 2147483646 caractères, la limite par défaut - qui est la valeur max sous
9x - étant de 32767 caractères)

--
Picalausa François

"SAISAS"
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox
> :
> quelqu'un sait-il comment positionner automatiquement le texte?





Picalausa François
Le #15452671
Hello,

Il est toujours possible d'envoyer des messages EM_SCROLL et/ou
EM_SCROLLCARET et de ne pas jouer avec la sélection. Nénanmoins, si c'est
pour à côter employer un
Text1.Text = Text1.Text & vbCrLf & "blah"
tout le problème de la sélection reste (mais les opérations de concaténation
rendent les opérations plus longues)...

Ne connaissant pas de message miracle (EM_SETHANDLE au mieux) permettant
l'ajout de texte à une textbox, je crois que le jeu sur la sélection indiqué
est ce qu'il y a de mieux....

--
Picalausa François

"SAISAS"
Merci

en fait, ma zone de texte sert à définir un rapport d'exécution, dont la
solution est OK. Mon code :

Me.Rapport.SelStart = Len(Me.Rapport.Text)
Me.Rapport.SelLength = 0
DoEvents

j'aurais cependant aimé une solution qui ne joue pas avec la sélection en
cours ...

"Picalausa François" a écrit :

Hello,

En jouant sur SelStart on arrive à ce genre de résultats:
Public Sub LogAppend(txtLog As TextBox, Data As String)
'Enregistre la sélection actuelle
Dim OSS As Long
Dim OSL As Long
OSS = txtLog.SelStart
OSL = txtLog.SelLength

'Ajoute la nouvelle entrée
txtLog.SelStart = Len(txtLog.Text)
txtLog.SelText = Data

'Restaure la sélection
txtLog.SelStart = OSS
txtLog.SelLength = OSL
End Sub

Private Sub Timer1_Timer()
LogAppend Text1, Format(Now, "hh:nn:ss") & " - Newline" & vbCrLf
End Sub

Attention cependant que le textbox a une limite de capacité.
Il faudra donc, en fonction de la quantité typique de données et du
publique
ciblé, gérer (ou non) le possible dépassement en supprimant les premières
entrées (ou en envoyant un EM_SETLIMITTEXT, puisque sous XP, on peut
monter
à 2147483646 caractères, la limite par défaut - qui est la valeur max
sous
9x - étant de 32767 caractères)

--
Picalausa François

"SAISAS" news:

> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma
> textbox
> :
> quelqu'un sait-il comment positionner automatiquement le texte?







Publicité
Poster une réponse
Anonyme