Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de mise en page / ListBox

4 réponses
Avatar
michel.arnoux
Bonjour,
Encore un probl=E8me basique
Je veux afficher un article, l'op=E9rateur Split (tr=E8s pratique) le
d=E9coupe en champs
J'affiche les champs dans une ListBox (1/ligne), ok pas de probl=E8me

Pour am=E9liorer la compr=E9hension je veux afficher le nom du champ
devant son contenu -> r=E9sultat : mes donn=E9es sont en zigzag
comme la longueur des champs est variable, j'avais compl=E8t=E9 d'abord
par Right$(NomChamp(J)+Space$(30),30)+Champ(J)
Il y a compression des espaces

Pour contourner l'obstacle je reviens sur NomChamp() et compl=E8te par
des points pour obtenir des longueurs =E9gales -> r=E9sultat : mes donn=E9es
restent en zig zag
Il y a compression des points ...

Comment faire pour avoir une pr=E9sentation correcte ?
Ce ph=E9nom=E8ne existe aussi dans les fichiers BlocNotes .txt
Merci de votre amabilit=E9 toujours constat=E9e
Michel

4 réponses

Avatar
LE TROLL
Bonjour,

Prend une police fixe, par exemple couRier new

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
a écrit dans le message de news:

Bonjour,
Encore un problème basique
Je veux afficher un article, l'opérateur Split (très pratique) le
découpe en champs
J'affiche les champs dans une ListBox (1/ligne), ok pas de problème

Pour améliorer la compréhension je veux afficher le nom du champ
devant son contenu -> résultat : mes données sont en zigzag
comme la longueur des champs est variable, j'avais complèté d'abord
par Right$(NomChamp(J)+Space$(30),30)+Champ(J)
Il y a compression des espaces

Pour contourner l'obstacle je reviens sur NomChamp() et complète par
des points pour obtenir des longueurs égales -> résultat : mes données
restent en zig zag
Il y a compression des points ...

Comment faire pour avoir une présentation correcte ?
Ce phénomène existe aussi dans les fichiers BlocNotes .txt
Merci de votre amabilité toujours constatée
Michel
Avatar
Jacques93
Bonjour ,
a écrit :
Bonjour,
Encore un problème basique
Je veux afficher un article, l'opérateur Split (très pratique) le
découpe en champs
J'affiche les champs dans une ListBox (1/ligne), ok pas de problème

Pour améliorer la compréhension je veux afficher le nom du champ
devant son contenu -> résultat : mes données sont en zigzag
comme la longueur des champs est variable, j'avais complèté d'abord
par Right$(NomChamp(J)+Space$(30),30)+Champ(J)
Il y a compression des espaces

Pour contourner l'obstacle je reviens sur NomChamp() et complète par
des points pour obtenir des longueurs égales -> résultat : mes données
restent en zig zag
Il y a compression des points ...

Comment faire pour avoir une présentation correcte ?
Ce phénomène existe aussi dans les fichiers BlocNotes .txt
Merci de votre amabilité toujours constatée
Michel




La réponse du TROLL est opérationnelle, mais si tu veux conserver un
police proportionnelle, tu peux utiliser le message LB_SETTABSTOPS :

http://msdn2.microsoft.com/en-us/library/ms671443.aspx

qui définit la position de tabulations dans une ListBox. Il suffit
ensuite de séparer les éléments de la ligne par le caractère de
tabulation vbTab (chr$(9))

Par exemple, à adapter à tes besoins :

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 Const LB_SETTABSTOPS = &H192

Private Sub Form_Load()
Dim Tabs(1) As Long

Tabs(0) = 100 ' à adapter (toujours en pixels)
SendMessage List1.hwnd, LB_SETTABSTOPS, 1, Tabs(0)
With Me.List1
.AddItem "Toto" & vbTab & "1"
.AddItem "TotoTotoToto" & vbTab & "2"
.AddItem "T" & vbTab & "3"
End With
End Sub


--
Cordialement,

Jacques.
Avatar
Jacques93
Jacques93 a écrit :

Tabs(0) = 100 ' à adapter (toujours en pixels)
SendMessage List1.hwnd, LB_SETTABSTOPS, 1, Tabs(0)



En fait en Dialog Unit, pas en pixels. Un exemple ici :

<http://files.codes-sources.com/fichier.aspx?id&686&f=Form2.frm>

si on veut peaufiner.

--
Cordialement,

Jacques.
Avatar
Jean-marc
Jacques93 wrote:
Jacques93 a écrit :

Tabs(0) = 100 ' à adapter (toujours en pixels)
SendMessage List1.hwnd, LB_SETTABSTOPS, 1, Tabs(0)



En fait en Dialog Unit, pas en pixels. Un exemple ici :

<http://files.codes-sources.com/fichier.aspx?id&686&f=Form2.frm>

si on veut peaufiner.



Hello Jacques,

Excellent exemple d'un SendMessage, bien utile pour faire
ce genre de choses!

<pub>
Je profite de l'occasion pour signaler à la communauté
un petit article de la FAQ qui utilse aussi les messages
pour la recherche rapide dans une liste ou combo box:

http://faq.vb.free.fr/index.php?question5
</pub>

Merci encore pour ce très joli exemple!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/