delphi - 在 Delphi 中将事件监听器分配给动态创建的 TPanel

标签 delphi

我创建了一个像这样的TPanel组件:

procedure TVistaVehiculo.CrearMenu(Name: string);
var
  Panel : TPanel;
begin
  Panel := TPanel.Create(VistaVehiculo);
  Panel.Parent := VistaVehiculo.Sidebar;
  Panel.Width := VistaVehiculo.Sidebar.Width;
  Panel.Height := 40;
  Panel.Caption := Name;
  Panel.BevelInner := TBevelCut.bvNone;
  Panel.BevelOuter := TBevelCut.bvNone;
  Panel.BevelKind := TBevelKind.bkNone;
end;

现在,我想将一个事件监听器附加到该面板并将该对象作为参数传递。

然后我创建一个像这样的过程:

procedure TVistaVehiculo.ClickOnMenu(Sender: TPanel);
begin
    Sender.Caption := 'Clicked'; //for example
end;

我该怎么做?

抱歉,如果这个问题很愚蠢 - 我对 Delphi 还很陌生

最佳答案

procedure TVistaVehiculo.CrearMenu(Name: string);
var
  Panel : TPanel;
begin
  Panel := TPanel.Create(VistaVehiculo);
  Panel.Parent := VistaVehiculo.Sidebar;
  Panel.Width := VistaVehiculo.Sidebar.Width;
  Panel.Height := 40;
  Panel.Caption := Name;
  Panel.BevelInner := TBevelCut.bvNone;
  Panel.BevelOuter := TBevelCut.bvNone;
  Panel.BevelKind := TBevelKind.bkNone;
  Panel.OnClick := ClickOnMenu; // <-- add this!
end;

procedure TVistaVehiculo.ClickOnMenu(Sender: TObject); // <-- must be TObject!
begin
  TPanel(Sender).Caption := 'Clicked';
end;

关于delphi - 在 Delphi 中将事件监听器分配给动态创建的 TPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735017/

相关文章:

delphi - 编译包含 TForm.Create(nil) 的 dwscript 时堆栈溢出

delphi - 用于确定页面中结果数量的数学

delphi - 在 ImgView32 图层上绘制粗虚线

delphi - 通用类的类助手?

delphi - Delphi 2007 中的 Crystal 报表

Delphi - 从给定路径获取最后创建的文件夹名称

delphi - 将整数值转换为枚举类型

windows - 调试多线程应用程序后出现系统错误

delphi - Delphi 中的重复 setter 逻辑

json - Delphi解码json/utf8转义文本