gpt4 book ai didi

delphi - TMainMenu 动态构建菜单项

转载 作者:行者123 更新时间:2023-12-03 18:18:17 28 4
gpt4 key购买 nike

在我的系统上,主菜单是完全动态的,是根据数据库中的数据构建的。

我有一个特定的情况,一些菜单项需要在显示之前组装。

假设我的菜单包含以下主要项目:

文件 - 客户 - 报告 - 关于

当我点击 Reports 菜单项时,必须先组合这些项目才能显示。

我分析了 TMainMenu、TMenu 和 TMenuItem 类中的代码。不幸的是,我还没有找到解决问题的简单方法。

是否存在一种在显示之前创建这些项目的方法?

最佳答案

您可以使用一个技巧。您需要在 Reports 下添加一个虚拟的 TMenuItem 并将其 Visible 属性设置为 False。然后将 OnClick 事件添加到 Reports 项并在那里执行填充逻辑。在添加新项目之前,您必须删除现有项目,但您应该保持虚拟项目完好无损。

类似于:

procedure TForm1.ReportItemClick(Sender: TObject);
var
Item: TMenuItem;
I: Integer;
begin
// Delete all items but first - dummy - one
for I := ReportItem.Count - 1 downto 1 do
ReportItem.Items[I].Free;

Item := TMenuItem.Create(ReportItem);
Item.Caption := 'abc';
// Item.OnClick := ...
// or
// Item.Action := ...
ReportItem.Add(Item);

Item := TMenuItem.Create(ReportItem);
Item.Caption := '123';
// Item.OnClick := ...
// or
// Item.Action := ...
ReportItem.Add(Item);
end;

关于delphi - TMainMenu 动态构建菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35060054/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com