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

Composants VCL Delphi Discussion :

passage par variable et composant


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut passage par variable et composant
    Bonjour,

    Je fait un traitement repetitif sur des composant que je modifie (en locurence des TLineSeries dans lequels j'ellimine des valeurs). Je voudrais minimiser le code suivant (qui fonctionne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      roulementSeries(Series1);
      roulementSeries(Series2);
      roulementSeries(Series3);
      roulementSeries(Series4);
    //[...]
      roulementSeries(Series18);
      roulementSeries(Series19);
      roulementSeries(Series20);
    //ou roulementSeries est définit comme suit:
    Procedure rouelementSeries(var series:TLineSeries);
    Avec la FAQ et le forum "j'invente" ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      //parmis tous les composants...
      for j := 0 to ComponentCount - 1 do
        //...si le composant j est une TLinesSeries...
        if Components[j] is TLineSeries then
          //...on appel la procedure roulementSeries
          roulementSeries(TLineSeries(Components[j]));
    Mais la c'est le drame:
    [Pascal Erreur]Unit1.pas(354):E21197 Un objet ne peut être passé comme paramètre Var
    Comment faire pour passer un truc comme ca à une procédure et qu'il soit au final modifier?
    merci

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Faut que tu passes par une variable tampon.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     //parmis tous les composants... 
      for j := 0 to ComponentCount - 1 do 
        //...si le composant j est une TLinesSeries... 
        if Components[j] is TLineSeries then 
          begin
            //...on appel la procedure roulementSeries 
            tampon := TLineSeries(Components[j]);
            roulementSeries(tampon);
            Components[j] := tampon;
          end;
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Exactement comme pour les gestionnaires d'évènements: Tu ne mets pas 'var'.

    Je pense que ça doit être suffisant.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    tu peux mettre en paramètre de ta procedure un TComponent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Procedure roulementSeries(Sender : TComponent);
    begin
      if sender is TLinesSeries then
        TLineSeries(Sender). ......
    end;
    Normalement, après tu n'auras aucun problème pour appeler ta procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     //parmis tous les composants...
      for j := 0 to ComponentCount - 1 do
        //...si le composant j est une TLinesSeries...
        if Components[j] is TLineSeries then
          //...on appel la procedure roulementSeries
          roulementSeries(Components[j]);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut
    MD Software >
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TLineSeries(Components[j]) := tampon;
    ne fonctionne pas car la partie de gauche n'est pas affectable dixite Delphi...

    Caine>
    Nikel! J'avais pas essayé: pour moi il fallait necessairement un passage par variable.

    Merci!

  6. #6
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par cfalcot
    MD Software >
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TLineSeries(Components[j]) := tampon;
    ne fonctionne pas car la partie de gauche n'est pas affectable dixite
    C'est pas ce que j'ai écrit
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Points : 89
    Points
    89
    Par défaut
    Ben en fait avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Components[j]:=serieTampon;
    il me dis:
    Affectation impossible à une propriété en lecture seule
    et du coup j'ai modifier... en pas bon non plus

  8. #8
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Je savais pas qu'il protégait ses composants ainsi.
    Bon à savoir !
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage par variable entre 2 form
    Par Marie_7 dans le forum VB.NET
    Réponses: 5
    Dernier message: 15/04/2014, 23h39
  2. authentification et passage par variable
    Par Marie_7 dans le forum C#
    Réponses: 7
    Dernier message: 15/04/2014, 15h49
  3. passage par variable par référence.
    Par label55 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/04/2008, 14h02
  4. passage de variable par un formulaire (checkbox)
    Par artotal dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2005, 19h16
  5. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03

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