如果我使用 OnRectangleToolClick 回调,我可以获取已单击/选择的矩形的属性吗? 即我可以获得矩形上的文本和颜色、透明度等内容吗?
我希望能够显示一个编辑器(在我的代码中实现,而不是标准的 tchart 编辑器),用户可以在其中编辑矩形的属性。
按照类似的思路,我希望能够识别在发生 onDrawLinetoolDragging 事件时选择或拖动的行。
TRectangleTool
中的OnClick
事件为您提供了Sender
参数中的工具。所以你可以做这样的事情:
procedure TForm1.ChartTool1Click(Sender: TAnnotationTool; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Sender is TRectangleTool) then
with (Sender as TRectangleTool) do
begin
AllowDrag:=True;
end;
end;
请注意,TRectangleTool
继承自TAnnotationTool
。
关于TDrawLineTool
,OnDragLine
事件中的Sender
参数是TDrawLineTool
,而不是TDrawLine
数组中的TDrawLine
,所以你必须用Clicked
函数获取光标下方的TDrawLine
。即:
procedure TForm1.ChartTool2DragLine(Sender: TObject);
var CursorPos: TPoint;
ClickedLine: TDrawLine;
begin
if (Sender is TDrawLineTool) then
with (Sender as TDrawLineTool) do
begin
CursorPos:=Chart1.GetCursorPos;
ClickedLine:=Clicked(CursorPos.X, CursorPos.Y);
end;
if Assigned(ClickedLine) then
ClickedLine.Pen.Color:=clRed;
end;