我在使用Delphi 10.3-upd 1和Teechart组件。
在运行时,我需要为特定的点放置标记,并自定义其文本、颜色和大小。 我已经成功地使用以下命令改变了文本。
Chart1.[idxserie].Marks.Item[idxelement].Visible := True;
Chart1.[idxserie].Marks.Iidxelement]].Font.Color := clRed;
Chart1.[idxserie].Marks.item[idxelement].Text.Add('My text is here');
现在我需要改变连接文本和图形曲线中的点的线的颜色。 在设计的时候,这个属性位于 。
编辑图表窗口 。
Series -- myserie1 -
tab : Marks
-- tab Arrows
-- tab Border
tab -- Format
Button : Color
我如何在运行时访问并改变这个属性的值?
我已经试过了。
Chart1.[idxserie].Marks.Arrow.Color := clRed // ==> nothing changed !
这是我在设计时更改属性的地方。
在下图中,有些点的红色虚线我希望它是不同的颜色。 当我使用Chart1.[idxserie].Marks.Arrow.Color := clRed时,它改变了所有点的颜色。
感谢你的支持。
谢谢你的支持。
箭头是全局的,你可以使用Series或Chart的AfterDraw事件覆盖它。
一个例子:创建。
procedure TForm1.FormCreate(Sender: TObject);
begin
series1.FillSampleValues(5);
series1.Marks.Visible := true; // A global flag. if false, no Mark will be visible
series1.Marks[0].Visible := false;
series1.Marks[1].Visible := true;
series1.Marks[2].Visible := false;
series1.Marks[3].Visible := true;
series1.Marks[4].Visible := false;
series1.Marks[3].Font.Color := clRed;
series1.Marks[3].Font.Style := [fsBold];
series1.Marks[3].Transparent:= true;
series1.Marks.Arrow.Color := clGreen;
series1.Marks.ArrowLength := 24;
series1.Marks.Arrow.EndStyle := esFlat;
series1.Marks.Arrow.Visible := true;
end;
现在,在图表画布上画一条线。
procedure TForm1.Series1AfterDrawValues(Sender: TObject);
var
nInx, nX, nY: integer;
begin
for nInx := 0 to Series1.Count-1 do
if Series1.Marks[nInx].Font.Color = clRed then
begin
nX := Series1.CalcXPos(nInx);
nY := Series1.CalcYPos(nInx);
Chart1.Canvas.Pen.Color := clRed;
Chart1.Canvas.MoveTo(nX, nY);
Chart1.Canvas.LineTo(nX, nY - series1.Marks.ArrowLength);
end;
end;