Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété Max
de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768 à
32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que l'application
soit la plus agréable à l'utilisation, il faudra ajuster cette constante
"correctement" (qui n'a jamais connu le problème "je click sur la flèche
et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
"Daniel AUBRY" <mail@daniel-aubry.com> a écrit dans le message de news:
44c20aa6$0$9376$636a55ce@news.free.fr...
Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété Max
de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768 à
32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que l'application
soit la plus agréable à l'utilisation, il faudra ajuster cette constante
"correctement" (qui n'a jamais connu le problème "je click sur la flèche
et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété Max
de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768 à
32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que l'application
soit la plus agréable à l'utilisation, il faudra ajuster cette constante
"correctement" (qui n'a jamais connu le problème "je click sur la flèche
et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" a écrit dans le message de
news:"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768
à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" <fpicalausa@chez.com> a écrit dans le message de
news: OhXulVYrGHA.1848@TK2MSFTNGP02.phx.gbl...
"Daniel AUBRY" <mail@daniel-aubry.com> a écrit dans le message de news:
44c20aa6$0$9376$636a55ce@news.free.fr...
Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768
à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" a écrit dans le message de
news:"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est de -32768
à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Hello,
Quand tu écris
Ascenceur.Value * 10
Tu écris:
Effectuer la somme d'un Integer (Ascenceur.Value) par un Integer (10), ce
qui donne pour résultat un... Integer (-32768 à 32767) sauf en cas de
dépassement de capacité (et VB se plaint!)
Donc, ça plante tout comme le plus classique
Dim a As Long
a = 1000*1000
Pour corriger l'erreur, il faut signifier à VB que tu veux que l'opération
se fasse sur un type de donnée plus grand. Par exemple:
SupportVignette.Top = Ascenceur.Value * 10&
(10 est un Long)
--
Picalausa François
"Daniel AUBRY" a écrit dans le message de news:
44c25b1c$0$21621$Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" a écrit dans le message de
news:"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est
de -32768 à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Hello,
Quand tu écris
Ascenceur.Value * 10
Tu écris:
Effectuer la somme d'un Integer (Ascenceur.Value) par un Integer (10), ce
qui donne pour résultat un... Integer (-32768 à 32767) sauf en cas de
dépassement de capacité (et VB se plaint!)
Donc, ça plante tout comme le plus classique
Dim a As Long
a = 1000*1000
Pour corriger l'erreur, il faut signifier à VB que tu veux que l'opération
se fasse sur un type de donnée plus grand. Par exemple:
SupportVignette.Top = Ascenceur.Value * 10&
(10 est un Long)
--
Picalausa François
"Daniel AUBRY" <mail@daniel-aubry.com> a écrit dans le message de news:
44c25b1c$0$21621$626a54ce@news.free.fr...
Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" <fpicalausa@chez.com> a écrit dans le message de
news: OhXulVYrGHA.1848@TK2MSFTNGP02.phx.gbl...
"Daniel AUBRY" <mail@daniel-aubry.com> a écrit dans le message de news:
44c20aa6$0$9376$636a55ce@news.free.fr...
Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est
de -32768 à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François
Hello,
Quand tu écris
Ascenceur.Value * 10
Tu écris:
Effectuer la somme d'un Integer (Ascenceur.Value) par un Integer (10), ce
qui donne pour résultat un... Integer (-32768 à 32767) sauf en cas de
dépassement de capacité (et VB se plaint!)
Donc, ça plante tout comme le plus classique
Dim a As Long
a = 1000*1000
Pour corriger l'erreur, il faut signifier à VB que tu veux que l'opération
se fasse sur un type de donnée plus grand. Par exemple:
SupportVignette.Top = Ascenceur.Value * 10&
(10 est un Long)
--
Picalausa François
"Daniel AUBRY" a écrit dans le message de news:
44c25b1c$0$21621$Merci François
effectivement quand je fais comme toi dans un projet
vierge : ça marche.
Par contre dans mon projet j'ai écrit :
SupportVignette.Top = Ascenceur.Value * 10
et ça plante
j'ai déclaré une variable :
Dim PositionSupportVignette as Long
et j'ai corrigé :
PositionSupportVignette = Ascenceur.Value * 10
SupportVignette.Top = PositionSupportVignette
et ça plante encore
et j'ai encore corrigé :
PositionSupportVignette = Ascenceur.Value
PositionSupportVignette = PositionSupportVignette * 10
SupportVignette.Top = PositionSupportVignette
et CA MARCHE !!
par contre je ne vois pas pourquoi !!!!!!
Merci du coup de main.
"Picalausa François" a écrit dans le message de
news:"Daniel AUBRY" a écrit dans le message de news:
44c20aa6$0$9376$Bonjour à tous,
soit un formulaire contenant :
1 Ascenseur
1 image nommée Conteneur
1 image nommée SupportVignette contenue par Conteneur
x images nommée Vignette(x) contenues par SupportVignette
(loadées au besoin)
Conteneur a les dimensions du formulaire.
SupportVignette à la largeur de Conteneur.
La hauteur de SupportVignette est fonction du x
Ensuite je parametre l'ascenseur :
dans le formulaire :
Ascenceur.Max = -SupportVignette.Height + Conteneur.Height
Private Sub Ascenceur_Change()
SupportVignette.Top = Ascenceur.Value
End Sub
Le déplacement de l'ascenseur donne donc une valeur négative à
SupportVignette.Top et les vignettes montent !!!!
Impeccable SAUF que, quand la propiété .top atteint une valeur
d'envron - 32000, cela plante : Dépassement de capacité !!!
Hello,
Je n'ai pas de reproduction du problème sur la propriété .Top:
Private Sub Form_Load()
Me.ScaleMode = 3
Picture1.Top = -1000000
End Sub
Fonctionne parfaitement!
Par contre, ça m'étonnerais moins que tu ais l'erreur sur la propriété
Max de ta VScrollbar (il s'agit d'un Integer dont son range est
de -32768 à 32767)
Une technique fort simple pour palier à ce problème est d'ajuster le
défilement à l'aide d'une constante multiplicative. Pour que
l'application soit la plus agréable à l'utilisation, il faudra ajuster
cette constante "correctement" (qui n'a jamais connu le problème "je
click sur la flèche et rien ne se passe avant un quart d'heure"?)
Voici un exemple qui calcule une telle constante "pour que ça marche",
mais pas pour que ce soit agréable:
Option Explicit
Private mScrollScale As Single
Private Sub Form_Load()
Me.ScaleMode = vbTwips
Picture1.Height = 64535
'En supposant que ça ne dépasse pas la valeur d'un long
Dim MaxRange As Long
Dim MinRange As Long
MaxRange = Picture1.Height
MinRange = 0
If (MaxRange - MinRange) <= 32767 Then
VScroll1.Max = MaxRange - MinRange
mScrollScale = 1
Else
VScroll1.Max = 32767
mScrollScale = (MaxRange - MinRange) / 32767
End If
End Sub
Private Sub VScroll1_Change()
'Rmq : pour une valeur max, top < -32768
Picture1.Top = -mScrollScale * VScroll1.Value
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
--
Picalausa François