Я пытаюсь загрузить значки, используемые диалогами задач Delphi, в элемент управления TImage
.Как я узнал здесь , я использую функцию LoadImage
, но значки выглядят слегка отличающимися от тех, которые используются функцией MessageDlg
.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Icon.Handle := LoadImage( 0, IDI_WARNING, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE or LR_SHARED );
MessageDlg('mtWarning', mtWarning, [mbOk], 0);
Image1.Picture.Icon.Handle := LoadImage( 0, IDI_ERROR, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE or LR_SHARED );
MessageDlg('mtError', mtError, [mbOk], 0);
Image1.Picture.Icon.Handle := LoadImage( 0, IDI_INFORMATION, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE or LR_SHARED );
MessageDlg('mtInformation', mtInformation, [mbOk], 0);
Image1.Picture.Icon.Handle := LoadImage( 0, IDI_QUESTION, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE or LR_SHARED );
MessageDlg('mtConfirmation', mtConfirmation, [mbOk], 0);
end;
end.
Как видите, значки в TImage
отличаются от соответствующего значка, используемого функцией MessageDlg
.
Дальнейшие тесты:
Я обнаружил, что функция MessageDlg
использует те же значки, полученные LoadImage
, когда установлен флаг Включить темы выполнения деактивировано (в Параметры проекта ).
Кажется, что функция MessageDlg
использует некоторые константы, определенные в единице CommCtrl
:
{Общие значки диалогового окна задачи}
{$ EXTERNALSYM TD_WARNING_ICON}
TD_WARNING_ICON = MAKEINTRESOURCEW (Word (-1));
{$ EXTERNALSYM TD_ERROR_IC_ONTD_ERROR_ICON = MAKEINTRESOURCEW (Word (-2));
{$ EXTERNALSYM TD_INFORMATION_ICON} TD_INFORMATION_ICON = MAKEINTRESOURCEW (Word (-3));
{$ EXTERNALSYM TD_SHIELD_ICON}
TD_SHIELD_ICON = * MAKEINTRESOURCEW (10 *) * 1068) (68 *) * 686 * 686)Я получаю те же значки, которые используются в диалогах задач?