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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Picalausa François
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" a écrit dans le message de news:
Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox : quelqu'un sait-il comment positionner automatiquement le texte?
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" <SAISAS@discussions.microsoft.com> a écrit dans le message de news:
05E8243A-FB55-476B-B84C-BB8781705234@microsoft.com...
Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox
:
quelqu'un sait-il comment positionner automatiquement le texte?
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" a écrit dans le message de news:
Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox : quelqu'un sait-il comment positionner automatiquement le texte?
SAISAS
Merci
en fait, ma zone de texte sert à définir un rapport d'exécution, dont la solution est OK. Mon code :
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" a écrit dans le message de news:
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox > : > quelqu'un sait-il comment positionner automatiquement le texte?
Merci
en fait, ma zone de texte sert à définir un rapport d'exécution, dont la
solution est OK. Mon code :
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" <SAISAS@discussions.microsoft.com> a écrit dans le message de news:
05E8243A-FB55-476B-B84C-BB8781705234@microsoft.com...
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma textbox
> :
> quelqu'un sait-il comment positionner automatiquement le texte?
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" a écrit dans le message de news:
> 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
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" a écrit dans le message de news:
Merci
en fait, ma zone de texte sert à définir un rapport d'exécution, dont la solution est OK. Mon code :
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" a écrit dans le message de news:
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma > textbox > : > quelqu'un sait-il comment positionner automatiquement le texte?
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" <SAISAS@discussions.microsoft.com> a écrit dans le message de news:
E677CD82-4112-4B5B-9E37-B5611CA60E6D@microsoft.com...
Merci
en fait, ma zone de texte sert à définir un rapport d'exécution, dont la
solution est OK. Mon code :
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" <SAISAS@discussions.microsoft.com> a écrit dans le message de
news:
05E8243A-FB55-476B-B84C-BB8781705234@microsoft.com...
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma
> textbox
> :
> quelqu'un sait-il comment positionner automatiquement le texte?
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" a écrit dans le message de news:
Merci
en fait, ma zone de texte sert à définir un rapport d'exécution, dont la solution est OK. Mon code :
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" a écrit dans le message de news:
> Je voudrais qu'apparaisse systématiquement la dernière ligne de ma > textbox > : > quelqu'un sait-il comment positionner automatiquement le texte?