在 Delphi 应用程序的图标上动态插入数字

问题描述

我使用的是 Delphi 10.4。

我正在寻找一种在任务栏上的应用程序图标上动态插入数字的方法,以便用户可以了解到目前为止应用程序完成了多少任务。这将是动态的,只要应用执行新任务,它就会增加图标的数量

类似于下图。

这可能吗?

我没有任何代码可以在这里发布,因为我不知道如何做到这一点。

enter image description here

解决方法

您可能不知道 TTaskbar taskbar-configuration component 及其 OverlayIcon 属性。

示例:

Screen recording of an app with taskbar icon overlays.

一个非常简单的实现:

procedure TForm1.btnInfoClick(Sender: TObject);
var
  io: TIcon;
begin
  io := TIcon.Create;
  try
    io.Handle := LoadIcon(0,IDI_INFORMATION);
    Taskbar1.OverlayIcon := io
  finally
    io.Free;
  end;
end;

在您的情况下,您可以以非编程方式创建图标 1.png2.png、...并使用它们,或者您可以以编程方式创建图标(创建 CreateOverlayIcon(ANumber: Integer): TIcon 函数) .

但是,我应该警告您,TTaskbar 组件曾经(非常)有缺陷。因此我不会使用那个;相反,我会直接使用 ITaskbarList3::SetOverlayIcon API。

无论如何,我的建议是将您的问题分成两部分:

  1. 创建叠加图标。
  2. 使用 Windows 7 任务栏覆盖图标功能将这些显示在原始图标的顶部。