Interaction avec une form dans un module

Zachs Messages postés 202 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 10 février 2009 - 12 juil. 2007 à 11:02
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 12 juil. 2007 à 18:54
Bonjour, je cherche a fair dans mon programme une fonction qui se toruve d'un modul mais qui interagi avec un form le probleme c'est qu'il me dit a chaque fois qu'il n'y a pas de reference a l'objet. Voici le code:

Module

VarGlob

Public CL
As
Integer

Public
Sub UnitsVB()

   Dim units
As Units
   units.LanguageTableAdapter.Fill(units.Egs_CateringDataSet.Language)

   Dim dtLanguage
As DataTable = units.Egs_CateringDataSet.Tables(
"Language")   units.tsbtnDelete.Text = dtLanguage.Rows(25).Item(CL)
   units.tsbtnModify.Text = dtLanguage.Rows(26).Item(CL)
   units.tsbtnNew.Text = dtLanguage.Rows(27).Item(CL)
   units.Cancel_Button.Text = dtLanguage.Rows(29).Item(CL)
   units.OK_Button.Text = dtLanguage.Rows(28).Item(CL)
   units.Text = dtLanguage.Rows(15).Item(CL)
   units.dgvUnits.Columns(2).HeaderText = dtLanguage.Rows(15).Item(CL)

End
Sub
End
Module

Si quelqu'un aurai une idée ca serait sympa merci

--------------------->>
Ordi, frigo, dodo...
Quelle dur journée!

8 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 juil. 2007 à 11:18
Salut,

Passe le Form sur lequel tu veux interagir en parametre à ta procédure

Public Sub UnitsVB(TonForm as Form)

@+: Ju£i?n
Pensez: Réponse acceptée
0
Zachs Messages postés 202 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 10 février 2009
12 juil. 2007 à 13:08
Ca rentre dans la fonction (comme avant) mais ca me change toujours pas le texte. Dans "Units_Load" j'ai mis UnitsVB(Me) pour le parrametre mais ca change rien et dans la fonction j'ai mis "PublicSub UnitsVB(ByVal Units As Form)".

Mais ca marche paaaaaaaaaas!

--------------------->>
Ordi, frigo, dodo...
Quelle dur journée!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 juil. 2007 à 13:14
Re,
Essaie ByRef à la place de ByVal peu être.

@+: Ju£i?n
Pensez: Réponse acceptée
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
12 juil. 2007 à 13:16
il faut savoir que tu ne peux pas modifier un controle qui n'existe pas j'ai comme l'impression que tu essaye de modifié un controle graphique avant sa création.
qu'est ce qui me fait dire ca ?
tu dit que tu lance la fonction depuis "Units_Load", et tu dit aussi "pas de reference a l'objet" en gros il tente d'acceder a un objet non instancié alors 2 solutions, soit tu t'addresse a une varaible que t'as oublié d'instancié (j'ai penser au formulaire au debut) sois au controle sur le formulaire ou a une variable que tu manipule, donc cherche de ton coté si t'as pas oublié un "new" et apres met le meme code derriere un bouton plutot que dans le load, si effectivement cela marche derreire un bouton cela veux dire que tu lance le code trop tot je te suggere d'attendre que tout le formulaire ai fini d'etre créé.
Vu que les appli .net sont MTA (multi thread) il y a de forte chance que le load soit chargé en parallèle de l'init des controle.
alors 2 solutions possible quoi que actuellement pas testés
sois tu mets ton appel a la fin de la procédure d'init des controle (le code generé automatiquement) (ou juste apres le retour de l'appel)
sois dans le form load tu fait une tite boucle qui ressemble a ca :
do until Me.Created
   application.DoEvents()
   threading.thread.sleep(100)
loop

(3ieme sois tu le met pas au chargement :p)

TeBeCo
0

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

Posez votre question
Zachs Messages postés 202 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 10 février 2009
12 juil. 2007 à 13:28
Ca fout le bordel avec byRef il m'ouvre plein de fois ma fenetre j'ai même pas essayer de compté >.<

Et c'est pas un probleme de variable ou de déclaration. C'est ni le fait de le lancer trop tôt parcke le code comme il est la je remplace les units par des Me et je le met dans le load ca marche mais je voulais mettre dans un module parcque ca sert a traduire ma fenetre et j'en ai dans toute mes form alors je voulais les rassembler dans un module pour ordonné un peu tout ca.

--------------------->>
Ordi, frigo, dodo...
Quelle dur journée!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 juil. 2007 à 13:45
Re,
J vois pas le souci regarde ce code qui fonctionne très bien.

Public Class Form1

    

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call Module1.FillTextBox(Me)
    End Sub
End Class

Module Module1
    Public Sub FillTextBox(ByVal f As Form1)
        f.TextBox1.Text = "Test"

    End Sub

End Module , ----
(Coloration syntaxique automatique par Kenji)

@+: Ju£i?n
Pensez: Réponse acceptée
0
Zachs Messages postés 202 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 10 février 2009
12 juil. 2007 à 14:05
ca marche a moitié mais j'avai oublier de mettre "Call VarGlob." devant mais le probleme c'est qu'il me change toujour pas le texte donc je suis revenu au point de départ...

--------------------->>
Ordi, frigo, dodo...
Quelle dur journée!
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
12 juil. 2007 à 18:54
c'est quoi cette blague avec les "call" ya plus besoin de ca en .net c'est comme les "set" ...
si le pb se résoud en employant le "Call" c'est que ya un truc mal codé qq part

TeBeCo
0
Rejoignez-nous