mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-13 05:29:26 +02:00
TAChart: Include Item.Y in reordered list of TCalculatedChartSource. Update test.
git-svn-id: trunk@37588 -
This commit is contained in:
parent
fe7b460ed5
commit
dcf6e40f02
@ -1082,14 +1082,24 @@ begin
|
||||
end;
|
||||
|
||||
procedure TCalculatedChartSource.ExtractItem(AIndex: Integer);
|
||||
|
||||
function YByOrder(AOrderIndex: Integer): Double;
|
||||
begin
|
||||
if AOrderIndex = 0 then
|
||||
Result := FItem.Y
|
||||
else
|
||||
Result := FItem.YList[AOrderIndex - 1];
|
||||
end;
|
||||
|
||||
var
|
||||
t: TDoubleDynArray;
|
||||
i: Integer;
|
||||
begin
|
||||
FItem := Origin[AIndex]^;
|
||||
SetLength(t, Length(FYOrder));
|
||||
for i := 0 to High(FYOrder) do
|
||||
t[i] := FItem.YList[FYOrder[i]];
|
||||
SetLength(t, High(FYOrder));
|
||||
for i := 1 to High(FYOrder) do
|
||||
t[i - 1] := YByOrder(FYOrder[i]);
|
||||
FItem.Y := YByOrder(FYOrder[0]);
|
||||
FItem.YList := t;
|
||||
end;
|
||||
|
||||
@ -1211,8 +1221,7 @@ begin
|
||||
|
||||
FOriginYCount := FOrigin.YCount;
|
||||
if ReorderYList = '' then begin
|
||||
FYCount := FOrigin.YCount;
|
||||
SetLength(FYOrder, Max(FYCount - 1, 0));
|
||||
SetLength(FYOrder, FOriginYCount);
|
||||
for i := 0 to High(FYOrder) do
|
||||
FYOrder[i] := i;
|
||||
end
|
||||
@ -1222,15 +1231,14 @@ begin
|
||||
order.CommaText := ReorderYList;
|
||||
SetLength(FYOrder, order.Count);
|
||||
for i := 0 to High(FYOrder) do
|
||||
FYOrder[i] :=
|
||||
EnsureRange(StrToIntDef(order[i], 0), 0, FOrigin.YCount - 2);
|
||||
FYCount := Length(FYOrder) + 1;
|
||||
FYOrder[i] := EnsureRange(StrToIntDef(order[i], 0), 0, FOriginYCount - 1);
|
||||
finally
|
||||
order.Free;
|
||||
end;
|
||||
end;
|
||||
FYCount := Length(FYOrder);
|
||||
|
||||
SetLength(FItem.YList, Length(FYOrder));
|
||||
SetLength(FItem.YList, Max(High(FYOrder), 0));
|
||||
Changed(nil);
|
||||
end;
|
||||
|
||||
|
@ -200,23 +200,27 @@ end;
|
||||
|
||||
procedure TCalculatedSourceTest.Reorder;
|
||||
var
|
||||
i, j: Integer;
|
||||
i: Integer;
|
||||
begin
|
||||
AssertEquals(3, FSource.YCount);
|
||||
FSource.ReorderYList := '2';
|
||||
AssertEquals(1, FSource.YCount);
|
||||
AssertEquals(104, FSource[0]^.Y);
|
||||
AssertEquals(204, FSource[1]^.Y);
|
||||
FSource.ReorderYList := '0,2';
|
||||
AssertEquals(2, FSource.YCount);
|
||||
AssertEquals(102, FSource[0]^.Y);
|
||||
AssertEquals(104, FSource[0]^.YList[0]);
|
||||
AssertEquals(202, FSource[1]^.Y);
|
||||
AssertEquals(204, FSource[1]^.YList[0]);
|
||||
FSource.ReorderYList := '0,0,0';
|
||||
AssertEquals(4, FSource.YCount);
|
||||
AssertEquals(103, FSource[0]^.YList[0]);
|
||||
AssertEquals(103, FSource[0]^.YList[1]);
|
||||
AssertEquals(103, FSource[0]^.YList[2]);
|
||||
FSource.ReorderYList := '1,1,1';
|
||||
AssertEquals(3, FSource.YCount);
|
||||
AssertEquals(103, FSource[0]^.Y);
|
||||
AssertEquals([103, 103], FSource[0]^.YList);
|
||||
FSource.ReorderYList := '';
|
||||
for i := 0 to FSource.Count - 1 do begin
|
||||
AssertEquals(FOrigin[i]^.Y, FSource[i]^.Y);
|
||||
for j := 0 to FSource.YCount - 2 do
|
||||
AssertEquals(FOrigin[i]^.YList[j], FSource[i]^.YList[j]);
|
||||
AssertEquals(FOrigin[i]^.YList, FSource[i]^.YList);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user