我正在使用带有Delphi 10.2 Tokyo的Firemonkey Framework创建Windows和OS X应用程序,无法动态设置应用程序或表单图标。
在VCL项目中,我使用了以下代码:
Form1.Icon.LoadFromFile()
或
Application.Icon.LoadFromFile()
但FMX中没有这样的属性或方法。有没有办法设置项目图标,而不是项目 - >选项菜单?
答案 0 :(得分:0)
添加到您的使用列表{$IFDEF WIN32}WinApi.Windows,FMX.Platform.Win,{$ENDIF}
procedure setFormIcon(Form: TForm; FileName: String);
var Icon : NativeUInt;
begin
{$IFDEF WIN32}
ICON := LoadImage(0,PWideChar(Filename),IMAGE_ICON,0,0,LR_LOADFROMFILE OR LR_DEFAULTSIZE OR LR_SHARED);
SetClassLong(FmxHandleToHWND(Form.Handle), GCL_HICON, icon);
{$ENDIF}
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
setFormIcon(Form1,'my icon path.ico');
end;
答案 1 :(得分:0)
在10.2 Rio的源代码中,我看到用于在Windows中创建窗口的function TPlatformWin.CreateWindow
仅具有以下行来提供窗口图标:
WindowClass.hIcon := LoadIconW(MainInstance, PChar('MAINICON'));
与function TPlatformWin.CreateAppHandle
的代码完全相同!因此,我们没有直接方法通过FireMonkey组件设置应用程序或表单图标。
在Windows上,您仍然可以使用WinAPI消息WM_SETICON
(SendMessage(Handle, WM_SETICON, ICON_BIG, MyIconHandle);
),但是我没有尝试过,也不知道这种方式有什么麻烦。
在Windows中,我们也可以使用TTaskbarBase
和TPreviewClipRegion
类来实现TaskBar交互的更精确和功能性的方式。
P.S。我不知道,对于OS X,我们有什么相同的要求。