I did this only for Mac, but the general idea is that you implement your own IFMXCursorService. Keep in mind that this is almost all or nothing fits. You will also have to execute the FMX cursors by default.
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
It may be necessary to add a flag to TWinCursorService so that it does not allow the FMX framework to redefine your cursor.
Timing is important when registering your own cursor service. This must be done after FMX calls TPlatformServices.Current.AddPlatformService (IFMXCursorService, PlatformCocoa);
source share