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

 Delphi Discussion :

avec un TFileListBox utiliser le scrollbar en sélectionnant l'item Win 11 D6


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 616
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 616
    Par défaut avec un TFileListBox utiliser le scrollbar en sélectionnant l'item Win 11 D6
    Bonjour à toutes et à tous,

    En testant des anciennes applications réalisées en D3 et D6, je me suis toujours demandé si il était possible de sélectionner l'item en cliquant sur les boutons du scrollbar d'un TFileListBox.

    Pour le moment la liste défile vers le bas ou vers le haut mais pas de sélection de l'item.

    Avec les flèches c'est ok l'item reste sélectionné.

    Merci d'une idée.

    @+,

    cincap

  2. #2
    Invité de passage
    Homme Profil pro
    ‫‬
    Inscrit en
    Août 2025
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : ‫‬

    Informations forums :
    Inscription : Août 2025
    Messages : 21
    Par défaut
    Il faut intercepter le message WM_VSCROLL et faire un défilement si une boutons up/down est cliqué.

    Ajouter la déclaration TFileListBox avant celle du Tfrom principale pour modifier toutes les TFileListbox qu'elle contient

    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
    TFileListBox = class(Filectrl.TFileListBox) 
      protected
        procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;
      end;
     
      TForm1 = class(TForm)
       ...
     
    implementation
     
    procedure TFileListBox.WMVScroll(var Msg: TWMVScroll);
    begin
       case Msg.ScrollCode of
            SB_LINEUP: if ItemIndex - 1 >= 0 then
                          ItemIndex := ItemIndex - 1;
          SB_LINEDOWN: if ItemIndex + 1 < Count then
                          ItemIndex := ItemIndex + 1;
       else
          inherited;
       end;
    end;

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 616
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 616
    Par défaut
    Bonjour à toutes et à tous,

    @ Mist2024, merci pour ta réponse, c'est exactement cela que j'aurai aimé en plus de l'utilisation des touches Haut et Bas.

    Suivant tes réactions sur le forum, il me semble que tu vas vite monter en grade ?

    Bon Week-end à tous,

    Topic fermer.

    @+,

    cincap

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 616
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 616
    Par défaut Modification de la solution de Mist2024 en ajoutant le srolling de la roulette !
    Bonjour à toutes et à tous,

    Je me suis permis de modifier la solution de Mist2024 :

    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
    TFileListBox = class(Filectrl.TFileListBox) 
      function DoMouseWheel(_Shift: TShiftState; _WheelDelta: Integer; _MousePos: TPoint): Boolean; override;
    
      protected
        procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;
      end;
     
      TForm1 = class(TForm)
       ...
     
    implementation
    
    uses Math;
    
    { TFileListBox }
    
    function TFileListBox.DoMouseWheel(_Shift: TShiftState; _WheelDelta: Integer; _MousePos: TPoint): Boolean;
    var
      Idx: Integer;
    begin
      // calculer l'index de l'élément à sélectionner
      Idx := ItemIndex - Sign(_WheelDelta);
      if Idx >= Items.Count then
        Idx := Items.Count
      else if Idx < 0 then
        Idx := 0;
     
     // sélectionnez-le
      ItemIndex := Idx;
    
      // et simuler un clic de souris dessus pour que le tableau sélectionné s'affiche
      Self.Click;
    
      Result := True;
    end;
    
     
    procedure TFileListBox.WMVScroll(var Msg: TWMVScroll);
    begin
       case Msg.ScrollCode of
            SB_LINEUP: if ItemIndex - 1 >= 0 then
                          ItemIndex := ItemIndex - 1;
          SB_LINEDOWN: if ItemIndex + 1 < Count then
                          ItemIndex := ItemIndex + 1;
       else
          inherited;
       end;
    end;
    Cela pourra peut être utile.

    @+,

    cincap

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

Discussions similaires

  1. Utilisation des ScrollBar avec un ScrollView
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2007, 10h45
  2. Pb avec IE en utilisant style.display
    Par sagitarium dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/05/2006, 10h44
  3. Réponses: 7
    Dernier message: 13/03/2006, 15h39
  4. Réponses: 3
    Dernier message: 09/01/2006, 16h35
  5. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08

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