Delphi 如何将20个形状连接到单个“OnMouseDown”?

Delphi 如何将20个形状连接到单个“OnMouseDown”?,delphi,Delphi,我有一个Delphi程序,其中包含以下代码: procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin <code here> end; 问题是,我希望所有20个形状的代码都完全相同。我怎样才能有效地做到这一点?谢谢 使用多选,例如按住SHIFT键并单击,或单击并拖动选择矩形以选择所有20个形状。 在对象检

我有一个Delphi程序,其中包含以下代码:

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  <code here>
end;
问题是,我希望所有20个形状的代码都完全相同。我怎样才能有效地做到这一点?谢谢

使用多选,例如按住SHIFT键并单击,或单击并拖动选择矩形以选择所有20个形状。 在对象检查器中,将OnMouseDown事件处理程序设置为公共事件处理程序。这将为所有20个选定形状分配相同的事件处理程序。 如果您需要知道从公共事件处理程序内部单击了哪个形状,请使用Sender as TShape。
我只是尝试了一下,我选择了全部20个,然后双击OnMouseDown,但是结果是完全相同的..没错。但是现在单个事件处理程序连接到所有20个按钮。哦,我明白了!非常感谢能简化工作:顺便问一下,有没有办法通过代码设置公共事件处理程序来手动完成此过程?在代码中,您不能将事件处理程序(实际上只是一个属性)分配给一行代码中的多个对象。因此,您需要,比如说,一个形状列表,然后是一个循环,循环遍历该列表以分配事件处理程序。它是OnMouseDown事件的第一个参数。在这种情况下,它可以用来识别鼠标按下时鼠标在哪个形状上。