Delphi 在运行时创建TTaskBar实例的正确方法是什么?
使用Delphi10西雅图更新1 我想在运行时在VCL应用程序中创建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; 上述代码将引发
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:InDelphi 10西雅图更新1
。主题已更新。感谢您的实际错误,不,您无法为隐藏窗口注册选项卡。事实上,ITakbarList3
文档特别指出,在执行任何与ITaskbarList3
相关的操作之前,您必须等待窗口的任务栏按钮创建完成,并且在显示窗口之前,创建不会发生。而且,即使注册成功,TTaskBar
的一个缺陷是,一旦它被注册,即使注册仍然有效,对选项卡所做的更新也会抛出该错误。