Bonjour à tous.

La barre empilée est une barre qui représente la somme de plusieurs éléments à la fois.
Tout élément est caractérisé par un nom et une couleur.
Dans cet exemple, on va voir comment représenter les ventes de trois articles informatiques:
Les desktops, les laptops et les imprimantes pour trois années consécutives:2010,2011 et 2012.
Pour celà en va ajouter:

1-un chart1 à une fiche.
On doubleclick sur ce Chart1 et on ajoute un Chart1BarSeries1.

2-On ajoute ensuite un ListChartSource1 et on mets YCount=3 (pour que chaque barre sera divisée
en trois parties).

3-On ajoute ensuite un ChartStyle1, et on lui ajoute trois items.

0-TChartStyle Brush/Color:Clred Text: DeskTop.
1-TChartStyle Brush/Color:Clblue Text: Laptop.
2-TChartStyle Brush/Color:Clyellow Text: Imprimante.

4-On ajoute ensuite un CalculatedChartSource1 et on mets son origin:ListChartSource1
on l'aura besoin pour manupiler son poucentage.
(si on désire sommer chaque barre avec celles qui la précèdent on fixe:
Accumulation method:camSum et Accumulation Range:3 'nombre de barres').

5-On ajoute ensuite un ChartLegendPanel1 et on mets chart:Chart1 et on redimensionne sa taille.

Si on désire faire apparaître uniquement des valeurs entières, la largeur de Chart1 doit être adéquate au nombre de barres,
en général égale à n-1 cm dans notre cas 2 cm, la hauteur est au choix.

On revient sur ChartBarSeries1 et on fixe ses propriétés:

*Active: True.
*BarWidthPercent:40 par exemple.
*Legend/Multiplicity:ImStyle.
*Source:CalculatedChartSource1.
*Style:ChartStyles1.

Si on désire que les barres soient horizontales il suffit d'ajouter:
AxisIndexX:Left et AxisIndexY:Bottom.

On ajoute ensuite un bouton qu'on appelle affichage et on l'implémente par:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  with ListChartSource1 do begin
    AddXYList(2010, [155,120,221]);   //(x,[y1,y2,y3] bien sûr, ces valeurs peuvent êtres reliées 
    AddXYList(2011, [104, 130, 260]); //à une Dataset.
    AddXYList(2012, [160, 140, 250]);
end;
end;
On ajoute ensuite un checkBox1 qu'on appelle pourcentage et on l'implémente par:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
procedure TForm1.CheckBox1Change(Sender: TObject);
begin
 if checkBox1.Checked=true then
 calculatedchartsource1.Percentage:=true
 else
 calculatedchartsource1.Percentage:=false
end;
et on exécute.

merci à tous.