gpt4 book ai didi

delphi - TAction.OnUpdate 事件会降低性能吗?

转载 作者:行者123 更新时间:2023-12-03 14:41:45 29 4
gpt4 key购买 nike

在Delphi XE7中,我使用这个技巧根据ListView中的项目是否被选择来自动启用或禁用工具栏按钮(“编辑ListView项目”),以防止用户单击该按钮(如果有)没有选择 ListView 项目:

  • 将 TActionList 放在 VCL 表单上。
  • 在 ActionList 中创建一个操作 actTest
  • 在表单上放置一个 TButton。
  • 将操作 actTest 分配给按钮。
  • 在窗体上放置一个 TListView。
  • 在 ListView 中创建两个项目。
  • actTest 操作的 OnUpdate 事件中写入:

     procedure TForm1.actTestUpdate(Sender: TObject);
    begin
    actTest.Enabled := ListView1.SelCount > 0;
    CodeSite.Send('actTestUpdate'); // gets fired very often!
    end;

现在您可以看到,该按钮根据是否选择了 ListView 中的项目而启用或禁用,与您是否使用鼠标、键盘或以编程方式选择/取消选择项目无关。

但是,在 CodeSite Live Viewer 中,我可以看到 actTestUpdate 事件被连续且频繁地触发,因此语句 actTest.Enabled := ListView1 .SelCount > 0; 经常被执行。

所以我的问题是:这会降低性能吗?如果是的话,是否还有其他技巧可以达到上述目的?

最佳答案

如果您有(或计划有)许多操作,您可能需要将 Application.ActionUpdateDelay 设置为例如50 毫秒。这可以显着提高性能。

此外,如果您有很多操作,我建议您尝试使用 TForm.UpdateActions 而不是为每个操作定义 TAction.OnUpdate。这将使代码更具可读性。

关于delphi - TAction.OnUpdate 事件会降低性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792745/

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