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

Composants VCL Delphi Discussion :

Problème d'exécution sur un OnMouseWheel


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut Problème d'exécution sur un OnMouseWheel
    Hello tout le monde

    j'utilise Delphi 6 version personnelle.

    Je cherche à modifier une variable de mon TForm
    à chaque mouvement de roulette.

    J'ai donc géré sur mon TForm l'évènement OnMouseWheel.

    Le problème : la fonction s'execute 2 fois pour 1 seul
    mouvement de roulette.
    Alors pour les ptits malins qui veulent me demander si je ne roule
    pas trop vite avec ma souris je leur répondrai non

    Le problème est que c'est une variable binaire et que deux occurences
    de l'execution me font revenir au point de départ

    J'ai fait plusieurs essais, d'abord physiques (2 souris différentes)
    ce qui donne la même chose.

    J'ai alors essayé implémenter le OnMouseWheelUp et le OnMOuseWheelDown
    à la place, ça m'a donné la même chose.

    Ensuite j'ai essayé de faire contre mauvaise fortune bon coeur
    en essayant de magouiller et implémenter également le
    OnMouseWheelUp et le OnMOuseWheelDown et en modifiant
    mon OnMouseWheel.
    Ce qui fait que quand je faisais un mouvement vers le bas,
    les deux fonctions : OnMouseWheel d'abord, puis OnMouseWheelDown
    ensuite s'executaient.

    Je m'étais débrouillé pour que chacune de ces deux fonctions au cours
    de leur execution fasse la "moitié du chemin" vers le changement
    de ma variable vers sa valeur finale.

    En vain : comme vous vous en doutez, chacune des deux fonctions
    s'exécute deux fois :
    OnMouseWheel
    OnMouseWheelDown
    OnMouseWheel
    OnMouseWheelDown
    et on revient au point de depart.

    J'ai cherché un peu sur le site, un peu sur google,
    j'ai pas trouvé de références à ce problème, alors je me
    résous à poser la question aux plus confirmés d'entre vous.
    Merci d'avance.

    Omeggg

  2. #2
    Membre émérite
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      Tag := Tag - 1;
      Caption:=IntToStr(Tag);
    end;
     
    procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      Tag := Tag + 1;
      Caption:=IntToStr(Tag);
    end;
    ce code fonctionne très bien chez moi, regarde si ton pb ne viens pas plutot de la config de ta souris sur ton pc

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    J'ai testé avec 2 souris différentes, sur 2 PCs différents.
    Rien n'y a fait, ça fait le mm problème.
    C'est forcément le programme.

    J'ai mm poussé l'effronterie jusqu'à regarder si j'avais pas
    mis 2 fois le nom de la fonction dans le champ
    OnMouseWheel du DFM

    Om'

  4. #4
    Membre émérite
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Par défaut
    t'a essayé le bout de code que je t'ai donné ? il fonctionne correctement sur ta bécane ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    Oui.
    Et il marche très bien.
    Voilà mon bout de code à moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm_param2.FormMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    begin
            variable := variable*(-1) + 1;
    end;
    OU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    procedure TForm_param2.FormMouseWheelUp(Sender: TObject;  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    begin
            variable := variable*(-1) + 1;
    end;
     
    procedure TForm_param2.FormMouseWheelDown(Sender: TObject;  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
    begin
            variable := variable*(-1) + 1;
    end;


    Je précise que Variable est une variable globale initialisée
    dans le FormCreate à 0.

    Et là, quand j'utilise mon code à moi, dans mon projet,
    ça foire, et je sais pas pourquoi.

    Om'

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    Plus fort encore :

    Ton code je l'avais testé dans un projet à part, et il marchait
    tout ce qu'il y a de plus normalement.

    Je l'ai inséré directement dans mon Projet en cours
    (où ça ne marche pas), injecté directement dans mes
    OnMouseWheel, et le Tag du Caption va de 2 en 2 !
    C'est à devenir fou !

    Om'

  7. #7
    Membre émérite
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Par défaut
    effectivement c zarbi
    t'a essayé de mettre la var handled à true ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut
    Oh bordel.

    Je viens d'essayer de mettre Handled à true.
    Et ça marche.
    Comment t'as pu penser à ça ?

    Je sais même pas exactement à quoi correspond
    cette variable, et je sais pas pourquoi elle était
    à false sur ce projet...

    En tous cas, bien joué, merci merci merci

    Omega

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

Discussions similaires

  1. problème d'exécution sur bo
    Par nabil538 dans le forum Débuter
    Réponses: 0
    Dernier message: 28/01/2013, 09h57
  2. Problème wordpress exécution sur IE
    Par miklmikl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 17/11/2010, 18h34
  3. Problème d'exécution sur les 64 bits
    Par managbe dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/08/2010, 17h10
  4. [Compiler] Problème d'exécution sur la machine cible
    Par totoysawa dans le forum MATLAB
    Réponses: 8
    Dernier message: 13/07/2009, 16h35

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