我需要通过单击来更改组件选项,但我需要为我动态创建的许多对象实现此功能。
我需要做这样的事情:
Object_I_clicked_on.brush.color:= clred; ...
这不好,因为会有很多组件并且所有组件都将具有相同的功能
坏的: shape1.brush.color:= clred;
有没有办法做到这一点?发件人(变量)等的东西。
我需要通过单击来更改组件选项,但我需要为我动态创建的许多对象实现此功能。
我需要做这样的事情:
Object_I_clicked_on.brush.color:= clred; ...
这不好,因为会有很多组件并且所有组件都将具有相同的功能
坏的: shape1.brush.color:= clred;
有没有办法做到这一点?发件人(变量)等的东西。
创建一个新的 VCL 项目。添加一个TShape
。Ctrl+C 和 Ctrl+V 这样您就可以在表单上看到其中的许多。将它们全部选中,然后OnMouseDown
在 Object Inspector 的 Events 选项卡上选择事件。键入ShapeMouseDown
并按Enter。然后写
procedure TForm1.ShapeMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Sender is TShape then
TShape(Sender).Brush.Color := clHighlight;
end;
如果你有很多动态创建的控件,想法是一样的。例如,如果您有一个FShapes: array of TShapes
包含动态创建的形状的数组,则需要为它们提供所有相同的事件处理程序:
for i := 0 to high(FShapes) do
FShapes[i].OnMouseDown := ShapeMouseDown;