delphi - TButtonItem 的 OnClick 返回 TCategoryButtons 的 Sender

标签 delphi onclick sender

我目前正在 Delphi 10 Seattle 中尝试 TSplitView 组件。结构如下所示:

enter image description here

对于第二个 TButtonCategory,我尝试使用以下代码以编程方式创建项目:

procedure TMainF.DynamicMenuButtonClick(Sender: TObject);
begin
  if sender is TButtonItem then //false
    ShowMessage('Sender is TButtonItem'); 

  if sender is TCategoryButtons then //true
    ShowMessage('Sender is TCategoryButtons'); 
end;

procedure TMainF.FormCreate(Sender: TObject);
var
  i: integer;
begin
  for i:=0 to 10 do begin
    catMenuItems.Categories[1].Items[i] := TButtonItem.Create(catMenuItems.Categories[1].Items);
    catMenuItems.Categories[1].Items[i].Caption := 'Something';
    catMenuItems.Categories[1].Items[i].OnClick := DynamicMenuButtonClick;
  end;
end;

在“DynamicMenuButtonClick”过程中,我想获取有关单击哪个按钮的信息,问题是 TCategoryButtons 类型的发送者没有告诉我这一点。现在我想知道我是否只是错过了一些东西,或者这确实是不可能的。

最佳答案

The problem is that the sender which is of type TCategoryButtons doesn't tell me that

是的,确实如此。在事件处理程序中使用 TCategoryButtonsSelectedItem 属性。

procedure TForm1.DynamicMenuButtonClick(Sender: TObject);
var
    categoryButtons: TCategoryButtons;
begin
    categoryButtons := (Sender as TCategoryButtons);
    Memo1.Lines.Add(categoryButtons.SelectedItem.Caption);
end;

关于delphi - TButtonItem 的 OnClick 返回 TCategoryButtons 的 Sender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54251984/

相关文章:

swift - 以编程方式 UISlider 不改变宽度

Delphi ADO + 书签

multithreading - 我在哪里可以找到调试多线程 Delphi 应用程序的良好指南或教程?

ios - 问题 : Transferring View Controllers through segue depending on what button is pushed

c# - "object sender"和 "EventArgs e"参数有什么用?

javascript - 禁止点击标记

windows - 哪些错误/异常会触发 Windows 错误报告?

delphi - 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件?

javascript - 如何根据 php 中的按钮操作传递点击次数

onclick函数中的Javascript随机数