bordure listbox

Le
tking
Hello,

Est-il possible de supprimer la bordure d'une listbox ?
La propriété Appearance à Flat enlève le style 3D mais il reste un
cadre.

Merci pour les suggestions.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #15381611
Bonjour,

Je ne crois pas, y a pas de border style...
Tu peux mettre le fond en noir et écrire en blanc,
mais bon, ça fait dur...

Par contre, suivant l'utilisation ? Tu géres
une liste que tu balances dans un texteBox, et
avec les propriété SelText... tu peux remonter le
mot sur la liste...

Y a peut être plus simple ? Mais j'ai déjà
fait ça, ça marche très bien:

-1- Tu déclares une variable chaîne de longueur
fixe (* x), de la longueur du plus grand mot.
-2- Tu déclares une liste invisible, que tu
charges en passant par cette variable, donc, y
aura parfois des blanc invisibles, tous les mots,
phrases auront la même longueur...
-3- Tu balance ça dans un textBox, seul visible
pour l'utilisateur + vbcrlf
-4- Quand on cliquera dans le textBox, la position
textX.Seltart, te donnera après simple calcul, la
position dans la liste, comme tous les mots ont le
même nombre d'octets à chaque ligne...


--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"tking" news:
| Hello,
|
| Est-il possible de supprimer la bordure d'une
listbox ?
| La propriété Appearance à Flat enlève le style
3D mais il reste un
| cadre.
|
| Merci pour les suggestions.
|
|
Jacques93
Le #15381601
Bonjour tking,
tking a écrit :
Hello,

Est-il possible de supprimer la bordure d'une listbox ?
La propriété Appearance à Flat enlève le style 3D mais il reste un cadre.




Juste pour faire plaisir au TROLL ;-) , et te répondre, tu peux jouer
avec les styles de fenêtre. Je te mets toutes les constantes, mais en
fait tu n'en as besoin que de quelques une pour ce cas là :

Option Explicit
' ================================ ' API GetWindowLong / SetWindowLong
' ================================
' Constantes nIndex
' -----------------
Private Const GWL_WNDPROC = (-4)
Private Const GWL_HINSTANCE = (-6)
Private Const GWL_STYLE = (-16)
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_USERDATA = (-21)

' Windows Style
' -------------
Private Const WS_OVERLAPPED = &H0
Private Const WS_POPUP = &H80000000
Private Const WS_CHILD = &H40000000
Private Const WS_MINIMIZE = &H20000000
Private Const WS_VISIBLE = &H10000000
Private Const WS_DISABLED = &H8000000
Private Const WS_CLIPSIBLINGS = &H4000000
Private Const WS_CLIPCHILDREN = &H2000000
Private Const WS_MAXIMIZE = &H1000000
Private Const WS_CAPTION = &HC00000
Private Const WS_BORDER = &H800000
Private Const WS_DLGFRAME = &H400000
Private Const WS_VSCROLL = &H200000
Private Const WS_HSCROLL = &H100000
Private Const WS_SYSMENU = &H80000
Private Const WS_THICKFRAME = &H40000
Private Const WS_GROUP = &H20000
Private Const WS_TABSTOP = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000

' Extended Windows Styles
' -----------------------
Private Const WS_EX_DLGMODALFRAME = &H1
Private Const WS_EX_NOPARENTNOTIFY = &H4
Private Const WS_EX_TOPMOST = &H8
Private Const WS_EX_ACCEPTFILES = &H10
Private Const WS_EX_TRANSPARENT = &H20
Private Const WS_EX_MDICHILD = &H40
Private Const EX_TOOLWINDOW = &H80
Private Const WS_EX_WINDOWEDGE = &H100
Private Const WS_EX_CLIENTEDGE = &H200
Private Const WS_EX_CONTEXTHELP = &H400
Private Const WS_EX_RIGHT = &H1000
Private Const WS_EX_LEFT = &H0
Private Const WS_EX_RTLREADING = &H2000
Private Const WS_EX_LTRREADING = &H0
Private Const WS_EX_LEFTSCROLLBAR = &H4000
Private Const WS_EX_RIGHTSCROLLBAR = &H0
Private Const WS_EX_CONTROLPARENT = &H10000
Private Const WS_EX_STATICEDGE = &H20000
Private Const WS_EX_APPWINDOW = &H40000

Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

