mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-12 14:39:54 +01:00
TAChart: Fixed Legend selection bug, DrawLegend bugfix (by Anton Vychegzhanin) (bug #11398)
git-svn-id: trunk@15289 -
This commit is contained in:
parent
c9f812da32
commit
59c009eaf5
@ -44,6 +44,7 @@ Installation
|
|||||||
Changes
|
Changes
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
* 01/06/2008 - Fixed Legend selection bug, DrawLegend bugfix (by Anton Vychegzhanin)
|
||||||
* 25/01/2008 - Code cleanups and bugfixes (bugfixes by Uwe Zimmermann and Oled)
|
* 25/01/2008 - Code cleanups and bugfixes (bugfixes by Uwe Zimmermann and Oled)
|
||||||
* 22/01/2008 - Implemented ZoomFull, PaintOnCanvas and slight modifications to add TSerie pen style (by oleg)
|
* 22/01/2008 - Implemented ZoomFull, PaintOnCanvas and slight modifications to add TSerie pen style (by oleg)
|
||||||
* 27/09/2007 - Bugfixes and partially implemented multibar in TBarSeries
|
* 27/09/2007 - Bugfixes and partially implemented multibar in TBarSeries
|
||||||
|
|||||||
@ -1387,7 +1387,7 @@ end;
|
|||||||
|
|
||||||
procedure TChart.DrawLegend(ACanvas : TCanvas; ARect : TRect);
|
procedure TChart.DrawLegend(ACanvas : TCanvas; ARect : TRect);
|
||||||
var
|
var
|
||||||
w,h,x1,y1,x2,y2,i,TH:Integer;
|
w,h,x1,y1,x2,y2,i,j,TH:Integer;
|
||||||
MySerie:TChartSeries;
|
MySerie:TChartSeries;
|
||||||
begin
|
begin
|
||||||
TmpBrush.Assign(ACanvas.Brush);
|
TmpBrush.Assign(ACanvas.Brush);
|
||||||
@ -1426,24 +1426,26 @@ begin
|
|||||||
ACanvas.Rectangle(x1+5,y1+i*(TH+5)+TH div 2, x1+22,y1+10+i*(TH+5)+TH div 2);
|
ACanvas.Rectangle(x1+5,y1+i*(TH+5)+TH div 2, x1+22,y1+10+i*(TH+5)+TH div 2);
|
||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
|
j := 0;
|
||||||
for i:=0 to SeriesCount-1 do begin
|
for i:=0 to SeriesCount-1 do begin
|
||||||
MySerie:=Series[i];
|
MySerie:=Series[i];
|
||||||
if MySerie.ShowInLegend then begin
|
if MySerie.Active and MySerie.ShowInLegend then begin
|
||||||
ACanvas.Brush.Assign(FGraphBrush);
|
ACanvas.Brush.Assign(FGraphBrush);
|
||||||
ACanvas.TextOut(x1+25,y1+5+i*(TH+5),MySerie.Title);
|
ACanvas.TextOut(x1+25,y1+5+j*(TH+5),MySerie.Title);
|
||||||
ACanvas.Pen.Color := MySerie.SeriesColor;
|
ACanvas.Pen.Color := MySerie.SeriesColor;
|
||||||
if MySerie is TBarSeries then begin
|
if MySerie is TBarSeries then begin
|
||||||
ACanvas.Pen.Color := clBlack;
|
ACanvas.Pen.Color := clBlack;
|
||||||
ACanvas.Brush.Assign( (MySerie as TBarSeries).BarBrush);
|
ACanvas.Brush.Assign( (MySerie as TBarSeries).BarBrush);
|
||||||
ACanvas.Rectangle(x1+5,y1+i*(TH+5)+TH div 2, x1+22,y1+10+i*(TH+5)+TH div 2);
|
ACanvas.Rectangle(x1+5,y1+j*(TH+5)+TH div 2, x1+22,y1+10+j*(TH+5)+TH div 2);
|
||||||
end else if MySerie is TAreaSeries then begin
|
end else if MySerie is TAreaSeries then begin
|
||||||
ACanvas.Pen.Color := clBlack;
|
ACanvas.Pen.Color := clBlack;
|
||||||
ACanvas.Brush.Color := MySerie.SeriesColor;;
|
ACanvas.Brush.Color := MySerie.SeriesColor;;
|
||||||
ACanvas.Rectangle(x1+5,y1+i*(TH+5)+TH div 2, x1+22,y1+10+i*(TH+5)+TH div 2);
|
ACanvas.Rectangle(x1+5,y1+j*(TH+5)+TH div 2, x1+22,y1+10+j*(TH+5)+TH div 2);
|
||||||
end else if (MySerie is TLine) or (MySerie is TSerie) then begin
|
end else if (MySerie is TLine) or (MySerie is TSerie) then begin
|
||||||
ACanvas.MoveTo(x1+5,y1+5+i*(TH+5)+TH div 2);
|
ACanvas.MoveTo(x1+5,y1+5+j*(TH+5)+TH div 2);
|
||||||
ACanvas.LineTo(x1+22,y1+5+i*(TH+5)+TH div 2);
|
ACanvas.LineTo(x1+22,y1+5+j*(TH+5)+TH div 2);
|
||||||
end else if MySerie is TPieSeries then begin end; //down't draw
|
end else if MySerie is TPieSeries then begin end; //don't draw
|
||||||
|
j += 1;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1534,7 +1536,7 @@ var
|
|||||||
i,j,k:Integer;
|
i,j,k:Integer;
|
||||||
MySerie:TSerie;
|
MySerie:TSerie;
|
||||||
begin
|
begin
|
||||||
if (not FLegend.Visible) or (SeriesInLegendCount = 0) then begin Result:=0; Exit; end;
|
if (not FLegend.Visible) or (SeriesInLegendCount = 0) then begin Result:=0; Exit; end;
|
||||||
|
|
||||||
if only_pie then begin//if only one pie show diferent legend
|
if only_pie then begin//if only one pie show diferent legend
|
||||||
MySerie := get_pie;
|
MySerie := get_pie;
|
||||||
@ -1549,7 +1551,7 @@ if (not FLegend.Visible) or (SeriesInLegendCount = 0) then begin Result:=0; Exit
|
|||||||
j:=0;
|
j:=0;
|
||||||
for i:=0 to SeriesCount-1 do begin
|
for i:=0 to SeriesCount-1 do begin
|
||||||
MySerie:=Series[i];
|
MySerie:=Series[i];
|
||||||
if MySerie.ShowInLegend then begin
|
if MySerie.Active and MySerie.ShowInLegend then begin
|
||||||
k:=ACanvas.TextWidth(MySerie.Title);
|
k:=ACanvas.TextWidth(MySerie.Title);
|
||||||
if k>j then j:=k;
|
if k>j then j:=k;
|
||||||
end;
|
end;
|
||||||
@ -2257,20 +2259,26 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
////////////////////////UTILS.... clean a bit
|
//UTIL: should clean a bit eventually
|
||||||
//checks if only a pie chart is enabled
|
//checks if only a pie chart is enabled
|
||||||
function TChart.only_pie: boolean;
|
function TChart.only_pie: boolean;
|
||||||
var i: integer;
|
var i, cpie, cother: integer;
|
||||||
begin
|
begin
|
||||||
if FSeries.count > 0 then result := true
|
cpie := 0; cother := 0;
|
||||||
else result := false;
|
|
||||||
for i := 0 to FSeries.count -1 do begin
|
for i := 0 to FSeries.count -1 do begin
|
||||||
|
if ( (TChartSeries(Series.Items[i]) is TPieSeries)) and
|
||||||
|
TChartSeries(FSeries.Items[i]).Active then begin
|
||||||
|
Inc( cpie );
|
||||||
|
end;
|
||||||
if ( not (TChartSeries(Series.Items[i]) is TPieSeries)) and
|
if ( not (TChartSeries(Series.Items[i]) is TPieSeries)) and
|
||||||
TChartSeries(FSeries.Items[i]).Active then begin
|
TChartSeries(FSeries.Items[i]).Active then begin
|
||||||
result := false;
|
Inc( cother );
|
||||||
break;
|
|
||||||
end;
|
end;
|
||||||
|
//more than one so not only a pie, can exit loop
|
||||||
|
if (cpie > 1) or (cother >= 1) then break;
|
||||||
end;
|
end;
|
||||||
|
if (cpie = 1) and (cother = 0) then Result := True
|
||||||
|
else Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//get enabled pie chart
|
//get enabled pie chart
|
||||||
@ -2292,7 +2300,8 @@ var i: integer;
|
|||||||
begin
|
begin
|
||||||
Result := 0;
|
Result := 0;
|
||||||
for i:=0 to SeriesCount-1 do
|
for i:=0 to SeriesCount-1 do
|
||||||
if TChartSeries(Series[i]).ShowInLegend then
|
if TChartSeries(Series[i]).Active and
|
||||||
|
TChartSeries(Series[i]).ShowInLegend then
|
||||||
Inc(Result);
|
Inc(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user