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

Langage Delphi Discussion :

[D6] Comment appliquer la modification d'un curseur ?


Sujet :

Langage Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 013
    Points
    7 013
    Par défaut [D6] Comment appliquer la modification d'un curseur ?
    J'ai bien trouvé ca :
    Screen.Cursor changes the cursor of your application. "Component".Cursor
    changes the cursor of one component if Screen.Cursor = crDefault. If
    Screen.Cursor <> crDefault you cannot change a component's cursor.

    Changing a component's cursor property does not refresh the cursor, it
    is refreshed when it is moved. You can simulate this:

    Panel1.Cursor := SomeCursor;
    Panel1.Parent.Perform (WM_SETCURSOR,Parent.Handle,HTCLIENT);

    or (if the first one does not work for some reason)...

    Panel1.Cursor := SomeCursor;
    Mouse_Event (MOUSEEVENTF_MOVE,1,0,0,0);
    Mouse_Event (MOUSEEVENTF_MOVE,-1,0,0,0);

    Panel1.Parent.Perform (WM_SETCURSOR,Parent.Handle,HTCLIENT) forces the
    cursor shape to
    refresh, the second method is just a trick: move the cursor one pixel to
    the right and one to the left again, which makes it refresh, too.

    Jens
    Mais, ca n'a aucun effet ...

    Quelqu'un aurait une idée ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Points : 63
    Points
    63

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 013
    Points
    7 013
    Par défaut
    Je l'avais déjà vu. Mais ca ne parle que d'affecter son propre curseur à un objet. C'est pas ca qui me pose problème.
    C'est que malgré un MonObjet.Cursor := TelCurseur;, le curseur de l'objet ne change pas. C'est toujours le précédent curseur que je vois, et non le nouveau.
    Je cherche donc le moyen d'obliger l'objet (ou l'application) à prendre en compte la modification, et à l'appliquer immédiatement.

    Une autre idée ... ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A priori, si tu veux juste changer le curseur par un "par défaut", un simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Panel1.Cursor := crHelp;
    Par exemple devrait suffir

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 013
    Points
    7 013
    Par défaut
    Citation Envoyé par Tofalu
    A priori, si tu veux juste changer le curseur par un "par défaut", un simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Panel1.Cursor := crHelp;
    Par exemple devrait suffir
    C'est ce que je pensais, mais parfois ca ne suffit pas, car ca n'a aucun effet. La syntaxe est correcte puisque ca compile, mais le curseur ne change pas (visuellement).

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Je fais généralement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Screen.Cursor := crCeQueTuVeux;
    Cela ne fonctionne pas dans ton cas ?
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 013
    Points
    7 013
    Par défaut
    Citation Envoyé par DMO
    Je fais généralement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Screen.Cursor := crCeQueTuVeux;
    Cela ne fonctionne pas dans ton cas ?
    Pas toujours.
    Il y a des cas où ca n'a aucun effet.
    Le but de ma question était de savoir, s'il y a moyen de forcer à prendre en compte ce changement.

    :
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    Autant pour moi ce fut une suggestion peu judicieuse.

    Dans une nouvelle appli, j'ai posé un Timer sur lequel je change le curseur de l'écran. Sans bouger ma souris, j'en vois effectivement les effets immédiatement, ce qui me fait douter de
    Changing a component's cursor property does not refresh the cursor, it is refreshed when it is moved.
    En regardant TControl.SetCursor, ou le cas plus spécifique de TScreen.SetCursor, je m'aperçois qu'evidemment, c'est un message windows qui est envoyé pour que le changement de curseur soit effectif.
    Dans mon appli de test, si ca fonctionne, c'est que l'application ne fait que cela. La tienne doit véritablement travailler, ce qui fait qu'il est probable que le message, à priori, ne soit pas pris en compte quand il le faudrait. C'est pourquoi je te suggère un Application.ProcessMessages, en y fesant bien attention, puisqu'alors TOUS les messages sont traités...
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 669
    Points : 7 013
    Points
    7 013
    Par défaut
    Citation Envoyé par DMO
    C'est pourquoi je te suggère un Application.ProcessMessages
    Bonne idée.
    Je vais tester ...

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/04/2009, 19h53
  2. [DOM] comment enregistrer les modifs?
    Par noobiewan kenobi dans le forum Format d'échange (XML, JSON...)
    Réponses: 26
    Dernier message: 30/07/2004, 10h56
  3. [debutant] comment appliquer le code d'un bouton
    Par philippejuju dans le forum MFC
    Réponses: 3
    Dernier message: 20/01/2004, 10h56
  4. [icone]Comment appliquer une icone sur le.exe
    Par JavaLeDirePartout dans le forum JBuilder
    Réponses: 7
    Dernier message: 24/07/2003, 17h28
  5. Comment detecter un polygon sous le curseur
    Par FreshVic dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2003, 10h48

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