TButtonItem 的 OnClick returns TCategoryButtons 的发送者
TButtonItem's OnClick returns Sender of TCategoryButtons
我目前正在 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 的发件人没有告诉我。现在我想知道我是否只是错过了什么,或者这是否确实是不可能的。
The problem is that the sender which is of type TCategoryButtons
doesn't tell me that
是的,确实如此。在事件处理程序中使用 TCategoryButtons
的 SelectedItem
属性。
procedure TForm1.DynamicMenuButtonClick(Sender: TObject);
var
categoryButtons: TCategoryButtons;
begin
categoryButtons := (Sender as TCategoryButtons);
Memo1.Lines.Add(categoryButtons.SelectedItem.Caption);
end;
TCategoryButtons
提供一个事件 OnButtonClicked
给你 TButtonItem
。也许这在这里很有用。
TCatButtonEvent = procedure(Sender: TObject; const Button: TButtonItem) of object;
我目前正在 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 的发件人没有告诉我。现在我想知道我是否只是错过了什么,或者这是否确实是不可能的。
The problem is that the sender which is of type
TCategoryButtons
doesn't tell me that
是的,确实如此。在事件处理程序中使用 TCategoryButtons
的 SelectedItem
属性。
procedure TForm1.DynamicMenuButtonClick(Sender: TObject);
var
categoryButtons: TCategoryButtons;
begin
categoryButtons := (Sender as TCategoryButtons);
Memo1.Lines.Add(categoryButtons.SelectedItem.Caption);
end;
TCategoryButtons
提供一个事件 OnButtonClicked
给你 TButtonItem
。也许这在这里很有用。
TCatButtonEvent = procedure(Sender: TObject; const Button: TButtonItem) of object;