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 :

Créer deux blocs empilés dans un TChart


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut Créer deux blocs empilés dans un TChart
    J'ai besoin de créer un graphe avec deux blocs (un pour l'Actif et un pour le Passif)
    Chacun de ces deux blocs doit ensuite être composé de plusieurs couhes de valeurs.

    En partant d'un autre post de ce forum j'ai utilisé la propriété MultiBar

    Soit donc le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(0, 100);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
     
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(0, 200);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
    Cela marche parfaitement mais je voudrais maintenant créer un second bloc à côté et je ne vois pas comment faire.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 877
    Points
    24 877
    Par défaut
    Est-ce deux blocs disjoints ?
    Si oui, Deux TChart séparés côte à côte

    Si les actifs et passifs s'alternent genre Barre Bleu, Barre Rouge, Barre Bleu, Barre Rouge, ... en fonction d'un Axe de temps par exemple
    En jouant sur les valeurs d'Axe de temps, tu dois pouvoir utiliser autant de séries que nécessaire
    Tu ne touches pas X, essaye de jouer avec !

    Tu as utilisé des TBarSeries, cela fait des barres verticales qui s'empile les unes sur les autres, cela permet par exemple de visualiser de la répartition de données en fonction d'un regroupement et X va te fournir ce regroupement

    Soit X égale à 0 et 1 et l'axe X n'est qu'une valeur arbitraire pour séparer Actif et Passif
    Soit X varie pour fournir un axe de temps, de localisation, ... et autres habituelles axes de statistiques
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Est-ce deux blocs disjoints ?
    Si oui, Deux TChart séparés côte à côte
    Si les actifs et passifs s'alternent genre Barre Bleu, Barre Rouge, Barre Bleu, Barre Rouge, ... en fonction d'un Axe de temps par exemple
    En jouant sur les valeurs d'Axe de temps, tu dois pouvoir utiliser autant de séries que nécessaire
    Il n'y a qu'un exercice à la fois. Donc deux barres en tout


    Tu ne touches pas X, essaye de jouer avec !
    Oui mais comment.
    Si je crée 3 séries avec X = 0 elles s'empilent bien
    Si j'ajoute 1 série avec X=1 elle se met au dessus en décalé et c'est là mon problème
    Comment faut-il écrire ce code pour qu'une nouvelle barre soit créée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(1, 200);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 877
    Points
    24 877
    Par défaut
    Citation Envoyé par Delphi-ne Voir le message
    Il n'y a qu'un exercice à la fois. Donc deux barres en tout
    Donc au pire deux TChart en veillant au dimensions des Axes et le soucis est réglé

    L'aspect sera différent mais le THorizBarSeries permet de faire plusieurs lignes avec des séries empilées ET parallèle !

    Sinon, je ferais ainsi avec le TBarSeries
    ATTENTION veille à gérer l'AXE pour définir un AXE qui va 0 à 1
    Car si tu as un axe qui se numérote selon l'humeur, cela va décaler mais pas faire une "autre colonne"
    Tu dois avoir aussi la largueur de la barre, elle doit être inférieure à 1
    Ou alors tu utilises 0 et 10, l'écart devrait être assez grand pour ne pas avoir de superposition
    Idem veille à ce que l'axe soit de 0 à 10 inclus

    Avec 0 et 10
    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
     
    // Actif 
     
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(0, 100);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
     
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(0, 200);
     
    // Passif
     
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(10, 66);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
     
    LO_Series := TBarSeries.Create;
    LO_Series.Clear;
    LO_Series.AddXY(10, 233);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
    LO_Series.MultiBar := mbStacked;
    Lo_Chart.AddSeries(LO_Series);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Merci

    J'ai toujours le même problème
    J'ai fait un copier/coller du code.

    J'ai une barre jaune en bas à gauche. Parfait
    A droite j'ai une barre avec une couche bleue et une blanche. Parfait aussi.

    Le problème est que le bleu ne commence pas à 0 mais au niveau de la partie supérieure de la barre jaune.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 877
    Points
    24 877
    Par défaut
    En même temps, j'espère que tu n'as pas copié collé sans corriger, je viens de voir que j'ai moi fait des erreurs de copié collé !
    27 et 28 devrait être 13 et 14

    L'empilement continue !
    Dommage !

    Utilise deux TChart, cela sera plus simple ou alors utilise THorizBarSeries qui supporte mieux ce que tu veux faire
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Et en utilisant avec la propriété StackGroup des la BarSeries?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    J'ai fini par comprendre.

    Dans le cas d'exemple (Actif Passif) il n'y a pas 2 séries (une pour l'actif et une pour le passif) mais autant de séries qu de couches dans l'actif et le passif.

    Le graphe est recalculé à chaque chargement. De ce fait il faut charger les séries dans l'ordre :
    actif première couche
    passif première couche
    actif première couche
    actif seconde couche
    etc

    Si une valeur est à 0 il faut la charger quand même pour éviter un décalage dans les tailles.

    Merci à tous.

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

Discussions similaires

  1. Créer deux barres de menu dans une application
    Par f6dqm1 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 05/03/2015, 14h12
  2. Réponses: 1
    Dernier message: 04/08/2011, 10h11
  3. Créer deux panels superposés dans une FrameView
    Par birdy904 dans le forum Débuter
    Réponses: 4
    Dernier message: 21/03/2009, 21h27
  4. Réponses: 2
    Dernier message: 21/05/2007, 17h09
  5. Réponses: 2
    Dernier message: 15/03/2006, 18h32

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