Delphi组件上的鼠标按下功能

时间:2013-05-11 16:45:52

标签: delphi

我需要通过点击它来更改组件选项,但我需要为我动态创建的许多对象实现此功能。

我需要做这样的事情:

Object_I_clicked_on.brush.color:= clred; ...

这不好,因为会有很多组件,所有组件都具有相同的功能

坏:shape1.brush.color:= clred;

有没有办法做到这一点?发件人(变量)等等。

1 个答案:

答案 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;