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 FMX Delphi Discussion :

Berlin: TCombobox, désactiver la roulette [Windows]


Sujet :

Composants FMX Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut Berlin: TCombobox, désactiver la roulette
    Bonjour

    Dans un projet FMX, j'ai une TCombobox pour laquelle je veux désactiver le changement de sélection d'élément par la molette souris.
    Je code l’événement comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TFrameRecord.ComboToMouseWheel(Sender: TObject;
      Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
    begin
      Handled := True;
    end;
    Mais ça ne modifie pas le comportement.

    J'ai alors l'idée d'aller voir plus loin dans le source Delphi de FMX.Listbox

    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 TCustomComboBox.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
    begin
      inherited;
      if WheelDelta < 0 then
      begin
        if ItemIndex < Count - 1 then
          ItemIndex := ItemIndex + 1
      end
      else
        if ItemIndex > 0 then
          ItemIndex := ItemIndex - 1;
      Handled := True;
    end;
    Ce code est exécuté après l’événement que j'ai créé et le changement du paramètre Handled dans mon code n'est donc jamais pris en compte.
    Pour moi, le code devrait être

    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
     
    procedure TCustomComboBox.MouseWheel(Shift: TShiftState; WheelDelta: Integer; var Handled: Boolean);
    begin
      inherited;
      if not Handled then
        if WheelDelta < 0 then
        begin
          if ItemIndex < Count - 1 then
            ItemIndex := ItemIndex + 1
        end
        else
          if ItemIndex > 0 then
            ItemIndex := ItemIndex - 1;
      Handled := True;
    end;
    Questions:

    1 - Est-ce un bug

    2 - Si oui, comment je peux contourner ce problème ?

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    solution enfin trouvée (pas propre mais qui fonctionne) : mettre un Abort dans le OnMouseWheel de la combo.

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

Discussions similaires

  1. Désactiver la roulette de la souris
    Par Bastien95 dans le forum IHM
    Réponses: 4
    Dernier message: 30/07/2008, 11h03
  2. Désactiver la roulette de la souris dans un ComboBox
    Par Jtita Kamel dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/04/2008, 12h22
  3. Désactiver la roulette dans un formulaire
    Par Mulai dans le forum IHM
    Réponses: 2
    Dernier message: 21/08/2007, 14h07
  4. Réponses: 1
    Dernier message: 01/04/2007, 22h58

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