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 :

Changer de curseur sur toute la Form


Sujet :

Lazarus Pascal

  1. #1
    TomErra
    Invité(e)
    Par défaut Changer de curseur sur toute la Form
    Bonjour,
    je cherche à changer le curseur (en crHourGlass) sur toute la Form et ses composants visuels pendant un traitement. Or la propriété Cursor n'est opérationnelle que sur le composant qui a déclenché l'évènement (un TButton). Je n'ai pas vu de propriété directe. Je pourrais évidemment modifier la propriété Cursor de tous les comportements visuels de la Form. Mais ce n'est pas trop transposable. J'en suis là :
    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
    procedure TForm1.Button1Click(Sender: TObject); 
    var
      bIsControl: boolean;
      aClass : TClass;
      i: integer;
    begin
      For i:=1 to ComponentCount-1 do 
        begin
          bIsControl:=False;
          aClass:=TComponent(Components[i]).ClassParent;
          while (aClass<>nil) and (bIsControl=False) do 
             begin
               if aClass.ClassType=TControl then bIsControl:=True;
               aClass:=aClass.ClassParent;
             end;
          if bIsControl then TControl(Components[i]).Cursor:=crHourGlass;
        end;   
      TControl(Self).Cursor:=crHourGlass;
    end;
    En supposant que ce code soit une solution correcte, je me demande où on peut trouver de la documentation sur l'arborescence des composants fournis dans Lazarus : TControl semble être celui de plus bas niveau disposant d'une propriété Cursor. Est-ce que cela signifie que tous les composants visuels héritent de TControl de manière plus ou moins éloignée (d'où la boucle while) ? D'autant que le [F1] de mon lazarus n'aboutit pas. Merci. Tom
    Dernière modification par TomErra ; 12/03/2011 à 12h28.

  2. #2
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Bonjour,

    Il y a bien plus simple. (si j'ai bien compris la question)
    Il suffit d'utiliser l'objet Screen:
    Screen.Cursor:=crHourGlass;
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  3. #3
    TomErra
    Invité(e)
    Par défaut
    Merci Patrick. En effet. C'est beaucoup plus simple : adopté donc.
    Cependant quelque soit la méthode employée, je remarque quelque chose de curieux : tous les éléments de la Form se mettent bien en crHourGlass quand on les survole. Mais quand le curseur crHourGlass passe sur les scrollbars d'une stringgrid, d'un treeview ou d'un memo, le temps du survol des scroolbars, le curseur se transforme en crDefault. Alors que sur un TscroolBar isolé, tout fonctionne normalement. Mon OS est Windows 7 et ma version de Lazarus 0.9.31. Dommage pour l'effet visuel. Je suppose que l'on ne peut rien y faire ? Merci pour l'aide. Tom
    Dernière modification par TomErra ; 12/03/2011 à 16h45.

  4. #4
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par TomErra Voir le message
    ... Mais quand le curseur crHourGlass passe sur les scrollbars d'une stringgrid, d'un treeview ou d'un memo, le temps du survol des scroolbars, le curseur se transforme en crDefault.
    ... Je suppose que l'on ne peut rien y faire ? Merci pour l'aide. Tom
    Bonsoir,

    Sans doute un bug qu'il faudrait signaler sur Lazarus Bug Tracker...

    Pour la StringGrid, une solution est de la désactiver pendant que le curseur est à crHourGlass.

    Juste après le Screen.Cursor:=crHourGlass, tu mets:
    MaStringGrid.Enabled:=False;

    Puis lorsque tu rétablis le curseur avec Screen.Cursor:=crDefault, tu mets:
    MaStringGrid.Enabled:=True;

    Pas très joli, mais cela évite le défaut...
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

Discussions similaires

  1. Difficultés pour changer le curseur sur click gauche
    Par Cerambyx_Cerdo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2008, 10h31
  2. Réponses: 9
    Dernier message: 27/02/2008, 16h35
  3. Réponses: 1
    Dernier message: 01/02/2007, 16h47
  4. Modifier les alias sur toutes les form
    Par mozcity dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/10/2006, 08h08

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