作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在我的 Firemonkey 桌面项目中使用自定义光标。我可以在 VCL 项目中使用 LoadCursorFromFile 在我的项目中加载自定义光标。我尝试对 Firemonkey 执行相同的操作,但它没有加载光标。有没有什么工作方法可以实现在 Firemonkey 中加载自定义光标?
uses Winapi.Windows;
procedure Tform1.Button1Click(Sender: TObject);
const mycursor= 1;
begin
Screen.Cursors[mycursor] := LoadCursorFromFile('C:\...\Arrow.cur');
Button1.Cursor := mycursor;
end;
最佳答案
我只针对 Mac 执行此操作,但总体思路是实现您自己的 IFMXCursorService。请记住,这几乎是一种全有或全无的方法。您还必须实现默认的 FMX 光标。
type
TWinCursorService = class(TInterfacedObject, IFMXCursorService)
private
class var FWinCursorService: TWinCursorService;
public
class constructor Create;
procedure SetCursor(const ACursor: TCursor);
function GetCursor: TCursor;
end;
{ TWinCursorService }
class constructor TWinCursorService.Create;
begin
FWinCursorService := TWinCursorService.Create;
TPlatformServices.Current.RemovePlatformService(IFMXCursorService);
TPlatformServices.Current.AddPlatformService(IFMXCursorService, FWinCursorService);
end;
function TWinCursorService.GetCursor: TCursor;
begin
// to be implemented
end;
procedure TWinCursorService.SetCursor(const ACursor: TCursor);
begin
Windows.SetCursor(Cursors[ACursor]); // you need to manage the Cursors list that contains the handles for all cursors
end;
可能需要向 TWinCursorService 添加一个标志,以防止 FMX 框架覆盖您的光标。
注册您自己的光标服务时,时机很重要。必须在 FMX 调用 TPlatformServices.Current.AddPlatformService(IFMXCursorService, PlatformCocoa);
后完成关于delphi - 如何在 Firemonkey 中加载自定义光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025572/
我是一名优秀的程序员,十分优秀!