MicOriolis
Messages postés3Date d'inscriptionvendredi 12 janvier 2007StatutMembreDernière intervention 2 août 2007
-
2 août 2007 à 10:36
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
2 août 2007 à 12:06
Boujour amis developpeurs !
J'ai un peu de mal a comprendre comment fonctionne les collections Forms et Controls. Malheureusement j'ai besoin de deux petites fonctions qui manipulent ces bestiaux et je m'en sort pas.
1iere fonction : Le but est de remplir une collection avec certains controls de mon formulaire et de passer cette collection en parametre d'une fonction qui va tester quelques propriétés des controls.
Je pensais faire un truc du style :
Dim Coll_Ctrl As Collection
'ajout des controles a tester dans la collection. Ca marche pas et je sais pas quoi en faire
Coll_Ctrl(1) = MonForm.Controls("zone_de_text_A")
Coll_Ctrl(2) = MonForm.Controls("zone_de_text_B")
Coll_Ctrl(3) = MonForm.Controls("zone_de_liste_A")
Coll_Ctrl(4) = MonForm.Controls("zone_de_liste_D")
Coll_Ctrl(5) = MonForm.Controls("zone_de_liste_G")
If Fct_test_ctrl(Coll_Ctrl) = True Then
MsgBox "Ce champ est vide !"
End If
Public Function Fct_test_ctrl(P_Coll_Ctrl As Collection) As Boolean
Dim Ctrl As Control
For Each Ctrl In P_Coll_Ctrl
If (IsNull(Ctrl.Value)) Or (Ctrl.Value = "") Then
Fct_test_ctrl = True
Ctrl.Setfocus
Exit Function
End If
Next Ctrl
Fct_test_ctrl = False
Ca marche pas terrible. En fait, il faut peu etre passer un tableau de controls (au lieu d'une collection) a ma fonction de test mais je sais pas faire non plus
2ieme fonction : Très simple, comment savoir si un formulaire est ouvert ou fermé ? En VBA il existe la propriété IsLoaded de la collection AllForms mais j'ai pas trouvé l'eqsuivalent VB.
J'ai essayé ca qui marche pas trop mal:
If FctFormOuvert(MonForm.Name) = True Then
MsgBox MonForm.Name & " est chargé."
End If
Public Function FctFormOuvert(P_NomForm As String) As Boolean
Dim f As Form
For Each f In Forms
If f.Name P_NomForm Then FctFormOuvert True
Exit Function
Next
FctFormOuvert = False
End Function
Voila où j'en suis.
Donc si quelqu'un peu m'expliquer comment manipuler ces objets collections et faire en sorte que je trouve des solutions à mes 2 problèmes, je suis preneur.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 2 août 2007 à 10:47
Salut,
Pour le premier (le tableau de control) si tu es bien en VB6 tu peux faire un tableau de TextBOx. (de control en général)
- Ajoute un Textbox nomme le toto
- Copier colle le textbox sur la feuille et répond oui à la question.
- Tu as à present un groupe de control appélé Toto
Tu peux alors passer ce ghroupe en parametre à une fonction
exemple
Private Sub Form_Load()
MsgBox ChampVide(Toto)
End Sub<hr />
Private Function ChampVide(Col As Object) As Boolean
Dim Txt As TextBox
For Each Txt In Col
If Txt.Text = vbNullString Then
ChampVide = True
Exit For
End If
Next
End Function , ----
[code.aspx?ID=41455 By Renfield]
Pour le deuixieme point je sais pas
MicOriolis
Messages postés3Date d'inscriptionvendredi 12 janvier 2007StatutMembreDernière intervention 2 août 2007 2 août 2007 à 11:04
Pardon pardon ... oui oui je suis en VB6
Mmmmm c'est donc a ca que sert ce message obscur quand on fait un copier coller !!!
Merci de ta reponse [auteurdetail.aspx?ID=89254 jrivet] mais si je suis ta solution comment faire pour distinguer mes controls les uns des autres ?? Parce que là je vais avoir du toto(1) , toto(2), toto(3) ect sans trop savoir qui est qui.