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 :

Limiter le scrolling à la volée des données dans une listbox


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut Limiter le scrolling à la volée des données dans une listbox
    Bonjour,

    J'ai une application qui tourne sous Android avec une simple listbox d'une centaine de données.

    Si je scrolle les données du bas vers le haut avec le doigt avec un élan,
    les données survolent encore un certain nombre de lignes plus loin.

    J'aimerais bien déactiver cette possibilité ou de limité le scrolling à la volée
    par exemple uniquement que pour 5 lignes.

    Comment puis-je réaliser cette restriction.

    Je vous remercie par avance pour l'aide.

  2. #2
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut
    Tu pourrais peut-être ajouter des boutons te permettant te déplacer comme tu le souhaites.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Dacord, c'est bien ce que j'ai voulu faire, mais comment limité le déplacement du déroulement des lignes de la listbox avec le doigt.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 604
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    une simple listbox d'une centaine de données.
    moi j'aurais mis un listview et fait en sorte de n'avoir qu'un certain nombre d'enregistrements. Bien que n'ayant jamais fait de tests sérieux dessus il me semble que ce serait une solution.

    Maintenant, un listbox (ou une listview) ce n'est qu'un scrollbox il y a peut-être des propriétés ?

    Challenge intéressant ...
    Que donnerait l'utilisation de OnViewPortPositionChange ?
    en ébauche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.ListBox1ViewportPositionChange(Sender: TObject;
      const OldViewportPosition, NewViewportPosition: TPointF;
      const ContentSizeChanged: Boolean);
    begin
    if Abs(OldViewPortPosition.Y-NewViewportPosition.Y)>??????   then    //  ici à voir 
       begin
         Calcul:=OldViewportPosition.Offset(0,maxdefilement);  // là juste vers le bas 
         Listbox1.ViewportPosition.Offset(0,Calcul);
       end;
    end;

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 321
    Par défaut
    Bonjour,

    Merci pour l'info que tu m'a donnée, malheureusement en cherchant, modifiant..
    je ne suis pas arrivé à avoir une procédure fonctionnelle.

    De même avec Listbox1.ViewportPosition.Offset je ne suis pas arrivé
    ou je n’ai pas bien compris pour faire une bonne utilisation.

    Mais le problème que je vois c'est en glissant le doigt vers le bas par exemple, ainsi
    le déroulement de la liste se fait en continu et NewViewportPosition.Y change de valeur
    plusieurs fois.
    Ce que je devrais avoir c'est de capturer la valeur NewViewportPosition.Y au moment ou le déroulement s'est arrêté !

    Pour test voici ce que j'ai fait.

    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
     
    var
     
       igPos : TPointF;
      bstop : boolean ;
    ..
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
        ListBox1.ViewportPosition := igPos ;
    end;
     
    procedure TForm1.ListBox1ViewportPositionChange(Sender: TObject;
      const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
    var
    begin
     
      if   NewViewportPosition.Y > OldViewportPosition.Y + (round(ListBox1.ItemHeight) * 4) then
      begin
       if bstop then
       begin
           igPos .y := OldViewportPosition.Y + (round(ListBox1.ItemHeight) * 4);
           bstop := False;
       end;
      end;
     
    end;
    Je pense que j'abandonne cette idée, et voudrai savoir si c'est possible de bloquer
    en glissant le doigt le déroulement en continu de la liste,
    j'estime que ça serra la meilleure solution.

    Merci pour les infos et l'aide.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 604
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    moi aussi, j'ai bloqué sur le calcul (surtout que il y a partie remontante)
    Après avoir fait quelques tests uniquement sur windows et uniquement vers le bas j'avais quand même un peu avancé mais une semaine de vacances m'a fait oublier la suite

    De même avec Listbox1.ViewportPosition.Offset je ne suis pas arrivé
    ça, j'avais laissé tomber, il faut que je retrouve mes essais j'espère qu'ils n'ont pas été écrasés par un autre truc que j'avais en tête (dragdrop avec listview)

Discussions similaires

  1. [Débutant] Problème de charger des donnes dans une ListBox
    Par pizzaman dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/05/2013, 21h47
  2. [XL-2007] Macro pour afficher des données dans une listbox
    Par LaurentIA dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/08/2012, 17h56
  3. Afficher des données dans une ListBox
    Par momoh dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/03/2010, 19h22
  4. Comment faire apparaitre des données dans une listbox
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/05/2007, 15h04
  5. limite de l'affichage des donnés dans une Bdgrid
    Par helmis dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2006, 09h15

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