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 :

Conseils - Faire varier des valeurs de propriété.


Sujet :

VB.NET

  1. #21
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut valeur du tag
    bonjour gualino
    Tres bizarre .......
    Tu veux dire que tag prends la bonne valeur (celle de la prop) à l'entree de la sub PlotSelectedParts.
    Si c'est le cas fais une execution pas à pas(F10) et mets 2 break-points.
    1/- le 1er sur le If TypeOf tag Is Double Then
    et examine la valeur de initialValue
    2/- si elle est correcte mets un 2eme break-point
    sur le call Call EnterMagicNumberValuesToPlot(CDbl(tag))
    et verifie que son parametre CDbl(tag) a pris la bonne valeur.
    Si c'est bon => ca veut dire que le probleme est dans la sub.
    code avec les break-points(points d'arret).
    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
     
    Private Sub PlotSelectedParts(ByVal tag As Object)
     
    		Call CreateNewSetupChangeChart()
     
    		Dim rangeSetupChange As Integer = CInt(RangeSetupChange_tbox.Text)
    		Dim initialValue As Double = CDbl(tag)
     
    		' 1er Break-Point sur If 
    		If TypeOf tag Is Double Then
     
    			Dim increment As Integer
    			increment = CInt(((rangeSetupChange * 2) / 5))
     
    			For i = -(Abs(rangeSetupChange)) To Abs(rangeSetupChange) Step increment + 1
     
    				tag = initialValue * (1 + i / 100) 'Change the value of the property
     
    				' 2eme Break-Point sur Call
    				Call EnterMagicNumberValuesToPlot(CDbl(tag))
    			Next
     
    		End If
     
    		Call AddMagicNumberPlotToTableLayoutPanel()
     
    	End Sub
    bon code........

  2. #22
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Merci encore pour ton aide MABROUKI,

    oui au premier BreakPoint initial value vaut 10, et au second tag, vaut -40.

    En revanche si je met un breakPoint sur le set de la propriété en question, le programme ne s'arrète pas dessus.
    Tag Change de valeur, mais la liaison vers la propriété Tagé ne se fait pas, et je pense que le binding est correct.

    Si le tag représente la propriété sélectionné par le checkbox, c'est comme si (sa référence/son objet) était absente....

  3. #23
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour gualino
    Je n'ai pas bien compris ton probleme.
    Normalement l'objectif etait de recuperer une valeur de la propriete (exemple :RollCenterHeight_Front ) et de la faire incrementer dans une boucle puis de l'envoyer sur ton logiciel de plotting graphique).
    Ou bien ai-je mal interprete des le debut ta methode de "grapher" les variations .
    Parce que j'ignore ce que fait cette sub EnterMagicNumberValuesToPlot(CDbl(tag)) en interne.
    Est-ce qu'elle utilise la valeur de tag ou bien elle utilise la valeur de la propriete RollCenterHeight_Front ?....
    bon code....

  4. #24
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Elle appel un procedure qui comporte un boucle de calcul qui converge sur 4 valeurs (fois 2, car droite et gauche).

    La boucle, utilise 3 classe du projet: pneus, aérodynamique et chassis

    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
    #Region "Enter Magic Number Values To Plot"
        Private Sub EnterMagicNumberValuesToPlot(ByVal xValue As Double)
     
            CalculateYMDLoop(0, speed)
     
            'Right
            SetupMaxLatAccelRightSerie.Points.AddXY(xValue, maxLatAccelRight(0))
            SetupYawMomentAtMaxAccelRightSerie.Points.AddXY(xValue, yawMomentAtMaxAccelRight(0))
            SetupControlRightSerie.Points.AddXY(xValue, controlRight(0))
            SetupStabilityRightSerie.Points.AddXY(xValue, stabilityRight(0))
     
            'Left
            SetupMaxLatAccelLeftSerie.Points.AddXY(xValue, maxLatAccelLeft(0))
            SetupYawMomentAtMaxAccelLeftSerie.Points.AddXY(xValue, yawMomentAtMaxAccelLeft(0))
            SetupControlLeftSerie.Points.AddXY(xValue, controlLeft(0))
            SetupStabilityLeftSerie.Points.AddXY(xValue, stabilityLeft(0))
     
        End Sub
     
    #End Region
    Donc en fait :
    -J'ai une config de voiture.
    -Je modifie un propriété d'une de ses classe (ChassisClass, instance MyChassis, propriété RollCenterHeight_Front pax ex peut être coché)
    -Je calcul 4 "Nombre Magiques" qui quantifient/qualifient le comportement de la voiture (4 séries. chaque "Nombre Magique" en Y et la valeur de la propriété modifié en X)

    -Re-modifie la propriété.
    -Re-calcule 4 nombre magiques
    -les ajoute au graph

    et ainsi de suite... pour avoir les 4 "Nombre magique" en fonction d'une plage de réglage d'un élément.

  5. #25
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    rebonjour gualino
    Ce que je voulais dire precisemment c'est que cette Sub EnterMagicNumberValuesToPlot doit utiliser seulement la valeur de Tag mais ne doit faire plus faire faire de reference à la propriete (exemple :RollCenterHeight_Front ) de la classe myChassis.

    Car la valeur actuelle de Tag est binde sur cette propriete.

    Donc si j'ai bien compris tu ne fais plus de reference à la propriete myChassis.RollCenterHeight_Front à l'interieur de cette sub............
    bon code.........

  6. #26
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    CalculateYMDLoop(0, speed) est une boucle qui utilise Mychassis.RollCenterHeight_Front donc si....

    Sauf qu'elle n'est pas réécrite.


    Si je change la valeur du Tag du checkbox RollCenterHeight_Front_CheckBox lui même tagé avec la propriété RollCenterHeight_Front.
    Et bien la propriété va changé de valeur non?

  7. #27
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    rebonjour
    Et bien la propriété va changé de valeur non?
    Non .Pas du tout car l'objet Tag est transmis par valeur(byVal).
    c.à.d que la modification du tag dans Private Sub PlotSelectedParts ne se repercute ni sur la valeur de la propriete checkbox.Tag du controle ni sur la propriete de myChassis.
    Pour remedier et si tu utilises en lecture seuelement la propriete de myChassi essaye en transmettant Tag par reference(ByRef)
    code modifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	Private Sub PlotSelectedParts(ByRef tag As Object)
    Ou bien encore ceci un peu plus long mais plus explicite et qui fait le meme boulot avec 2 modifs ou l'on transmet comme parametre : le checkbox lui meme
    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
     
    'Modif à l'appel
          For Each checkbox As CheckBox In Me.lstCheckBox
                If checkbox.Checked = True Then
                    Me.PlotSelectedParts(checkbox)
                End If
            Next
    ' Dans la sub appele evidemment
    Private Sub PlotSelectedParts(ByRef chk As CheckBox)
     
    		Call CreateNewSetupChangeChart()
     
    		Dim rangeSetupChange As Integer = CInt(RangeSetupChange_tbox.Text)
    		Dim initialValue As Double = CDbl(chk.Tag)
     
     
    		If TypeOf (chk.Tag) Is Double Then
     
    			Dim increment As Integer
    			increment = CInt(((rangeSetupChange * 2) / 5))
     
    			For i = -(Abs(rangeSetupChange)) To Abs(rangeSetupChange) Step increment + 1
     
    				' 
    				chk.Tag = initialValue * (1 + i / 100) 'Change the value of the property
     
    				' MODIF
    				Call EnterMagicNumberValuesToPlot(CDbl(chk.Tag))
    			Next
     
    		End If
     
    		Call AddMagicNumberPlotToTableLayoutPanel()
     
    	End Sub
    En tout cas lorsque tu disais que valeur de la propriete de myChassi ne changait pas ,ca me faisait penser à une reutilisation de sa propriete dans la boucle de plottage.
    Bon code......

  8. #28
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Oui, ce matin je crois que j'ai compris le problème.

    Dans ton code on affecte la valeur de la propriété à tag que l'on manipule par la suite.

    Moi je pensais pouvoir manipuler la valeur d'une propriété par l’intermédiaire d'un tag...

    J'ai très peu utilisé ByRef et je n'y ai donc pas pensé. Je pensé plutôt que le problème venait du sens du binding...

    Les propriétés en question ne sont pas en Read Only si c'était bien la question. Mais pourquoi cela est il important?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Private _RollCenterHeight_Front As Double
        ''' <summary>
        ''' Roll center height Front [mm].
        ''' </summary>
        Public Property RollCenterHeight_Front As Double
            Get
                Return _RollCenterHeight_Front
            End Get
            Set(ByVal value As Double)
                _RollCenterHeight_Front = value
                NotifyPropertyChanged("RollCenterHeight_Front")
            End Set
        End Property

    J'ai fais les modifs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       For Each checkbox As CheckBox In Me.lstCheckBox
                If checkbox.Checked = True Then
                    Me.PlotSelectedParts(checkbox)
                End If
            Next
    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
     Private Sub PlotSelectedParts(ByRef checkBox As CheckBox)
     
            Call CreateNewSetupChangeChart()
     
            Dim rangeSetupChange As Integer = CInt(RangeSetupChange_tbox.Text)
            Dim initialValue As Double = CDbl(checkBox.Tag)
     
            If TypeOf checkBox.Tag Is Double Then
     
                Dim increment As Integer
                increment = CInt(((rangeSetupChange * 2) / 5))
     
                For i = -(Abs(rangeSetupChange)) To Abs(rangeSetupChange) Step increment + 1
     
                    checkBox.Tag = initialValue * (1 + i / 100) 'Change the value of the property
     
                    Call EnterMagicNumberValuesToPlot(CDbl(checkBox.Tag))
                Next
     
            End If
     
            Call AddMagicNumberPlotToTableLayoutPanel()
     
        End Sub
    c'est pareil...checkBox.Tag varie mais pas la propriété sélectionné.

  9. #29
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour
    Les propriétés en question ne sont pas en Read Only si c'était bien la question
    Non je ne voulais pas dire que la propriete doit etre ReadOnly.
    Je voulais dire que dans la boucle d'incrementation de Tag et tout ce qui en depend tu ne dois pas faire des Set pour la propriete (affectation de valeur) car cela a pour effet de modifier la prop Tag dans la boucle vu le binding.
    Mais tu peux faire des Gets (lecture)...
    Mais comme le binding chez toi n'a pas l'air de fonctionner du tout.....
    Ce qui me parait tres bizarre quand meme ....

  10. #30
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Dans votre exemple je n'y arrive pas nonplus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       'checkPlot imprime  la valeur du Tag 
        Private Sub checkPlot(ByRef objTag As CheckBox)
            If TypeOf (objTag.Tag) Is Integer Then
                For i = 10 To 15
                    objTag.Tag = i
     
                    MessageBox.Show(selectedVoiture.RessortAvantDroit)
                    'Call PlotBalance(i)
                Next
     
                'ElseIf TypeOf (objTag) Is String Then
                '    Call PlotMarque(objTag)
            End If
        End Sub
    Par voiture, la valeur de varie pas.

    Est ce normal?

  11. #31
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Tampis,

    Maintenant que je sais faire une utiliation de Tag, je vais l'utiliser en tant que string pour retrouver la pièce coché et faire varier la propriété correspondante.

    Merci pour votre aide MABROUKI!

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

Discussions similaires

  1. faire varier des valeur avec Matlab
    Par Enthalpy dans le forum Simulink
    Réponses: 1
    Dernier message: 20/03/2010, 13h40
  2. Un timer pour faire varier des valeurs pour une période donnée.
    Par zimoun dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 22/10/2009, 01h42
  3. Réponses: 4
    Dernier message: 23/04/2008, 17h03
  4. faire correspondre des valeurs
    Par thierrry81 dans le forum Access
    Réponses: 2
    Dernier message: 06/12/2006, 22h38
  5. [C#] Conserver des valeurs de propriétés d'une page
    Par elod38 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/03/2005, 10h53

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