gpt4 book ai didi

delphi - 如何在 Firemonkey 中加载自定义光标?

转载 作者:行者123 更新时间:2023-12-03 15:07:30 25 4
gpt4 key购买 nike

我需要在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com