Delphi 在运行时创建TTaskBar实例的正确方法是什么?

Delphi 在运行时创建TTaskBar实例的正确方法是什么?,delphi,delphi-10-seattle,Delphi,Delphi 10 Seattle,使用Delphi10西雅图更新1 我想在运行时在VCL应用程序中创建TTaskBar的实例。我发现TTaskBar有一个有趣的问题: var F: TForm; B: TTaskBar; begin F := TForm.Create(Application); B := TTaskBar.Create(F); B.TabProperties := [TThumbTabProperty.CustomizedPreview]; F.Show; end; 上述代码将引发

使用Delphi10西雅图更新1

我想在运行时在VCL应用程序中创建
TTaskBar
的实例。我发现
TTaskBar
有一个有趣的问题:

var F: TForm;
    B: TTaskBar;
begin
  F := TForm.Create(Application);

  B := TTaskBar.Create(F);
  B.TabProperties := [TThumbTabProperty.CustomizedPreview];

  F.Show;
end;
上述代码将引发错误:
无法注册选项卡。错误0

但是,该代码是有效的:

var F: TForm;
    B: TTaskBar;
begin
  F := TForm.Create(Application);
  F.Show;

  B := TTaskBar.Create(F);
  B.TabProperties := [TThumbTabProperty.CustomizedPreview];
end;

似乎不允许为隐藏表单创建
TTaskBar
实例。

您没有说您使用的是哪个版本的Delphi,但是
TTaskBar
多年来有很多错误,而且不是所有的错误都已修复,因此最好不要使用它。直接使用Microsoft的
ITaskbarList…
COM接口。@RemyLebeau:In
Delphi 10西雅图更新1
。主题已更新。感谢您的实际错误,不,您无法为隐藏窗口注册选项卡。事实上,
ITakbarList3
文档特别指出,在执行任何与
ITaskbarList3
相关的操作之前,您必须等待窗口的任务栏按钮创建完成,并且在显示窗口之前,创建不会发生。而且,即使注册成功,
TTaskBar
的一个缺陷是,一旦它被注册,即使注册仍然有效,对选项卡所做的更新也会抛出该错误。