' ========================= ' API SetWindowPos
' ========================= ' Constantes hWndInsertAfter
' --------------------------
Private Const HWND_NOTOPMOST = -2
Private Const HWND_TOPMOST = -1
Private Const HWND_TOP = 0
Private Const HWND_BOTTOM = 1

' Constantes wFlags
' -----------------
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOREDRAW = &H8
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_NOCOPYBITS = &H100
Private Const SWP_NOOWNERZORDER = &H200
Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER

Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Private Sub Form_Load()
Dim wStyle As Long

With Me.List1
.Appearance = 0
' Récupère le style actuel
wStyle = GetWindowLong(Me.List1.hwnd, GWL_STYLE)
' Modifie le style
SetWindowLong Me.List1.hwnd, GWL_STYLE, wStyle And Not WS_BORDER
' Force la prise en compte du nouveau style
SetWindowPos Me.List1.hwnd, HWND_TOP, 0&, 0&, 0&, 0&, _
SWP_NOMOVE Or _
SWP_NOSIZE Or _
SWP_SHOWWINDOW
End With
End Sub

--
Cordialement,

Jacques.
François Picalausa
Le #15381591
On Dec 5, 10:29 am, Jacques93 wrote:
Bonjour tking,
tking a écrit :

> Hello,

> Est-il possible de supprimer la bordure d'une listbox ?
> La propriété Appearance à Flat enlève le style 3D mais il reste un cadre.

Juste pour faire plaisir au TROLL ;-) , et te répondre, tu peux jouer
avec les styles de fenêtre. Je te mets toutes les constantes, mais en
fait tu n'en as besoin que de quelques une pour ce cas là :

Option Explicit
' ======================== =========
' API GetWindowLong / SetWindowLong
' ======================== =========



Hello,

En complément l'outil Control Spy (http://www.microsoft.com/downloads/
details.aspx?
FamilyIDd4294d-0531-4ec2-8b27-2e463b315f16&displaylang=en) permet
de voir le résultat de l'application des différents styles.

François
Jacques93
Le #15381581
Bonjour François Picalausa,
François Picalausa a écrit :
On Dec 5, 10:29 am, Jacques93 wrote:
Bonjour tking,
tking a écrit :

Hello,
Est-il possible de supprimer la bordure d'une listbox ?
La propriété Appearance à Flat enlève le style 3D mais il reste un cadre.


Juste pour faire plaisir au TROLL ;-) , et te répondre, tu peux jouer
avec les styles de fenêtre. Je te mets toutes les constantes, mais en
fait tu n'en as besoin que de quelques une pour ce cas là :

Option Explicit
' ================================ >> ' API GetWindowLong / SetWindowLong
' ================================ >


Hello,

En complément l'outil Control Spy (http://www.microsoft.com/downloads/
details.aspx?
FamilyIDd4294d-0531-4ec2-8b27-2e463b315f16&displaylang=en) permet
de voir le résultat de l'application des différents styles.

François



Merci de cette information, j'ignorai l'existence de cet outils. Et bien
que différent dans sa conception j'utilise Spy++ de Visual Studio.
Je ne crois pas qu'il soit télécharchargeable. J'ai trouvé des liens
mais qui sont morts.

--
Cordialement,

Jacques.
Jean-marc
Le #15381541
Jacques93 wrote:
Merci de cette information, j'ignorai l'existence de cet outils. Et
bien que différent dans sa conception j'utilise Spy++ de Visual
Studio. Je ne crois pas qu'il soit télécharchargeable. J'ai trouvé des
liens
mais qui sont morts.



Hello Jacques,

On peut le télécharger ici :
http://www.techwarelabs.com/downloads/?action=file&id9

En revanche, le lien vers la doc Microsoft est mort.

