OVH Cloud OVH Cloud

ListBox

15 réponses
Avatar
Eric Beaumard
Bonjour

Je suis à la recherche d'un composant genre listbox
mais qui permettrait de cocher ou non grace à la souris,
chaque ligne (une ligne cochée aurait par exemple un petit
signe "racine carrée" vert à la gauche de son libellé).

Ca donnerait une liste comme (l'étoile serait la coche):

* MArcel
Jerome
* Henry
Sylvie

La coche fonctionnerait en mode "toggle" (bascule)
sur clic gauche par exemple

Et le fait qu'une ligne seraitr cochée ou pas serait
bien entendu détectable par programme.

Cordialement

Eric

10 réponses

1 2
Avatar
ze_titi
Bonjour,

Il existe un activeX payant appelé CheckListBox qui en est à sa version 2.6
si je ne m'abuse.
En cherchant un peu avec ton moteur de recherche préféré, tu vas le trouver
facilement. Mais peut-être qu'en regardant sur vbFrance ou consorts, tu
pourrais en trouver un gratuit.

--
Cordialement,

ze_titi

Mail perso: http://www.cerbermail.com/?sj4KuQC4GQ




Bonjour

Je suis à la recherche d'un composant genre listbox
mais qui permettrait de cocher ou non grace à la souris,
chaque ligne (une ligne cochée aurait par exemple un petit
signe "racine carrée" vert à la gauche de son libellé).

Ca donnerait une liste comme (l'étoile serait la coche):

* MArcel
Jerome
* Henry
Sylvie

La coche fonctionnerait en mode "toggle" (bascule)
sur clic gauche par exemple

Et le fait qu'une ligne seraitr cochée ou pas serait
bien entendu détectable par programme.

Cordialement

Eric





Avatar
Argyronet
Bonjour,

Ce type de contrôle avec cette propriété est dispo dans VB6 ou VBA
XL/Word/PPoint mais pas dans Access
Si vous avez Office 2000 par exemple, il vous suffit de faire référence à
FM20.DLL et sur le formulaire en question, posez un contrôle Microsoft Form
2.0 Listbox nommé dans l'exemple lstTest.
Une fois cela fait, poser un bouton de commande nommé cmdShowContent et
écrivez (copiez) ce code puis passez en mode formulaire...
' ***** Begin bloc *****
Option Compare Database
Option Explicit

Private Sub Form_Load()
Const fmLIST_STYLE_OPTION As Integer = 1
Const fmMULTI_SELECT_SINGLE As Integer = 0
Const fmMULTI_SELECT_MULTI As Integer = 1
Const fmMULTI_SELECT_EXTENDED As Integer = 2

Dim I As Integer
Dim oCtl As Object

Set oCtl = lstTest.Object
With oCtl
.ListStyle = fmLIST_STYLE_OPTION
.MultiSelect = fmMULTI_SELECT_MULTI
For I = 1 To 10
.AddItem "Valeur " & Trim(str(I))
Next
End With
Set oCtl = Nothing
End Sub

Private Sub cmdShowContent_Click()
Dim oCtl As Object
Dim strContent As String
Dim I As Integer
Dim N As Integer

Set oCtl = lstTest.Object
For I = 0 To oCtl.ListCount - 1
If oCtl.Selected(I) = True Then
strContent = strContent & oCtl.List(I) & vbCrLf
End If
Next
MsgBox strContent

End Sub
' ***** End bloc *****

A vous ensuite d'enrichir le contenu de la liste, ceci étant un simple
exemple.
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour

Je suis à la recherche d'un composant genre listbox
mais qui permettrait de cocher ou non grace à la souris,
chaque ligne (une ligne cochée aurait par exemple un petit
signe "racine carrée" vert à la gauche de son libellé).

Ca donnerait une liste comme (l'étoile serait la coche):

* MArcel
Jerome
* Henry
Sylvie

La coche fonctionnerait en mode "toggle" (bascule)
sur clic gauche par exemple

Et le fait qu'une ligne seraitr cochée ou pas serait
bien entendu détectable par programme.

Cordialement

Eric





Avatar
Eric Beaumard
Bonjour

Merci pour votre réponse. Je vais avoir à utiliser
votre contrôle à la rentrée des vacances de la Toussaint.
J'utilise access 2003, est-ce aussi FM20.DLL à laquelle
il faut faire référence ?

Cordialement

Eric


"Argyronet" a écrit dans le message de
news:
Bonjour,

Ce type de contrôle avec cette propriété est dispo dans VB6 ou VBA
XL/Word/PPoint mais pas dans Access
Si vous avez Office 2000 par exemple, il vous suffit de faire référence à
FM20.DLL et sur le formulaire en question, posez un contrôle Microsoft
Form
2.0 Listbox nommé dans l'exemple lstTest.
Une fois cela fait, poser un bouton de commande nommé cmdShowContent et
écrivez (copiez) ce code puis passez en mode formulaire...
' ***** Begin bloc *****
Option Compare Database
Option Explicit

Private Sub Form_Load()
Const fmLIST_STYLE_OPTION As Integer = 1
Const fmMULTI_SELECT_SINGLE As Integer = 0
Const fmMULTI_SELECT_MULTI As Integer = 1
Const fmMULTI_SELECT_EXTENDED As Integer = 2

Dim I As Integer
Dim oCtl As Object

Set oCtl = lstTest.Object
With oCtl
.ListStyle = fmLIST_STYLE_OPTION
.MultiSelect = fmMULTI_SELECT_MULTI
For I = 1 To 10
.AddItem "Valeur " & Trim(str(I))
Next
End With
Set oCtl = Nothing
End Sub

Private Sub cmdShowContent_Click()
Dim oCtl As Object
Dim strContent As String
Dim I As Integer
Dim N As Integer

Set oCtl = lstTest.Object
For I = 0 To oCtl.ListCount - 1
If oCtl.Selected(I) = True Then
strContent = strContent & oCtl.List(I) & vbCrLf
End If
Next
MsgBox strContent

End Sub
' ***** End bloc *****

A vous ensuite d'enrichir le contenu de la liste, ceci étant un simple
exemple.
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on
obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour

Je suis à la recherche d'un composant genre listbox
mais qui permettrait de cocher ou non grace à la souris,
chaque ligne (une ligne cochée aurait par exemple un petit
signe "racine carrée" vert à la gauche de son libellé).

Ca donnerait une liste comme (l'étoile serait la coche):

* MArcel
Jerome
* Henry
Sylvie

La coche fonctionnerait en mode "toggle" (bascule)
sur clic gauche par exemple

Et le fait qu'une ligne seraitr cochée ou pas serait
bien entendu détectable par programme.

Cordialement

Eric







Avatar
Argyronet
...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Parcourir dans
%WINSYS32 et sélectionnez ce fichier...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment...
Avatar
Eric.beaumard

...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Parcour ir dans
%WINSYS32 et sélectionnez ce fichier...



Merci beaucoup, j'ai réussi à installer le composant.
Je viens du monde Delphi et j'avoue que je suis un peu
dérouté ...
Je voudrais supprimer le scrollbar horizontal du composant
mais je rame depuis une bonne heure dans ses propriétés sans trouver
(quelque comme HScrollbar, enfin j'ai à peu près tout essayé !).

Savez-vous comment faire ?
La propriété n'est peut-être pas publiée, je ne sais pas.

Cordialement

Eric

Avatar
Eric.beaumard

...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Parcour ir dans
%WINSYS32 et sélectionnez ce fichier...
--
Argy
http://argyronet.developpez.com/



Re-Bonjour ...

De plus en plus dérouté j'ai voulu faire pointer
l'évènement OnClick du composant sur
votre procedure cmdShowContent_Click().
Les seuls évènement publiés dans la fenêtre
de propriétés du composants sont :

MAJ
Entréee
Sortie
Réception focus
Perte focus

N'est-ce qu'un pb de publication ou bien
n'existe-t-il que ces événements là pour ce composant ?
(et si oui, comment alors faire quelque chose un click
utilisateur ?)
Si non comment faire apparaitre une bonne fois pour
toute ces évènements (ou avoir leur liste ailleurs ! ) ?
(j'avoue ne pas bien comprendre la logique de tout cela
et je reste en plan).

Cordialement

Eric

Avatar
Argyronet
Bonjour,

La barre de défilement horizontale de ce contrôle apparaît sir le ListBox se
voit greffé d'éléments dont le texte est plus grand que ce qui peut être
visible en une fois.
Il n'y a pas de propriété ScrollBars au sein du contrôle.
Donc à vous d'ajuster la largeur de ce contrôle en fonction de l'élément le
plus long de la liste ou bien abréger-le.
Je sais que l'on peut intervenir sur un contrôle de ce type avec un
SendMessage() mais pour ajouter un ScrollBar ou ajuster la hauteur de ce
dernier (...entre autres...) mais pour le supprimer, là, je n'ai pas cherché
et n'ai jamais été confronté à ce genre de demande... Il faut un début à tout.
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment





...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Parcourir dans
%WINSYS32 et sélectionnez ce fichier...



Merci beaucoup, j'ai réussi à installer le composant.
Je viens du monde Delphi et j'avoue que je suis un peu
dérouté ...
Je voudrais supprimer le scrollbar horizontal du composant
mais je rame depuis une bonne heure dans ses propriétés sans trouver
(quelque comme HScrollbar, enfin j'ai à peu près tout essayé !).

Savez-vous comment faire ?
La propriété n'est peut-être pas publiée, je ne sais pas.

Cordialement

Eric





Avatar
Eric.beaumard
Bonjour,

La barre de défilement horizontale de ce contrôle apparaît sir le L istBox se
voit greffé d'éléments dont le texte est plus grand que ce qui peut être
visible en une fois.


Oui c'est bien ce que je me suis dis mais:

- j'ai bien vu qu'elle est la limite de largeur à laquelle le
composant
rajoute son scrollbar, or, chose incompréhensible il le fait même
quand *aucune* ligne ne déborde à droite mais selon une cote
fixe. Par exemple si vous écrivez 10 lignes de "ERIC" identiques
cela prend sur l'écran 1.5 cm de largeur pour chaque ligne.
Etablissez la largeur du composant à 6 cm (bien plus que besoin donc
!)
et il vous met le scrollbar ! Vous avez donc à l'écran 10 lignes de
"| ERIC***************** |"
(où les * figurent de blancs et les | les bords du composant) et
un scrollbar qui ne sert strictement à rien !

Le scrollbar apparait dès que la largeur du composant passe en deça
d'un
cote *fixe*, et cela, que le texte soit tronqué ou pas. Je n'ai pas
trouvé où
régler cette cote. J'en suis là, blocage.


Cordialement

Eric

Avatar
Argyronet
C'est normal, car Access est incapable de vous restituer les vrais événements
de ce contrôle comme tous contrôles externes... Pour avoir la liste des
événements, forcez-en un au choix et dans VBE vous la liste complète des
événements.
Pour plus de détail en live, allez dans Excel, posez un UserForm et un
ListBox...
Vous aurez là toutes les propriétés et événements.
J'accorde que ce n'est pas super pratique mais une fois que vous avez choppé
le principe, ça va tout seul...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment





...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Parcourir dans
%WINSYS32 et sélectionnez ce fichier...
--
Argy
http://argyronet.developpez.com/



Re-Bonjour ...

De plus en plus dérouté j'ai voulu faire pointer
l'évènement OnClick du composant sur
votre procedure cmdShowContent_Click().
Les seuls évènement publiés dans la fenêtre
de propriétés du composants sont :

MAJ
Entréee
Sortie
Réception focus
Perte focus

N'est-ce qu'un pb de publication ou bien
n'existe-t-il que ces événements là pour ce composant ?
(et si oui, comment alors faire quelque chose un click
utilisateur ?)
Si non comment faire apparaitre une bonne fois pour
toute ces évènements (ou avoir leur liste ailleurs ! ) ?
(j'avoue ne pas bien comprendre la logique de tout cela
et je reste en plan).

Cordialement

Eric





Avatar
Eric.beaumard

C'est normal, car Access est incapable de vous restituer les vrais év énements
de ce contrôle comme tous contrôles externes...


Et pourquoi donc ?

Pour avoir la liste des
événements, forcez-en un au choix et dans VBE vous la liste complèt e des
événements.


Padonnez-moi mais je n'ai pas compris la phrase.
Comment faites-vous pour "forcer" un évènement ?
(et où ? dans la fenêtre des propriétés du composant, rubrique
évènement ?)
Et ensuite, que veut dire "et dans VBE vous la liste complète .." ?
(et VBE c'est quoi ? Erreur de frappe vous voulez parler de VBA ?)

Pour plus de détail en live, allez dans Excel, posez un UserForm et un
ListBox...


Donc le Listbox que vous m'avez indiqué est
un descendant du Listbox normal. Ok.

Vous aurez là toutes les propriétés et événements.
J'accorde que ce n'est pas super pratique mais une fois que vous avez cho ppé
le principe, ça va tout seul...
--
Argy
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´ on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment





...est-ce aussi FM20.DLL à laquelle il faut faire référence ?

Oui, bien entendu.
Si vous n'arrivez pas à la repérer dans la liste, cliquez sur Par courir dans
%WINSYS32 et sélectionnez ce fichier...
--
Argy
http://argyronet.developpez.com/



Re-Bonjour ...

De plus en plus dérouté j'ai voulu faire pointer
l'évènement OnClick du composant sur
votre procedure cmdShowContent_Click().
Les seuls évènement publiés dans la fenêtre
de propriétés du composants sont :

MAJ
Entréee
Sortie
Réception focus
Perte focus

N'est-ce qu'un pb de publication ou bien
n'existe-t-il que ces événements là pour ce composant ?
(et si oui, comment alors faire quelque chose un click
utilisateur ?)
Si non comment faire apparaitre une bonne fois pour
toute ces évènements (ou avoir leur liste ailleurs ! ) ?
(j'avoue ne pas bien comprendre la logique de tout cela
et je reste en plan).

Cordialement

Eric







1 2