[VB6] pb avec fonction paramétrée

Résolu
Pitbull42 Messages postés 10 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 mai 2006 - 12 mai 2006 à 09:18
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 12 mai 2006 à 11:01
Bonjour j'ai ecris ceci
Function TraceVanne2Voies(ByVal longueur1 As Integer, ByVal longueur2 As Integer, ByVal hauteur1 As Integer, ByVal hauteur2 As Integer)
    ScaleMode = vbPixels        'dessine en pixel
    ForeColor = vbBlack         'couleur trait en noir
    Line (hauteur1, longueur1)-(hauteur2, longueur1)
    Line (hauteur1, longueur1)-(hauteur2, longueur2)
    Line (hauteur2, longueur1)-(hauteur1, longueur2)
    Line (hauteur1, longueur2)-(hauteur2, longueur2)
    FillStyle = vbFSSolid       'la forme dessiné est un solide
End Function

et j'aimerai par le biais de 2 commandbutton , sincrementé la valeur de longueur1 , et decrementé la valeur de longueur2
mais impossible d'acceder au variable longueur1 , longueur2 , pk ???

aidez moi
merci d'avance
amicalement lucas

8 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 mai 2006 à 10:23
salut,


Option Explicit
Dim longueur1 As Integer
Dim longueur2 As Integer
Dim hauteur1 As Integer
Dim hauteur2 As Integer
'
'
Private Sub Form_Load()
Me.ScaleMode = vbPixels 'dessine en pixel
Me.ForeColor = vbBlack 'couleur trait en noir
Me.FillStyle = vbFSSolid 'la forme dessiné est un solide
'
longueur1 = 50
longueur2 = 350
hauteur1 = 100
hauteur2 = 300
End Sub
'
'
Private Sub Form_Paint()
Call TraceVanne2Voies
End Sub
'
'
Private Sub TraceVanne2Voies()
Me.Line (hauteur1, longueur1)-(hauteur2, longueur1)
Me.Line (hauteur1, longueur1)-(hauteur2, longueur2)
Me.Line (hauteur2, longueur1)-(hauteur1, longueur2)
Me.Line (hauteur1, longueur2)-(hauteur2, longueur2)
End Sub
'
'
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
longueur1 = longueur1 + 2
longueur2 = longueur2 - 2
Case 1
longueur1 = longueur1 - 2
longueur2 = longueur2 + 2
End Select
'
Call TraceVanne2Voies
End Sub


<small> Coloration
syntaxique automatique [AFCK]</small>


++

PCPT [AFCK]
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
12 mai 2006 à 09:28
Salut,



longueur1 et longueur2 sont des variables passées en paramètres, elles
n'ont aucune existence en dehors de ta fonction (qui devrait plutôt
être une procédure puisqu'elle ne renvoit rien).







Pour réaliser ce que tu souhaites, il te faut créer deux variables globales :





Si tu ne possèdes qu'un formulaire :

Dim maLongueur1 As Integer

Dim maLongueur2 As Integer

Dim maHauteur1 As Integer

Dim maHauteur2 As Integer



Si tu veux l'inclure dans un module :

Public maLongueur1 As Integer

Public maLongueur2 As Integer
Public maHauteur1 As Integer

Public maHauteur2 As Integer





Ensuite, la création des évenements Click sur boutons :





Private Sub CommandButton1_Click()

maLongueur1=maLongueur1+1

TraceVanne2Voies maLongueur1, maLongueur2, maHauteur1, maHauteur2

End Sub





Private Sub CommandButton1_Click()

maLongueur2=maLongueur2-1

TraceVanne2Voies maLongueur1, maLongueur2, maHauteur1, maHauteur2

End Sub



Sub TraceVanne2Voies(ByVal longueur1 As Integer, ByVal longueur2
As Integer, ByVal hauteur1 As Integer, ByVal hauteur2 As Integer)

ScaleMode = vbPixels 'dessine en pixel

ForeColor = vbBlack 'couleur trait en noir

FillStyle = vbFSSolid 'la forme dessiné est un solide

Line (hauteur1, longueur1)-(hauteur2, longueur1)

Line (hauteur1, longueur1)-(hauteur2, longueur2)

Line (hauteur2, longueur1)-(hauteur1, longueur2)

Line (hauteur1, longueur2)-(hauteur2, longueur2)

End Sub




Manu
0
Pitbull42 Messages postés 10 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 mai 2006
12 mai 2006 à 09:37
salut manu , j'ai saisi ca dans ma page de code

Option Explicit
Dim longueur1 As Integer
Dim longueur2 As Integer
Dim hauteur1 As Integer
Dim hauteur2 As Integer


Function TraceVanne2Voies(ByVal longueur1 As Integer, ByVal longueur2 As Integer, ByVal hauteur1 As Integer, ByVal hauteur2 As Integer)
ScaleMode = vbPixels 'dessine en pixel
ForeColor = vbBlack 'couleur trait en noir
Line (hauteur1, longueur1)-(hauteur2, longueur1)
Line (hauteur1, longueur1)-(hauteur2, longueur2)
Line (hauteur2, longueur1)-(hauteur1, longueur2)
Line (hauteur1, longueur2)-(hauteur2, longueur2)
FillStyle = vbFSSolid 'la forme dessiné est un solide
End Function


Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
longueur1 = longueur1 + 2
longueur2 = longueur2 - 2
TraceVanne2Voies longueur1, longueur2, hauteur1, hauteur2
Case 1
longueur1 = longueur1 - 2
longueur2 = longueur2 + 2
TraceVanne2Voies longueur1, longueur2, hauteur1, hauteur2
End Select
End Sub


Private Sub Form_Paint()
TraceVanne2Voies CInt(50), CInt(350), CInt(100), CInt(300) ' donne des valeurs aux 4 variables à l'initialisation
End Sub

le soucis est que lorsque je clique sur mes command bouttons , rien ce passe ....
0
Pitbull42 Messages postés 10 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 mai 2006
12 mai 2006 à 09:41
PS : comment faire pour transformer ma fonction en procédure ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitbull42 Messages postés 10 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 12 mai 2006
12 mai 2006 à 09:52
En fait mes variables longueur1 et longueur2 de ma fonction TraceVanne2Voies ne sont pas actualisé .....
et mes incrémentations , decrémentations commence à 0 , et normalement il devrait comencer a 50 et 350 ?????

help please
0
acecel Messages postés 140 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 14 octobre 2006
12 mai 2006 à 10:13
Bonjour

Quelles sont les propriétés de ta form ? (Auto Redraw, DrawMode,DrawStyle..)

Utilise plutôt :

[Cpp]
Private Sub Form_Load()
TraceVanne2Voies CInt(50), CInt(350), CInt(100), CInt(300) ' donne des valeurs aux 4 variables à l'initialisation
End Sub
/cpp

Au lieu de

[cpp]
Private Sub Form_Paint()
TraceVanne2Voies CInt(50), CInt(350), CInt(100), CInt(300) ' donne des valeurs aux 4 variables à l'initialisation
End Sub
/cpp
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
12 mai 2006 à 10:54
Tes variables longueur1, longueur2, ... n'étaient pas initialisées, tout simplement.



merci PCPT pour la correction.


Manu
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
12 mai 2006 à 11:01
je suggererais plutôt comme ça:





Private Sub TraceVanne2Voies()


Me.Cls


Me.Line (longueur1, hauteur1)-(longueur2, hauteur2), , B


End Sub


Daniel
0
Rejoignez-nous