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

delphi - TButtonItem的OnClick返回TCategoryButtons的发送者-LMLPHP

在第二个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的发送者没有告诉我。现在我想知道我是否只是错过了某些东西,或者这确实是不可能的。

最佳答案

问题是类型为TCategoryButtons的发件人没有告诉我


是的,它确实。在事件处理程序中使用SelectedItemTCategoryButtons属性。

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

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

10-11 12:54