我目前正在尝试在Delphi 10 Seattle中使用TSplitView组件。结构如下所示:
在第二个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
的发件人没有告诉我
是的,它确实。在事件处理程序中使用SelectedItem
的TCategoryButtons
属性。
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/