Sinon, il s'installe quand on installe Visual Studio (y compris
Visual Studio 2005).
Je ne sais pas si il est aussi présent avec la Version Express.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Jacques93
Le #15381531
Bonjour jean-marc,
Jean-marc a écrit :
Jacques93 wrote:
Merci de cette information, j'ignorai l'existence de cet outils. Et
bien que différent dans sa conception j'utilise Spy++ de Visual
Studio. Je ne crois pas qu'il soit télécharchargeable. J'ai trouvé des
liens
mais qui sont morts.



Hello Jacques,

On peut le télécharger ici :
http://www.techwarelabs.com/downloads/?action=file&id9

En revanche, le lien vers la doc Microsoft est mort.



Arrrrgggghhh !!! c'est là que j'ai cliqué (le lien msdn de la doc)
pas pensé à cliquer sur l'icône Download :-( . Dur, dur les sorties de
sieste ;-)

Sinon, il s'installe quand on installe Visual Studio (y compris
Visual Studio 2005).



Z'aurait faire évoluer, chez moi c'est la même version. Par contre de
pas livré, il y a Managed Spy :


Je ne sais pas si il est aussi présent avec la Version Express.



là je sais pas non plus

--
Cordialement,

Jacques.
tking
Le #15381521
Merci tout le monde, je vais étudier les différentes solutions. Pour
info, j'utilise la listbox pour lister les fichiers d'un répertoire et
un click ouvre le fichier.
tking
Le #15381511
Jacques93 avait soumis l'idée :

Juste pour faire plaisir au TROLL ;-) , et te répondre, tu peux jouer avec
les styles de fenêtre. Je te mets toutes les constantes, mais en fait tu n'en
as besoin que de quelques une pour ce cas là :




Ah c'est très good, en plus ça fonctionne du premier coup.

Bonne soirée.
Jacques93
Le #15381501
Bonjour tking,
tking a écrit :
Merci tout le monde, je vais étudier les différentes solutions. Pour
info, j'utilise la listbox pour lister les fichiers d'un répertoire et
un click ouvre le fichier.



Que tu utilises le ListBox standard, un DirListBox ou un FileListBox, la
méthode fonctionne :

Private Sub Form_Load()
With Me.List1
.Appearance = 0
NoBorder .hWnd
End With

With Me.Dir1
.Appearance = 0
NoBorder .hWnd
End With

With Me.File1
.Appearance = 0
NoBorder .hWnd
End With
End Sub

Private Sub NoBorder(ByVal hWnd As Long)
Dim wStyle As Long

' Récupère le style actuel
wStyle = GetWindowLong(hWnd, GWL_STYLE)
' Modifie le style
SetWindowLong hWnd, GWL_STYLE, wStyle And Not WS_BORDER
' Force la prise en compte du nouveau style
SetWindowPos hWnd, HWND_TOP, 0&, 0&, 0&, 0&, _
SWP_NOMOVE Or _
SWP_NOSIZE Or _
SWP_SHOWWINDOW
End Sub


--
Cordialement,

Jacques.
tking
Le #15381491
Le 05/12/2007, LE TROLL a supposé :
Bonjour,

Je ne crois pas, y a pas de border style...
Tu peux mettre le fond en noir et écrire en blanc,
mais bon, ça fait dur...

Par contre, suivant l'utilisation ? Tu géres
une liste que tu balances dans un texteBox, et
avec les propriété SelText... tu peux remonter le
mot sur la liste...

Y a peut être plus simple ? Mais j'ai déjà
fait ça, ça marche très bien:

-1- Tu déclares une variable chaîne de longueur
fixe (* x), de la longueur du plus grand mot.
-2- Tu déclares une liste invisible, que tu
charges en passant par cette variable, donc, y
aura parfois des blanc invisibles, tous les mots,
phrases auront la même longueur...
-3- Tu balance ça dans un textBox, seul visible
pour l'utilisateur + vbcrlf
-4- Quand on cliquera dans le textBox, la position
textX.Seltart, te donnera après simple calcul, la
position dans la liste, comme tous les mots ont le
même nombre d'octets à chaque ligne...



J'y avais pensé, c'est astucieux, faut savoir contourner les problèmes,
mais pour cette fois je vais utiliser l'api, happy :)
Publicité
Poster une réponse
Anonyme