IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Problème de fonctionnement avec un curseur non standard [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Problème de fonctionnement avec un curseur non standard
    Bonjour à toutes et à tous,

    Dans un programme, je voudrais utiliser des curseurs différents de ceux inclus (une main ouverte et une main fermée par exemple). Disposant de ces deux curseurs, je les ai placés dans un fichier ressource "CurseursH.lrs" que j'ai inclus à mon unité. Dans cette dernière, le nouveau curseur devrait apparaître lorsque j'appuie sur la souris et revenir au curseur par défaut lorsque je la relâche.

    Lorsque j'appuie sur la souris :
    - sous Windows : le curseur disparaît,
    - sous Ubuntu : le curseur par défaut reste affiché.

    Si je remplace Cursor par Screen.Cursor, le problème est le même.

    J'utilise Lazarus 0.9.30. Voici mon unité de test. Le fichier "CurseursH.lrs" est joint à ce message.

    Avez-vous une idée du problème.

    Merci de votre aide.

    Pierre

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    unit Unit1; 
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, LResources;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { private declarations }
        crHandFlat: TCursor;
      public
        { public declarations }
      end; 
     
    var
      Form1: TForm1; 
     
    implementation
     
    {$R *.lfm}
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      crHandFlat:= LoadCursorFromLazarusResource('HANDFLAT');
    end;
     
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Cursor:= crHandFlat;
    end;
     
    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Cursor:= crDefault;
    end;
     
    initialization
      {$I CurseursH.lrs}
    end.

  2. #2
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Bon, j'ai résolu mon problème de la manière suivante :

    Au lieu de charger le curseur de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      crHandFlat:= LoadCursorFromLazarusResource('HANDFLAT');
    ou comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Screen.Cursors[crHandFlat]:= LoadCursorFromLazarusResource('HANDFLAT');
    qui ne marche pas mieux, je le charge comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     crHandFlat:= -32;
     Screen.Cursors[crHandFlat]:= LoadCursorFromLazarusResource('HANDFLAT');
    c'est-à-dire que j'impose une valeur à la variable crHandFlat avant d'appeler le chargement. Cette valeur doit être comprise dans l'intervalle de définition de TCursor ( TCursor = -32768..32767) et hors des valeurs des curseurs standard (0 à -30).

    Cordialement.

    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de fonctionnement avec Outlook
    Par JAHWAR dans le forum Outlook
    Réponses: 0
    Dernier message: 26/09/2012, 21h02
  2. PL/SQL boucle for avec un curseur non réussi
    Par kimoto77 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 06/10/2011, 17h52
  3. Réponses: 0
    Dernier message: 05/11/2009, 06h46
  4. Problème de fonctionnement avec Code::Blocks
    Par turbo225 dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 20/12/2008, 12h14
  5. Session qui fonctionne avec Firefox et non avec IE
    Par epeichette dans le forum Langage
    Réponses: 3
    Dernier message: 19/12/2007, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo