我已经尝试使用Google搜索,但是在OSX上使用dock-icons的徽章功能以及访问停靠图标菜单时,我找不到任何帮助?我想我可以在运行期间更改停靠栏图标以指示某些内容已启动,但它不是那么光滑;)
答案 0 :(得分:0)
此功能未在LCL中实现,因此如果您想使用它,则必须直接使用相关的Cocoa框架。你可以使用ObjPas。当然,如果您准备编写LCL实现,那将是一个更好的长期解决方案,因为它可以在以后的Windows / Gnome上工作。
答案 1 :(得分:0)
可笑得很晚......但我碰到了这篇文章,并在Lazarus论坛中找到this post,它显示了代码如何在应用程序运行时更改Dock中的应用程序图标。
希望它可以用于寻找同一问题答案的人,即使它是在原始问题发布后的几年。 (如果这不合适,道歉)
uses
... MacOSAll ...
procedure TFrm_Main.FormCreate(Sender: TObject);
begin
...
FResPath := TrimFilename(ExtractFilePath(Application.ExeName) + PathDelim + 'Resource');
...
end;
procedure TFrm_Main.SomeEventWhenOverlay(SomeVar: Integer);
var
temp_ImagePath: String;
temp_CGDataProvider: CGDataProviderRef;
temp_Float32Ptr: Float32Ptr;
temp_CGImage: CGImageRef;
temp_CGContext: CGContextRef;
begin
temp_ImagePath := TrimFilename(FResPath + PathDelim + 'Image' + PathDelim + 'overlay_image.png'); // image must be same size as icon, if not, will be deformed
if (FileExists(temp_ImagePath)) then
begin
temp_CGDataProvider := CGDataProviderCreateWithFilename(PChar(temp_ImagePath));
temp_Float32Ptr := nil;
temp_CGImage := CGImageCreateWithPNGDataProvider(temp_CGDataProvider, temp_Float32Ptr, 1, kCGRenderingIntentDefault);
CGDataProviderRelease(temp_CGDataProvider);
// Draw image
temp_CGContext := BeginCGContextForApplicationDockTile;
//SetApplicationDockTileImage(temp_CGImage);
OverlayApplicationDockTileImage(temp_CGImage);
CGImageRelease(temp_CGImage);
EndCGContextForApplicationDockTile(temp_CGContext);
end;
end;
procedure TFrm_Main.SomeOtherEventWhenRestore();
begin
//This will not work if you use SetApplicationDockTileImage
RestoreApplicationDockTileImage;
end;