IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Calcul en temps réel dans une 2ème fenêtre


Sujet :

VB.NET

  1. #21
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Justement tu as un problème à moins que je me trompe
    Tu forces le point en virgule parce que ton pc le séparateur decimal est une virgule.
    Mais si tu lances dans un pc avec séparateur decimal point et tu forces le point en virgule tu auras aussi une erreur
    Tu peux tester sur ton pc en modifiant le séparateur decimal de ton WINDOWS
    http://www.commentfairepour.com/separateur.htm
    et n'oublie pas de remettre la virgule

  2. #22
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    J'ai essayé d'abuser de la structure je crois :O

    voilà ce que j'ai essayé de faire ça va peut etre vous faire rire ^^ :

    Dans Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Sub TSP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' Call sub
            AddEventTextBox(PL_TG_MD)
            AddEventTextBox(PL_TS_MD)
    end sub
     
    Sub AddEventTextBox(ByVal conteneur As Control)
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                AddHandler txt.TextChanged, AddressOf PL_TG_MD_TextChanged
                AddHandler txt.TextChanged, AddressOf PL_TS_MD_TextChanged       ' c'est possible ? c'est censé fonctionner ?
            Next
    End Sub
     
        Private Sub PL_TG_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)       ' calcul des Label  Ai et At
            If IsAllTextBoxNumeric(PL_TG_MD) Then 
                Loads_Result.LBL_metAi.Text = Format((Math.PI * (Double.Parse(TB_metD0.Text) - 2 * Double.Parse(TB_metThick.Text)) ^ 2) / 4, ("0.00"))
                Loads_Result.LBL_metAt.Text = Format(Math.PI * Double.Parse(TB_metThick.Text) * (Double.Parse(TB_metD0.Text) - Double.Parse(TB_custThick.Text)), ("0.00"))
            End If
        End Sub
     
     
        Private Sub PL_TS_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)     '  calcul du Label  Fp
            If IsAllTextBoxNumeric(PL_TS_MD) Then Loads_Result.LBL_metFp.Text = Format(TB_metP.Text * Loads_Result.LBL_metAi.Text, ("0.00"))
        End Sub
     
     
    Private Sub BT_LoadResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_LoadResult.Click
            Loads_Result.Show()
                If IsAllTextBoxNumeric(PL_TG_MD) Then AddEventTextBox(PL_TG_MD)
                If IsAllTextBoxNumeric(PL_TS_MD) Then AddEventTextBox(PL_TS_MD)    ' Lors de l'affichage de la fenetre secondaire -> appel des méthode pour calculer Ai, At, Fp
    end sub
     
     
    Function IsAllTextBoxNumeric(ByVal conteneur As Control)
            Dim i As Integer
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()     ' vérif du contenu des textbox (chiffre)
                If Not Double.TryParse(txt.Text, i) Then Return False
            Next
            Return True
        End Function

    Dans Secondaire : (et peut etre même inutile si il y a un évenement pour lui dans le main ... mais bon)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub LBL_metAi_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles LBL_metAi.TextChanged
            LBL_metAt.Text = Format(Math.PI * ConvNum(TSP.TB_metThick.Text) * (ConvNum(TSP.TB_metD0.Text) - ConvNum(TSP.TB_custThick.Text)), ("0.00"))
        End Sub

    Bon j'espere que c'est compréhensible :S Avec tout ça la fenetre affiche dès son affichage des 0 partout pour les Labels de la seconde fenetre (valeur à leur initialisation) mais pas de valeurs calculées. En revanche, dès que je modifie une variable du main, les Labels se mettent bien à jour ! et ça c'est bien heureusement ^^

    EDIT: shayw : ben non de ce coté là ça marche plutôt bien, mes calculs se font bien quand il se font je vérifie tout. Et quand ça ne fonctionnait pas il me faisait direct une exception donc je pense que ça va !
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  3. #23
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par Adakhum Voir le message
    J'ai essayé d'abuser de la structure je crois :O

    voilà ce que j'ai essayé de faire ça va peut etre vous faire rire ^^ :
    Cela fait un jolie capharnaüm
    Tu places 2 fois les event sur les textbox. A chaque saisie tu fais 2 fois les calculs

    Fais 2 méthodes qui traite l'évènement par type de calculs. (calcul Ai et calcul P) (PL_TG_MD_TextChanged, PL_TS_MD_TextChanged)
    Fait 2 méthodes qui affecte les évènement (calcul Ai ou calcul P) des textbox à ces méthodes (cité au dessus) (AddEventTextBoxCalculAi, AddEventTextBoxCalculP)
    Réparti l'affectation des évènements sur ces 2 méthodes (AddEventTextBoxCalculAi(PL_TG_MD), AddEventTextBoxCalculP(PL_TS_MD), AddEventTextBoxCalculAi(autre-GB_pour_calcul_Ai), ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
        Public Sub TSP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            AddEventTextBoxCalculAi(PL_TG_MD)
            AddEventTextBoxCalculP(PL_TS_MD)
            'AddEventTextBoxCalculAi(GB3_pour_calcul_ai)
            'AddEventTextBoxCalculAi(GB4_pour_calcul_ai)
            '...
        End Sub
     
        Sub AddEventTextBoxCalculAi(ByVal conteneur As Control)      ' rattache les évènements changed des textbox pour le calcul des Label  Ai et At
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                AddHandler txt.TextChanged, AddressOf PL_TG_MD_TextChanged
            Next
        End Sub
        Sub AddEventTextBoxCalculP(ByVal conteneur As Control)      ' rattache les évènements changed des textbox pour le calcul du Label  P
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                AddHandler txt.TextChanged, AddressOf PL_TS_MD_TextChanged
            Next
        End Sub
        Private Sub PL_TG_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)       ' calcul des Label  Ai et At
            If IsAllTextBoxNumeric(PL_TG_MD) Then
                Loads_Result.LBL_metAi.Text = "ai " & Format((Math.PI * (Double.Parse(TB_metD0.Text) - 2 * Double.Parse(TB_metThick.Text)) ^ 2) / 4, ("0.00"))
                Loads_Result.LBL_metAt.Text = "at " & Format(Math.PI * Double.Parse(TB_metThick.Text) * (Double.Parse(TB_metD0.Text) - Double.Parse(TB_custThick.Text)), ("0.00"))
            End If
        End Sub
        Private Sub PL_TS_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)       ' calcul du Label  P
            If IsAllTextBoxNumeric(PL_TS_MD) Then fenLoads_Result.LBL_metFp.Text = "P " & Format(TB_metP.Text * Loads_Result.LBL_metAi.Text, ("0.00"))
        End Sub
     
        Private Sub BT_LoadResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_LoadResult.Click
            Loads_Result.Show()
            ' Lors de l'affichage de la fenetre secondaire -> appel des méthode pour calculer Ai, At, Fp
            PL_TG_MD_TextChanged(Nothing, New System.EventArgs) ' force le calcul Ai, At
            PL_TS_MD_TextChanged(Nothing, New System.EventArgs) ' force le calcul P
        End Sub
     
        ''' <summary>Teste si tous les texbox d'un conteneur sont des entiers</summary>
        ''' <param name="conteneur">conteneur de type panel, groupbox, ...</param>
        ''' <returns>Vrai si tous numérique, sinon faux</returns>
        Function IsAllTextBoxNumeric(conteneur As Control)
            Dim i As Integer
            For Each txt As TextBox In conteneur.Controls.OfType(Of TextBox)()
                If Not Integer.TryParse(txt.Text, i) Then Return False
            Next
            Return True
        End Function
    Je n'ai pas regardé pour la 2ème partie pour la fenêtre secondaire.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #24
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Merci encore mille et une fois rv26t ! tu mériterais que je t'offre une p'tite bière si à l'occasion tu passe sur Nantes

    Je met mon code total si quelqu'un tombe dans la même m***e que moi un jour à savoir pour rappel : le calcul direct de 3 variables dans une fenêtre secondaire dépendantes pour deux d'entre elles de 2 variables du Main et l'autre de deux autres variables du Main (dont une commune) ^^

    Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Public Sub TSP_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            AddEventTextBoxCalculAi(PL_TG_MD)
            AddEventTextBoxCalculFp(PL_TS_MD)
              end sub
     
        Sub AddEventTextBoxCalculAi(ByVal conteneur As Control)      ' rattache les évènements changed des textbox pour le calcul des Label  Ai et At
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                AddHandler txt.TextChanged, AddressOf PL_TG_MD_TextChanged
            Next
        End Sub
     
        Sub AddEventTextBoxCalculFp(ByVal conteneur As Control)      ' rattache les évènements changed des textbox pour le calcul du Label  Fp
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                AddHandler txt.TextChanged, AddressOf PL_TS_MD_TextChanged
            Next
        End Sub
     
        Private Sub PL_TG_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
            If IsAllTextBoxNumeric(PL_TG_MD) Then
                Loads_Result.LBL_metAi.Text = Format((Math.PI * (Double.Parse(TB_metD0.Text) - 2 * Double.Parse(TB_metThick.Text)) ^ 2) / 4, ("0.00"))
                Loads_Result.LBL_metAt.Text = Format(Math.PI * Double.Parse(TB_metThick.Text) * (Double.Parse(TB_metD0.Text) - Double.Parse(TB_custThick.Text)), ("0.00"))
            End If
        End Sub
     
        Private Sub PL_TS_MD_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
            If IsAllTextBoxNumeric(PL_TS_MD) Then
                Loads_Result.LBL_metFp.Text = Format(Double.Parse(TB_metP.Text) * Double.Parse(Loads_Result.LBL_metAi.Text), ("0.00"))
            End If
     
        End Sub
     
    Private Sub BT_LoadResult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_LoadResult.Click
            Loads_Result.Show()  ' fenetre secondaire
     
    PL_TG_MD_TextChanged(Nothing, New System.EventArgs) ' force le calcul Ai, At
    PL_TS_MD_TextChanged(Nothing, New System.EventArgs) ' force le calcul Fp
     
    end sub
     
     
    ' Et la fameuse fonction 
    Function IsAllTextBoxNumeric(ByVal conteneur As Control)
            Dim i As Integer
            For Each txt As TextBoxBase In conteneur.Controls.OfType(Of TextBoxBase)()
                If Not Double.TryParse(txt.Text, i) Then Return False
            Next
            Return True
    End Function
    Secondaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub LBL_metAi_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles LBL_metAi.TextChanged
            LBL_metAt.Text = Format(Math.PI * ConvNum(TSP.TB_metThick.Text) * (ConvNum(TSP.TB_metD0.Text) - ConvNum(TSP.TB_custThick.Text)), ("0.00"))
            LBL_metFp.Text = Format(ConvNum(TSP.TB_metP.Text) * ConvNum(LBL_metAi.Text), ("0.00"))
    End Sub

    Je déclare ce topic résolu ! Thanks and Tchuss !
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. récup et sauvegarde d'un axe dans une 2éme fenétre
    Par kwich-bow dans le forum Interfaces Graphiques
    Réponses: 14
    Dernier message: 04/06/2009, 17h06
  2. [XL-2003] Calculer le temps passé dans une boucle for
    Par mancired dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2009, 15h06
  3. Affichage de l'heure en temps réel dans une interface
    Par T-MAT dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 26/12/2008, 19h08
  4. insertion en temps réel dans une combolist
    Par new_wave dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 05/09/2006, 17h55
  5. Réponses: 4
    Dernier message: 16/06/2006, 03h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo