Saisie dynamique [Résolu]

Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
- - Dernière réponse : kobeymane
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
- 6 mars 2012 à 00:09
bonjour,
Je voudrais savoir comment faire une saisie dynamique des quelques valeur dans des tableaux après avoir saisies sur des textbox et pouvoir les utiliser dans le cas lié au problème suivant:

Dans mon programme j'ai créer des textbox selon le besoin de l'utilisateur (suivant le paramètre ordre). une colonne pour les 'an' l'autre pour 'bn' et la dernière pour 'phin'. afin de saisir ces donnéés, j'ai créer un nouveau boutton 'Constitution'. J'y ai associé comme code une declaration de 3 tableaux ann(), bnn() et phinn() de 21 cases chacun. Maintenant je vise à affecter chaque valeur saisie dans les textbox à chaque case des 3 tableaux.Voici le programme:
Public Sub commencer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles commencer.Click
ordre = CType(ordree.Text, Single)
If ordree.Text = "" Or Not (IsNumeric(ordree.Text)) Then
            MsgBox("Saisir Un Ordre Valide")
            Exit Sub
        End If
Dim NumeroTextBox As Integer
        Dim an, bn, phasen As TextBox


        Do

            an = New TextBox
            an.Name = "a" & NumeroTextBox
            Me.Controls.Add(an)
            an.Text = ""
            an.Size = New Size(60, 25)
            an.Location = New Point(150, 30 * i)
            an.Visible = True



            bn = New TextBox
            bn.Name = "b" & NumeroTextBox
            Me.Controls.Add(bn)
            bn.Text = ""
            bn.Size = New Size(60, 25)
            bn.Location = New Point(250, 30 * i)
            bn.Visible = True



            phasen = New TextBox
            phasen.Name = "b" & NumeroTextBox
            Me.Controls.Add(phasen)
            phasen.Text = ""
            phasen.Size = New Size(60, 25)
            phasen.Location = New Point(350, 30 * i)
            phasen.Visible = True



            NumeroTextBox = NumeroTextBox + 1

        Loop Until Me.i < ordre

        MsgBox("Avant de Clicker sur 'Constituer Le Signal', assurez vous que vous avez rempli tous les champs. Sinon la synthèse sera erronée")
 ordree.Enabled = False

Public Sub constitution_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles constitution.Click

        Dim ann(21), bnn(21), cnn(21), phinn(21) As Single
        Dim f As Byte

Dim NumeroTextBox As Integer
        Dim an, bn, phasen As TextBox

        For f = 1 To 20
            ann(f) = 0
            bnn(f) = 0
            cnn(f) = 0
            phinn(f) = 0
        Next f

        For Me.i = 0 To 19
            ann(i) = 'QUE DOIS JE METTRE COMME CODE
            bnn(i) cnn(i) 'racine carré (ann(i)²+bnn(i)²)
            phin(i)= 'atan(bnn(i)/ann(i)
        Next i



C'est la première fois que je me trouve face à cette situation. Merci de me donner un Coup de main ^^
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
45
3
Merci
comme tes textboxes sont crées dynamiquement
il te faut le addhandler pour gérer les évenements
à toi de savoir quel évenement à utiliser pour
tes texboxes

msdn

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ShayW
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
0
Merci
j'ai oublié que phin est déduit de an et bn (phinn(i)=atan(bnn(i)/ann(i)) donc la colonne de phin a supprimer mais le tableau phinn est considéré..
Commenter la réponse de kobeymane
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
45
0
Merci
Salut

1 Apprend à mettre de l'ordre dans ton projet
si tu dois te relire dans un mois tu vas te dire mais qu'est ce que j'ai écrit
2 tu devrais mettre tes boutons crées dynamiquement dans un panel

an.Location = New Point(150, 30 * i)


pourquoi 30 * i
si tu veux que tout les an soient l'un en dessous de l'autre
déclare une variable
dim anpositiony as integer
anpositiony = la position y du premier an
dans ta loop do 
an = New TextBox
     an.Name = "a" & NumeroTextBox
     Me.Controls.Add(an)
     an.Text = ""
     an.Size = New Size(60, 25)
     an.Location = New Point(150, anpositiony)
     anpositiony = an.bottom + 4      
     an.Visible = True

la meme chose pour tes autres textboxes

à quoi sert
3 tableaux ann(), bnn() et phinn() de 21 cases chacun
ce ne sont pas des cases
et attention un array de taille 21
ann(20) et non ann(21) l'index va de 0 à 20

qu'est censé de faire le constitution_Click ?

Dim an, bn, phasen As TextBox
Commenter la réponse de cs_ShayW
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
0
Merci
bonjour

pour ta question pourquoi je met
an.Location = New Point(150, 30 * i)

car je tape au clavier dans le textbox de la variable ordre 20 et il y a affichage de 20 textboxs pour les an et 20 pour les bn (amplitudes). Après que j'ai corrigé le programme avec le code que tu m'as donné, l'orsque je tape ordre=20 il y a 1 SEUL textbox pour an et un pour bn.
donc l'expression précédente est résponsable de la création dynamique des textboxs selon la valeur de 'ordre'.

pour ta 2ème question: "à quoi sert
3 tableaux ann(), bnn() et phinn() de 21 cases chacun ?"
Je t'explique d'abord l'alogorithme:
** Le but de form2 est de faire une synthèse libre d'un signal saisi par l'utilisateur suivant son choix:
Il choisit les valeurs de an bn (amplitudes) et phin(phases) avec n variant de 1 à ordre.
Je calcul les Cn=racine carré de (an²+bn²)
et phin=arctan(bn/an).
Il me donne la moyenne: moy et la période T0 pour faire omega=2*pi/T0.

après je constitu son signal voulu en utilisant l'expression:
s(t)= moy + sigma de n=1 à ordre de(Cn*Cos(Omega*n*t+phin) avec t: variable de temps.

Pour appliquer ça sur vb j'ai eu l'idée, puisqu'il s'agit de plusieurs données saisie et pour que je puisse ensuite TRACER ce signal temporel et encore plusieurs taches...., de stocker ces valeurs dans des tableaux ann() bnn() Cnn() phinn() AFIN de TRACER le signal décrit. et si vous avez une idée plus simple n'hésitez pas à me la signaler ^^.

Puisqu'on peut pas dépasser 20 pour la variable ordre, et puisque je veux commencer par l'indice 1 car mon sigma débute de 1 pour ne pas me tromper dans la suite (TRACAGE) j'ai initialisé les tableaux avec 21 cases.

et finalement pour le constitution_click:
après avoir saisi tous les paramètres an bn et calculé cn et phin je dois consitituer le signal suivant l'expression décrite. Pour retourner ce signal au form1 pour le graphe temporel, réponses aux filtres, spectre fréquentiel.....

Donc le but de cet form2 'synthèse libre' est de saisir un signal personnalisé par l'utilisateur et retourner ses valeurs.

Maintenant que vous savez tout et j'éspere que vous avez tout compris, mon soucis est de saisir les valeurs des amplitudes dans les tableaux ann et bnn
ensuite le calcul des cnn et phinn me semble facile et après, comment faire pour retourner ces valeurs au Form1 pour en faire les autres taches.

Merci d'avance.
Commenter la réponse de kobeymane
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
0
Merci
j'ai pas bien compris sur msdn mais j'ai trouvé un lien plus didactique qui parles des collections. enfin je vais pouvoir faire la saisie dynamique. merci pour l'indication ^^
Commenter la réponse de kobeymane