cs_yannn
Messages postés130Date d'inscriptionmercredi 4 septembre 2002StatutMembreDernière intervention 5 janvier 2009
-
9 juil. 2004 à 07:10
cs_yannn
Messages postés130Date d'inscriptionmercredi 4 septembre 2002StatutMembreDerniè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
cs_pluplu
Messages postés615Date d'inscriptionmercredi 18 décembre 2002StatutMembreDerniè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..
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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
cs_yannn
Messages postés130Date d'inscriptionmercredi 4 septembre 2002StatutMembreDerniè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 ... !
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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.
cs_yannn
Messages postés130Date d'inscriptionmercredi 4 septembre 2002StatutMembreDerniè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
/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
cs_yannn
Messages postés130Date d'inscriptionmercredi 4 septembre 2002StatutMembreDerniè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