LSReadWriteII V4- Stacked charts problem

Questions and answers on how to use XLSReadWriteII 3/4/5.
Post Reply
keithblo
Posts: 4
Joined: Mon Feb 28, 2005 12:31 pm

LSReadWriteII V4- Stacked charts problem

Post by keithblo »

Hi Support,

I am trying to create a stacked column chart, but the result is somewhat ugly (top stacked columns are offset):

Here is sample code to reproduce the effect:

[Code]
procedure TForm1.Button1Click(Sender: TObject);
var
lChart: TDrwChart;
lLabel: TChartLabel;
lXLS : TXLSReadWriteII4;
lSheet: TSheet;
i: Integer;
lXLSFile: TFileStream;

begin
lXLS := TXLSReadWriteII4.Create(Self);
try
lSheet := lXLS.Sheet[0];

// Add some random data to plot
lSheet.AsString[1, 0] := 'Apples';
lSheet.AsString[2, 0] := 'Pears';
for i := 0 to 9 do
begin
lSheet.AsString[0, i + 1] := 'Label' + IntToStr(i);
lSheet.AsInteger[1, i + 1] := i;
lSheet.AsInteger[2, i + 1] := i + Random(5);
end;

// Add a new chart
lChart := lSheet.AddChart;
lChart.Col1 := 4;
lChart.Col2 := 15;
lChart.Row1 := 1;
lChart.Row2 := 15;

// Set data for first series
lChart.Series[0].SerieName :=
AnsiQuotedStr(lSheet.Name, '''') + '!$B$1';
lChart.Series[0].Category :=
AnsiQuotedStr(lSheet.Name, '''') + '!$A$2:$A$11';

lChart.Series[0].Values :=
AnsiQuotedStr(lSheet.Name, '''') + '!$B$2:$B$11';

// Add second series and set data
lChart.Series.Add;
lChart.Series[1].SerieName :=
AnsiQuotedStr(lSheet.Name, '''') + '!$C$1';
lChart.Series[1].Category :=
AnsiQuotedStr(lSheet.Name, '''') + '!$A$2:$A$11';

lChart.Series[1].Values :=
AnsiQuotedStr(lSheet.Name, '''') + '!$C$2:$C$11';

// We want stacked column
lChart.PlotArea.ChartType := xctColumn;
TChartStyleBarColumn(lChart.PlotArea.ChartStyle).IsBar := False;
TChartStyleBarColumn(lChart.PlotArea.ChartStyle).Stacked := True;

lXLSFile := TFileStream.Create('D:\temp\test.xls', fmCreate);
try
lXLS.WriteToStream(lXLSFile);
finally
lXLSFile.Free;
end;

finally
lXLS.Free;
end;
end;
[/Code]


Kind Regards,
Keith Blows
Post Reply