首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TaskDialog不在我的Delphi程序中工作

TaskDialog不在我的Delphi程序中工作
EN

Stack Overflow用户
提问于 2020-06-14 20:21:26
回答 1查看 626关注 0票数 1

我用的是Delphi 10.4。这是一个Windows应用程序。

我想在我的程序中将所有的ShowMessage、MessageDlg和MessageBox调用转换为TaskDialogs。当我尝试这样做时,我无法让TaskDialog显示任何东西。

因此,我所做的就是创建一个新的最小VCL应用程序,只需在其中添加一个按钮和一个TaskDialog:

这是我的密码:

代码语言:javascript
复制
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    TaskDialog1: TTaskDialog;
    procedure MyMessageBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;                                                 

var
  Form1: TForm1;

implementation

procedure TForm1.MyMessageBox;
begin
  Form1.TaskDialog1.Caption := 'My Application';
  Form1.TaskDialog1.Title := 'Hello World!';
  Form1.TaskDialog1.Text := 'I am a TTaskDialog, that is, a wrapper for the Task Dialog introduced ' +
              'in the Microsoft Windows Vista operating system. Am I not adorable?';
  Form1.TaskDialog1.CommonButtons := [tcbClose];
  Form1.TaskDialog1.Execute;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyMessageBox;
end;

{$R *.dfm}

begin

Application.Run;

end.

效果很好。当运行它并按Button1时,我得到:

所以现在我去申请。我向主窗体添加了一个按钮,并将MyMessageBox过程设置为:

代码语言:javascript
复制
procedure TLogoAppForm.MyMessageBox;
begin
  ShowMessage('ShowMessage ......................................');
  Application.MessageBox('Application.MessageBox ...........................', 'Error', 0);
  MessageDlg('MessageDlg ................................', mtWarning, [mbOk], 0);

  LogoAppForm.TaskDialog1.Caption := 'My Application';
  LogoAppForm.TaskDialog1.Title := 'Hello World!';
  LogoAppForm.TaskDialog1.Text := 'I am a TTaskDialog, that is, a wrapper for the Task Dialog introduced ' +
              'in the Microsoft Windows Vista operating system. Am I not adorable?';
  LogoAppForm.TaskDialog1.CommonButtons := [tcbClose];
  LogoAppForm.TaskDialog1.Execute;
end;

在我的应用程序中正确地按下按钮,依次打开ShowMessage、MessageBox和MessageDlg窗口,但关闭MessageDlg窗口后,TaskDialog将不会显示任何内容。

有谁知道是什么原因导致TaskDialog不能在我的应用程序中工作,以及我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-14 20:26:45

必须启用运行时主题,VCL TTaskDialog才能工作。转到Project/Options/Application/Manifest这样做。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62377770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档