OVH Cloud OVH Cloud

List TopIndex (ReSize) problème ???

1 réponse
Avatar
LE TROLL
Bonjour,

Comme vous pourrez le voir dans mon code, j'ai un problème de
positionnement topIndex dans un évènement reSize de la Form...

En effet, j'ai bêtement mis une variable qui récupère le topIndex en
début de code (topI), et qui le restitue en fin de code, seulement je viens
de m'apercevoir que ça ne marche pas, car la liste (même si le click n'est
pas lâché), prend successivement les topIdex, ce qui ruine mes espoirs,
lol...

J'ai une vague idée, mais je ne sais trop comment m'y prendre, il
faudrait conjuguer sûrement plusieurs évènements (mouseUp, ReSize, SetFocus
+ une varible qui teste tout ça ?), etc... Mais je ne sais trop comment m'y
prendre, si quelqu'un à un truc qui arche, merci de me dire :o)

Le but est quand on retaille la feuille, avec une liste dedans (qui suit
le mouvement), le but donc, est de retrouver son topIndex (autant que
possible) ???

Sub Form_Resize() 'hauteur liste
Dim maxiV As Long
Dim miniV As Long
Dim H As Long
Dim HmaxiL As Long
Dim LmaxiL As Long
Dim topF As Long
Dim hf As Long
Dim topI As Long
'
topI = List1.TopIndex
miniV = 5000 ' minimum vertical form1
maxiV = 10320 ' maximum vertical form1
H = 11535 ' maximum horizontal form1
HmaxiL = 7260 ' maximum vertical list1
LmaxiL = 11415 ' maximum horizontal list1
topF = 8400 ' départ Top frame2
hf = 975 ' hauteur frame2
'
On Error GoTo erreur
If Form1.Height <= miniV Then Form1.Height = miniV ' hauteur
If Form1.Height >= maxiV Then Form1.Height = maxiV
If Form1.Width <= H Then Form1.Width = H 'largeur
If Form1.Width >= H Then Form1.Width = H
'
List1.Height = HmaxiL - (maxiV - Form1.Height) ' resize vertical
Frame2.top = topF - (maxiV - Form1.Height) ' move frame2
Frame2.Height = hf ' hauteur fixe frame2
If List1.ListCount > 0 Then List1.TopIndex = topI
Exit Sub
'
erreur:
If Err = 384 Then Exit Sub
End Sub
--

Merci, au revoir et à bientôt.
--
ng75 arobase noos.fr
------------------------------------------------------------
LE TROLL, éleveur de trolls depuis César, qui disait :
Avec une hache, celui qui tient le manche a toujours raison !

1 réponse

Avatar
LE TROLL
J'ai trouvé ça, ça à l'air de marcher, si quelqu'un voix un truc
encore mieux ???

J'en déduis que ReSize se déclenche avant MouseX... Par contre, j'ai
aussi par popMenu un rétrécissement et agrandissement vertical, et là, bien
que ce ne soit pas dans mon code, le TopIndex de la liste à l'intérieur de
la form, demeure bon (toujours positionné sur le même), là je ne m'explique
pas, sauf si c'est un mécanisme automatique ???

Dim topI As Long
Dim reSize As Boolean
'
Sub Form_Resize() 'hauteur liste
reSize = True
End Sub
'
Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As
Single)
If reSize = True Then
reSize = False
If List1.ListCount > 0 Then List1.TopIndex = topI
End If
End Sub
'
Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As
Single)
If reSize = True Then topI = List1.toplist
End Sub
------------------


"LE TROLL" <le a écrit dans le message de news:
%239c$sSW%
Bonjour,

Comme vous pourrez le voir dans mon code, j'ai un problème de
positionnement topIndex dans un évènement reSize de la Form...

En effet, j'ai bêtement mis une variable qui récupère le topIndex en
début de code (topI), et qui le restitue en fin de code, seulement je
viens de m'apercevoir que ça ne marche pas, car la liste (même si le click
n'est pas lâché), prend successivement les topIdex, ce qui ruine mes
espoirs, lol...

J'ai une vague idée, mais je ne sais trop comment m'y prendre, il
faudrait conjuguer sûrement plusieurs évènements (mouseUp, ReSize,
SetFocus + une varible qui teste tout ça ?), etc... Mais je ne sais trop
comment m'y prendre, si quelqu'un à un truc qui arche, merci de me dire
:o)

Le but est quand on retaille la feuille, avec une liste dedans (qui
suit le mouvement), le but donc, est de retrouver son topIndex (autant que
possible) ???

Sub Form_Resize() 'hauteur liste
Dim maxiV As Long
Dim miniV As Long
Dim H As Long
Dim HmaxiL As Long
Dim LmaxiL As Long
Dim topF As Long
Dim hf As Long
Dim topI As Long
'
topI = List1.TopIndex
miniV = 5000 ' minimum vertical form1
maxiV = 10320 ' maximum vertical form1
H = 11535 ' maximum horizontal form1
HmaxiL = 7260 ' maximum vertical list1
LmaxiL = 11415 ' maximum horizontal list1
topF = 8400 ' départ Top frame2
hf = 975 ' hauteur frame2
'
On Error GoTo erreur
If Form1.Height <= miniV Then Form1.Height = miniV ' hauteur
If Form1.Height >= maxiV Then Form1.Height = maxiV
If Form1.Width <= H Then Form1.Width = H 'largeur
If Form1.Width >= H Then Form1.Width = H
'
List1.Height = HmaxiL - (maxiV - Form1.Height) ' resize vertical
Frame2.top = topF - (maxiV - Form1.Height) ' move frame2
Frame2.Height = hf ' hauteur fixe frame2
If List1.ListCount > 0 Then List1.TopIndex = topI
Exit Sub
'
erreur:
If Err = 384 Then Exit Sub
End Sub
--

Merci, au revoir et à bientôt.
--
ng75 arobase noos.fr
------------------------------------------------------------
LE TROLL, éleveur de trolls depuis César, qui disait :
Avec une hache, celui qui tient le manche a toujours raison !