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 :

Bars dans TChart: Comment modifier la taille de bars par programme [IDE]


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Bars dans TChart: Comment modifier la taille de bars par programme
    Bonjour à tous,
    j'ai utilisé C++Builder pour afficher des valeurs via Bars de TChart.
    Pour décaler les positions de différents bars et améliorer les aspects visuels, j'ai modifié manuellement des valeurs de Bars -> Size -> Offset .
    Voir image: Nom : _00000_173512_bis.jpg
Affichages : 230
Taille : 54,8 Ko
    Ma question est: Comment modifier la valeur Offset par programme.
    Merci par avance
    Xavier

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    une lecture de ce post devrait te permettre de faire ce que tu veux http://www.teechart.net/docs/teechar.../tutorial1.htm
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci DjmSoftware pour ce lien très utile.
    Après lire les tutoriaux, je pense que la solution de mon problème est dans la proprété suivante:

    TCustomBarSeries.OffsetPercent
    Property OffsetPercent: Integer;
    Unit: Series


    Mais je n'ai pas pu retrouver cette proprété sous C++Builder. Il y a BarSeries, pas de CustomerBarSeries!
    Peut-être deux raisons possibles:
    1. Ma compréhension insuffisante pour retrouver les variables équivalentes sous C++Builder
    2. J'ai la version standard TeeChart livré avec Sydney 10.4, je n'ai pas de TeeChart Pro

    Merci d'avance
    Xavier

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    salut
    tu devrais trouver ton bonheur dans le fichier VCLTee.Series.hpp
    je dispose uniquement de la version Communumity que n’intègre pas ce composant
    je ne pourrais malheureusement t'aider plus en avant
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci de tes lumières!
    Oui, j'ai bien retrouvé mon bonheur dans le fichier VCLTee.Series.hpp:
    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
    class PASCALIMPLEMENTATION TCustomBarSeries : public Vcltee::Teengine::TChartSeries
    {
    	typedef Vcltee::Teengine::TChartSeries inherited;
     
    private:
    	bool FAutoBarSize;
    	TBarRound FBarRound;
    	TBarStyle FBarStyle;
    	int FBarWidthPercent;
    	int FBevelSize;
    	int FConePercent;
    	bool FDark3D;
    	int FDarkPen;
    	int FDepthPercent;
    	Vcltee::Tecanvas::TTeeEmboss* FEmboss;
    	bool FGradientRelative;
    	TMarksLocation FMarksLocation;
    	bool FMarksOnBar;
    	TMultiBar FMultiBar;
    	int FOffsetPercent;
    Si j'ai bien compris, il s'agit d'un variable privé "FOffsetPercent" de la classe.
    En essayant quelques combinaisons sous Chart1->Series[0], je n'ai pas pu réussir à l'utiliser.
    Je pense que cela est lié ma compréhension insuffisante de l'usage de classe.
    Merci de tes prochaines lumières.
    Xavier

  6. #6
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    petite confusion entre membre privé et property
    le membre privé nest pas accessible car privé

    la property dans ton cas s'appelle OffsetPercent

    par ailleurs il existe une méthode public :

    int __fastcall ApplyBarOffset(int Position); qui devrait mieux convenir

    donc pour modifier toutes tes séries tu peux le faire dans une boucle
    du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int i=0; i <Chart1->Series->Count ; i++)
      {    
        Chart1->Series[i]->ApplyBarOffset(i+1);// comme exemplle
     }
    A essayer je n'ai malheureusement pas ce composant sur ma machine

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  7. #7
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci de ton soutien en continue!
    J'ai essayé sous Sydney 10.4 et il indique: ApplyBarOffset n'est pas un membre de TChartSeries.
    En fouillant le fichier VCLTee.Series.hpp, je constate qu'il y a deux classes:
    Class TCustomerBarSeries
    Class TBarSeries

    Nom : -000.jpg
Affichages : 179
Taille : 223,9 Ko

    Comme j'ai une version entreprise, l'option Pro de TChart non compris, je ne peux ajouter que BarSeries (non CustomerBarSeries) lors de création de Chart.
    Cela peut-être la raison, je vais chercher un peu, je ne comprends pas la relation entre ces deux classes.
    Ce qui m'étonne est qu'on peut tous modifier manuellement, mais pas avec programme.

    Cordialement
    Xavier

  8. #8
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    j'ai trouvés mes informations dans la version 10.4.2.Community Starter

    qu'en est il de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int __fastcall ApplyBarOffset(int Position);
    à mon avis cest elle ci qui devrait être utilisée

    un lien avec des exemples et de l'aide que devrait t'aider https://www.steema.com/docs/TeeChartVCL/

    Cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Salut,
    Oui, ce lien me donne des exemples et explications très utiles.
    Il parait que la Class TBarSeries est dérivée de la Class TCustomerBarSeries, donc il serait logiquement possible d'accéder la fonction ApplyBarOffset(int Position):
    Nom : _00000Bis.jpg
Affichages : 187
Taille : 86,7 Ko

    Je vais chercher comment l'accéder sous C++Builder.
    Bien cordialement
    Xavier

  10. #10
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    j'ai pu mettre la main sur une ancienne version de C++ Buider 2010 disposant du composant TChart (LITE)

    voici le code te permettant de changer les propriétés d'offset dans une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {
     TBarSeries * Current;
     for(int n=0;n<Chart1->SeriesCount();n++)
     {
       Current=reinterpret_cast<TBarSeries*>(Chart1->Series[n]);
       Current->ApplyBarOffset(n+5);
     }
    }
    explication

    Chart1->Series[n] retourne un pointeur de la classe TChartSeries;
    il se trouve que la méthode ApplyBarOffset et la property OffsetPercent appartienne à la classe TBarSeries

    TChartSeries est la classe abstraite ancêtre de chaque type de série de graphiques. Fournit plusieurs propriétés partagées par tous les styles de série (tiré de l'aide)

    pour pouvoir utiliser cette méthode ou la propriété il convient de procéder à une transformation de type
    ce qui est réalisé par reinterpret_cast<TBarSeries*>(Chart1->Series[n]);
    qui transforme un pointeur de type TChartSeries en type TBarSeries

    voila j'espère ainsi avoir pu t'aider

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  11. #11
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci de ton implication efficace et tes explications en détail!
    J'ai essayé tes codes sous Rad2010 et Sydney 10.4. Les compilations sont toutes OK, mais lors d’exécution, je ne vois pas la différence de position de chaque Bar : elle reste comme prédéfinie.
    En suivant tes codes, j’ai remplacé ApplyBarOffset par OffsetPercent, çà marche!
    Franchement, je ne comprends pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TBarSeries * Current;
    for(int n=0; n<8; n++)
    {
       Current=reinterpret_cast<TBarSeries*>(Chart2->Series[n]);
    //   Current->ApplyBarOffset(n*25);  Sans effet visuel
       Current->OffsetPercent = n*25;
    }
    Bien cordialement
    Xavier

  12. #12
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    Il faudrait analyser le code source pour comprendre la différence
    L’essentiel est que cela corresponde à tes attentes.
    Je te laisse marquer le post comme résolu

    Bien cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

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

Discussions similaires

  1. [Débutant] Comment modifier la taille des points dans une legende ?
    Par stodak dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/03/2012, 17h36
  2. [Joomla!] Comment modifier la taille de la police du topmenu dans Joomla
    Par Amel_B dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 17/01/2012, 15h52
  3. Comment modifier la taille de la page d'impression ?
    Par edam dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2005, 15h51
  4. Comment modifier la taille de la police dans Word ?
    Par djoao dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 11/12/2004, 12h49

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