我需要通过点击它来更改组件选项,但我需要为我动态创建的许多对象实现此功能。
我需要做这样的事情:
Object_I_clicked_on.brush.color:= clred; ...
这不好,因为会有很多组件,所有组件都具有相同的功能
坏:shape1.brush.color:= clred;
有没有办法做到这一点?发件人(变量)等等。
答案 0 :(得分:2)
创建一个新的VCL项目。添加TShape
。按Ctrl + C和Ctrl + V,以便在表单上获得许多。全部选中它们,然后在Object Inspector的Events选项卡上选择OnMouseDown
事件。输入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;