首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDialogService.MessageDialog的颜色

TDialogService.MessageDialog的颜色
EN

Stack Overflow用户
提问于 2017-03-21 13:35:00
回答 1查看 786关注 0票数 0

你能解释一下如何使用TDialogService.MessageDialog窗口的颜色吗?

更新:使用此命令创建的

代码语言:javascript
复制
  TDialogService.MessageDialog('Test3: Confirmation', MsgDlgType.mtConfirmation,
    [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0,
    procedure(const AResult: TModalResult)
    begin
    end);

我需要颜色的底部面板(按钮父)和背景色的消息。我需要这个颜色使我自己的对话框看起来像FMX默认对话框。

目前,我有自己的高度可定制的对话框,如下所示:

我还可以在哪里获得TDialogService.MessageDialog窗口中使用的图标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-22 11:55:22

感谢大卫·赫弗南和Triber的回答

代码语言:javascript
复制
procedure GetThemeBackgroud(AImage: TImage; ATheme: HTHEME; APartID: Integer);
var
  stream: TMemoryStream;
  bitmap: Vcl.Graphics.TBitmap;
begin
  bitmap := Vcl.Graphics.TBitmap.Create;
  try
    bitmap.Width := Round(AImage.Width);
    bitmap.Height := Round(AImage.Height);
    DrawThemeBackground(ATheme, bitmap.Canvas.Handle, APartID, 0,
                        Rect(0, 0, bitmap.Width, bitmap.Height), nil);
    stream := TMemoryStream.Create;
    try
      bitmap.SaveToStream(stream);
      AImage.Bitmap.LoadFromStream(stream);
    finally
      stream.Free;
    end;
  finally
    bitmap.Free;
  end;
end;

procedure GetThemeBackgroud;
var
  theme: HTHEME;
begin
  theme := OpenThemeData(0, 'TASKDIALOG');
  if theme <> 0 then
  try
    // Client color
    GetThemeBackgroud(imgClient, theme, TDLG_PRIMARYPANEL);
    // Bottom color
    GetThemeBackgroud(imgBottom, theme, TDLG_SECONDARYPANEL);
  finally
    CloseThemeData(theme);
  end;
end;

在这里,我们应该添加2个TImages: client和按钮父母:

现在我应该研究一下系统图标的加载。

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

https://stackoverflow.com/questions/42928717

复制
相关文章

相似问题

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