IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Gouyon

Curseur de souris personnalié en FMX

Noter ce billet
par , 17/07/2022 à 10h53 (3729 Affichages)
Sur un projet j'avais besoin de curseurs personnalisés et autant on trouve pléthore de documentation pour le faire en VCL autant on en trouve très peu en FMX.
Heureusement la communauté est là et grâce à leurs conseils j'ai eu la solution et bien entendu je la partage avec vous ici.

Je me suis principalement inspiré de cette vidéo


Étape 1 création de ressources:
Tout d'abord vous allez créer des ressources en utilisant le gestionaire de ressource de votre projet

Nom : vue1.jpg
Affichages : 148
Taille : 112,4 Ko

Vous ajoutez vos curseurs (fichier .cur) aux ressources de votre projet. Dans mon cas il y en a 3. Ensuite vous attribuez comme identificateur de ressource une valeur numérique différente à chaque curseur.

Nom : vue2.jpg
Affichages : 118
Taille : 32,5 Ko

Dans mon cas j'ai attribué les valeurs respective de 32801,32802,32803

Étape 2 ajout d'une classe CursorService:

C'est cette classe qui va gérer le changement de curseur.
Il faut ajouter dans les uses
La déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
TMyCursorService = class(TInterfacedObject, ifmxCursorService)
  private
    class var FMyService: TMyCursorService;
    class var FCursor: TCursor;
    class var FOldWinPlatformService: ifmxCursorService;
  public
    class constructor Create;
    procedure SetCursor(const ACursor: TCursor);
    function GetCursor: TCursor;
  end;
L'implémentation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ TMyCursorServicze }
class constructor TMyCursorService.Create;
begin
  FMyService := TMyCursorService.Create;
  FOldWinPlatformService := ifmxCursorService(TPlatformServices.Current.GetPlatformService(ifmxCursorService));
  TPlatformServices.Current.RemovePlatformService(ifmxCursorService);
  TPlatformServices.Current.AddPlatformService(ifmxCursorService, FMyService);
end;

function TMyCursorService.GetCursor: TCursor;
begin
  Result := FCursor;
end;

procedure TMyCursorService.SetCursor(const ACursor: TCursor);
const
  MyCursorMap: array [1 .. 3] of PChar = (my_curs_1, my_curs_2, my_curs_3);
var
  NewCursor: HCURSOR;
begin
  FCursor := ACursor;
  if FCursor in [1 .. 3] then
  begin
    NewCursor := LoadCursorW(HInstance, MyCursorMap[FCursor]);
    WinApi.Windows.SetCursor(NewCursor);
  end
  else if assigned(FOldWinPlatformService) then FOldWinPlatformService.SetCursor(ACursor);
end;

Étape 3 intégration à votre application:

Tout d'abord il faut créer l'obet CursorService pour cela le mieux est de placer sa création dans l'évènement Oncréate de votre Form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TForm2.FormCreate(Sender: TObject);
begin
TMyCursorService.Create;
end;
Ensuite vous devez créer des constantes avec la correspondance des valeurs numériques que vous avez saisies dans le gestionnaire de ressouces de votre projet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
const
  my_curs_1 = PChar(32802);
  my_curs_2 = PChar(32801);
  my_curs_3 = PChar(32803);
Étape 4 Utilisation:

Pour utiliser vos curseurs personnalisé il suffit d'indiquer l'index du curseur dans la propriété Cursor des éléments de votre Form.
Nom : vue3.jpg
Affichages : 121
Taille : 25,0 Ko
Si vous voulez le faire par programmation, il suffit de modifier la valeur cursor de votre élément.
Exemple:
Voilà c'est tout.

Je tiens à remercier tous les gens qui m'ont aidé sur le sujet et plus particulièrement sergiomaster et pprem

Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Viadeo Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Twitter Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Google Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Facebook Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Digg Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Delicious Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog MySpace Envoyer le billet « Curseur de souris personnalié en FMX » dans le blog Yahoo

Mis à jour 04/03/2024 à 11h03 par Gouyon

Tags: cursor, delphi, fmx
Catégories
Programmation

Commentaires