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

C++Builder Discussion :

Allow Panning TChart


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut Allow Panning TChart
    Bonjour a tous,
    Alors voila j'ai un petit problème avec TChart.

    J'ai plusieurs TChart sur ma form et elles ont toutes l'option AllowPanning pour me permettre de déplacer les Series.

    Pour le moment pas de soucis je peux bouger les series de chaque Chart.
    Mais ce que je souhaiterais c'est que lorsque je déplace les series d'un Chart, cette modification s'applique aux autres TChart de la form.

    Je ne sais pas si c'est possible, et l'aide de ce composant est très light :/

    Enfin voila, si quelqu'un a une petite idée sur quelle propriété utiliser pour fixer la positions des series sur un chart ça m'aiderait bien

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    l'idée serait de recopier les propriétés min et max des axes:

    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
     
        TChart *Charts[] = {Chart1,Chart2};
        #define NB_Chart 2
     
        int BottomMin = ((TChart*)Sender)->BottomAxis->Minimum;
        int BottomMax = ((TChart*)Sender)->BottomAxis->Maximum;
        int LeftMin   = ((TChart*)Sender)->LeftAxis->Minimum;
        int LeftMax   = ((TChart*)Sender)->LeftAxis->Maximum;
     
        for(int i=0;i<NB_Chart;i++)
        {
            if(Charts[i] != Sender)
            {
                Charts[i]->BottomAxis->Automatic = false;//pour prendre la main dessus
                Charts[i]->LeftAxis->Automatic = false;
     
                Charts[i]->BottomAxis->Minimum = -999999;//pour ne pas avoir d'erreur min > max
                Charts[i]->BottomAxis->Maximum = 999999;
                Charts[i]->LeftAxis->Minimum = -999999;
                Charts[i]->LeftAxis->Maximum = 999999;
     
                Charts[i]->BottomAxis->Minimum = BottomMin;//recopie
                Charts[i]->BottomAxis->Maximum = BottomMax;
                Charts[i]->LeftAxis->Minimum = LeftMin;
                Charts[i]->LeftAxis->Maximum = LeftMax;
            }
        }
    C'est une fonction qu'il faut faire dans les évènement OnScroll/OnZoom/OnUndoZoom, pour être sûr qu'à chaque changement des propriétés des axes, les TCharts se resynchronisent.

    C'est une fonction un peu faite à l'arrache, mais qui fonctionne, à toi de la faire plus propre .

  3. #3
    Membre éclairé Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Merci de ta réponse Bandit Boy, Mais j'avais trouvé ça entre temps en fait

    ma fonction donne ça au final :

    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
     
    void __fastcall TForm1::ChartScroll(TObject *Sender)
    {
      if(Sender->ClassNameIs("TChart"))
      {
        TChart *ChartTemp,*ChartTemp2;
        ChartTemp=dynamic_cast<TChart*>(Sender);
        double Minimum=ChartTemp->BottomAxis->Minimum;
        double Maximum=ChartTemp->BottomAxis->Maximum;
     
        for(int i=0; i<ComponentCount; i++)
        {      
          if(Components[i]->ClassNameIs("TChart"))
          {
            ChartTemp2=dynamic_cast<TChart*>(Components[i]);
            if(ChartTemp!=ChartTemp2)
              ChartTemp2->BottomAxis->SetMinMax( Minimum, Maximum);
          }
        }
      }
    }

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/11/2003, 18h38
  2. erreur Host not allowed to connect
    Par ziboux dans le forum Outils
    Réponses: 9
    Dernier message: 16/10/2003, 05h08
  3. Tchart et les commentaires
    Par danuz dans le forum XMLRAD
    Réponses: 3
    Dernier message: 30/09/2003, 12h53
  4. TChart : déplacer un point
    Par Nicolas dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h05
  5. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 09h37

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