Probleme de module

cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009 - 9 juil. 2004 à 07:10
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009 - 9 juil. 2004 à 10:56
Salut a tous,
Mon programme media center en VisualBasic avance bien mais je me heurte a un probleme qui je pense pour vous n'en est pas un...
Dans mon programme, j'utilise 7 form différentes, et chacune de ces 7 form utilise un tronc commun de lignes de commandes. Je me suis donc essayé a faire une fonction que je déclare dans un module... mais ... ben ca marche pas: visualbasic me detecte des erreurs.

Voila ce que j'utilise :
*sur les form :
-une famille de label1 ( Label1(0), label1(1)...
-une famille de label2 ( Label2(0), label2(1)...

*pour mon module voila ce que j'airentré :
Function Taille_des_labels()
For i = 0 To Label1.Count - 1
Label1(i).FontSize = 22
Label2(i).FontSize = 22
Next i
On Error Resume Next
Label1(A).FontSize = 36
Label2(A).FontSize = 36
End Function

Function Place_des_labels()
For i = 0 To Label1.Count - 1
Label1(i).Top = Label2(i).Top + 40
Label1(i).Left = Label2(i).Left + 40
Next i
End Function

(A etant déclaré en dim A a chaque form)

Une Ame bien veillante peut elle m'aider ?

9 réponses

cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
9 juil. 2004 à 08:39
Ton problème proviens du fait que tu déclare tes labels dans tes forms respectives, elles ne sont donc pas connues de ton module, essaye peut être ce code là.

Function Taille_des_labels()
For j = 0 To Me.Controls.Count - 1
If TypeOf Me.Controls(j) Is Label Then
Me.Controls(j).Fontsize = 22
etc...
Next j

Pascal Laurençon
Mieux vaut un petit clic que deux grandes claques..
Mieux vaut un naze bin qu'un naze tout court..
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 08:49
Malheureusement ca ne marche pas ... erreur sur le "Me."
Une autre solution ?
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
9 juil. 2004 à 09:00
Il faut que tu transmette ta form en argument de ta fonction :
Dans l'appel (donc dans le code de tes forms)
Taille_des_labels (me)

Dans le module
Function Taille_des_labels(Frm as Form)
For i = 0 To Frm.Label1.Count - 1
 Frm.Label1(i).FontSize = 22
Next i
On Error Resume Next
Frm.Label1(A).FontSize = 36
Frm.Label2(A).FontSize = 36
End Function

Christophe R.
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 09:28
Ok... ca marche ... enfin en partie :

En fait, mes labels sont de la bonne taille mais lorsque je passe dessus avec ma souris, le label sur lequel je passe ne change pas de taille... et je ne comprends pas pouquoi !!!?

*voila ce que j'ai écrit pour ma form :
Dim A,B

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
A = Index
If A <> B Then 'pour éviter le scintillement des labels
Call Taille_des_labels(Me)
B = A
End If
End Sub

*voila ce qu'il y a d'ecrit dans mon module ( merci a crenaud76 ):
Function Taille_des_labels(Frm As Form)
For i = 0 To Frm.Label1.Count - 1
Frm.Label1(i).FontSize = 22
Frm.Label2(i).FontSize = 22
Next i
On Error Resume Next
Frm.Label1(A).FontSize = 36
Frm.Label2(A).FontSize = 36
End Function

Encore besoin d'aide ... !
0

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

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
9 juil. 2004 à 10:36
Est-ce que ton code passe bien dans le If (pose un point d'arrêt sur le "A=B" et fait ensuite F8 pour execution pas à pas .
Attention aussi à A et B qui sont de type Variant dans ton code. Mettre plutot un "Private A As Integer, B As Integer".
Attention aussi au fait que par défaut, un integer déclaré mais non encore initialisé vaut zéro, donc quand tu sera sur Label1(0), A valant Index, A sera égal à 0 et B aussi, donc tu passeras pas dans ton Then !!!
Parade : Initialisé A et B à -1 dans le load de la Form.
Au passage, A et B ne sont vraiment pas des nom de variable explicite !! De plus, le A n'a pas besoin d'être déclaré au niveau module. Délcare le dans l'EVT MouseMove. Et pour B, je le mettrait aussi dasn l'EVT plutot que dans le module. Il suffit de le mettre STATIC. En fait, A est totalement superflu.

Christophe R.
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 10:50
J'ai besoin de mon A car il me permet d'assigner des lignes de commandes si j'appuis sur ENTRER en fonction des labels grossi :

Dim A, B
Private Sub Form_Load()
Call Place_des_labels
Call Taille_des_labels
End Sub

Private Sub Label1_Click(Index As Integer)
A = Index
Call Taille_des_labels
End Sub

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
A = Index
Call Taille_des_labels
End Sub

Private Sub Timer1_Timer()
/redIf GetAsyncKeyState(vbKeyUp) Then A = A - 1/red
/redIf GetAsyncKeyState(vbKeyDown) Then A = A + 1/red
/redIf A = 0 Or A = Label1.Count Then A = 0/red
/redIf A = -1 Or A = Label1.Count - 1 Then A = Label1.Count - 1/red
/redIf GetAsyncKeyState(vbKeyReturn) Then Call Execute/red
Call Taille_des_labels
End Sub

Function Execute()
'if A=0 then
'If A = 1 Then
'If A=2 then
If A = 3 Then End
'if A=4 then
End Function

/redFunction Taille_des_labels()/red
/redIf A <> B Then/red
/redFor i = 0 To Label1.Count - 1/red
/redLabel1(i).FontSize = 22/red
/redLabel2(i).FontSize = 22/red
/redNext i/red
/redOn Error Resume Next/red
/redLabel1(A).FontSize = 36/red
/redLabel2(A).FontSize = 36/red
/redB = A/red
/redEnd If/red
/redEnd Function/red

/redFunction Place_des_labels()/red
/redFor i = 0 To Label1.Count - 1/red
/redLabel1(i).Top = Label2(i).Top + 40/red
/redLabel1(i).Left = Label2(i).Left + 40/red
/redNext i/red
/redEnd Function/red

/redTout ce qui eest ecrit en rouge, j'aimerai le mettre dans un module de maniere a ce que mes 7 form puissent appeler ces fonctions / utiliser ces fonctions/red
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 10:52
J'ai besoin de mon A car il me permet d'assigner des lignes de commandes si j'appuis sur ENTRER en fonction des labels grossi :

Dim A, B
Private Sub Form_Load()
Call Place_des_labels
Call Taille_des_labels
End Sub

Private Sub Label1_Click(Index As Integer)
A = Index
Call Taille_des_labels
End Sub

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
A = Index
Call Taille_des_labels
End Sub

Private Sub Timer1_Timer()
If GetAsyncKeyState(vbKeyUp) Then A = A - 1
If GetAsyncKeyState(vbKeyDown) Then A = A + 1If A 0 Or A Label1.Count Then A = 0If A -1 Or A Label1.Count - 1 Then A = Label1.Count - 1
If GetAsyncKeyState(vbKeyReturn) Then Call Execute
Call Taille_des_labels
End Sub

Function Execute()
'if A=0 then
'If A = 1 Then
'If A=2 then
If A = 3 Then End
'if A=4 then
End Function

Function Taille_des_labels()
If A <> B Then
For i = 0 To Label1.Count - 1
Label1(i).FontSize = 22
Label2(i).FontSize = 22
Next i
On Error Resume Next
Label1(A).FontSize = 36
Label2(A).FontSize = 36
B = A
End If
End Function

Function Place_des_labels()
For i = 0 To Label1.Count - 1
Label1(i).Top = Label2(i).Top + 40
Label1(i).Left = Label2(i).Left + 40
Next i
[red]End Function

[red]Tout ce qui eest ecrit en rouge, j'aimerai le mettre dans un module de maniere a ce que mes 7 form puissent appeler ces fonctions / utiliser ces fonctions
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 10:54
Erreur de saisie, je ne veut pas mettre le :
Function Execute()
'if A=0 then
'If A = 1 Then
'If A=2 then
If A = 3 Then End
'if A=4 then
End Function

dans un module
0
cs_yannn Messages postés 130 Date d'inscription mercredi 4 septembre 2002 Statut Membre Dernière intervention 5 janvier 2009
9 juil. 2004 à 10:56
Avec un mail tu comprendrais tout de suite ...
0
Rejoignez-nous