正如@Mike Sutton 在评论中指出的那样,您应该使用OnTrack
事件TSelection
来触发对图像的更新。
文档说:
OnTrack 事件的事件处理程序在 TSelection 对象正在移动或调整大小的过程中从 MouseMove 方法循环调用。
编写自定义 OnTrack 事件处理程序以在 TSelection 正在移动或调整大小的过程中执行特定操作。
您在评论中声明,组件是在运行时动态创建的,而不是在设计时表面上。因此,您还需要在代码中分配您的处理程序。像这样做:
Selection1.OnTrack := SelectionTrack;
您的事件处理程序将如下所示:
procedure TfrmMainUI.SelectionTrack(Sender: TObject);
begin
Image1.Width:=Selection1.Width;
Image1.Height:=Selection1.Height;
Image1.Position.X:=Selection1.Position.X;
Image1.Position.Y:=Selection1.Position.Y;
end;
您还在评论中说您需要跟踪许多链接图像和选择的选择更改。您可以像这样修改事件处理程序:
procedure TfrmMainUI.SelectionTrack(Sender: TObject);
var
Selection: TSelection;
Image: TImage;
begin
Selection := Sender as TSelection;
Image := ImageFromSelection(Selection);//you need to implement this function
Image.Width:=Selection.Width;
Image.Height:=Selection.Height;
Image.Position.X:=Selection.Position.X;
Image.Position.Y:=Selection.Position.Y;
end;