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 :

[D10.3] [Android] Barre de défilement d'un TScrollBox


Sujet :

Delphi

  1. #1
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut [D10.3] [Android] Barre de défilement d'un TScrollBox
    Bonjour,

    J'ai mis un TlistBox dans un TScrollBox pour avoir une barre de défilement. Cela fonctionne bien sur ma tablette, mais la barre de défilement est invisible au repos, et grise et très étroite pendant le défilement.

    Est il possible comme dans Windows qu'elle soit toujours visible (pour indiquer la position) et aussi plus large ?

    Peut être avec des styles ? mais je ne sais pas le faire.

    Merci
    A+
    Charly

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Je crois avoir trouvé :

    To force the scrollbar(s) visible, as you already concluded, turn off AutoHide property.

    Then to hide the horizontal scrollbar, modify the TVertScrollBox default style as follows:

    Right click on the TVertScrollBox and select Edit Default Style ...
    Open up scrollboxstyle: TLayout
    Open up background: TLayout
    Select hscrollbar: TScrollBar

    In the properties of the selected hscrollbar

    untick Visible
    set Opacity to zero
    set both Scale values to zero

    Select Apply and Close button at the top of the designer window.
    Je teste ainsi que l'invisibilité de la ScrollBar horizontale ..

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Dans l'IDE pas de problème, la barre de défilement verticale s'affiche bien (comme dans Windows)

    Mais à l’exécution : Pas de changement !

    J'ai du rater un truc !

    A+
    Charly

  4. #4
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Dans l'IDE pas de problème, la barre de défilement verticale s'affiche bien (comme dans Windows)

    Mais à l’exécution : Pas de changement !

    J'ai du rater un truc !

    A+
    Charly
    En fait par habitude il n'y a pas de barres de défilement sur Android et iOS, donc son affichage n'est probablement pas uniquement géré au niveau du style mais aussi par programmation.

    Par contre, quand tu as personnalisé ton style, étais-tu sur le style par défaut ou l'as-tu fait sur la plateforme Android comme cible ?

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Je l'ai fait sur Edit_defaultStyle

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Et je crois que j'étais bien sur la plateforme Android

    Je vais recommencer pour voir

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Il faut se méfier lorsque l'on crée des styles personnalisés.
    Soit tu mets tout dans le style défaut (en fait celui qui n'a pas de nom) et tu supprimes tout autre collection
    Soit tu dois répercuter la modification dans les collections
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Merci,
    je crois que je vais arrêter de bidouiller, car je ne comprends rien aux styles !

    et effectivement sous Android pas de scrollbar visible au repos. Il faudra que je m'y fasse !

    A+
    Charly

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Je suis en train de tester, j'ai bien réussi à élargir la ScrollBar
    il faut que je teste le autohide avant d'essayer de te fournir une proposition
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je ne lâche pas facilement le morceau ! Sans toucher aux styles une autre méthode est de hacker la classe
    par exemple, puisqu'il s'agit du curseur vertical de liste et ce sans passer par un Scrollbox
    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
     
    type  
       THList = Class(TCustomListBox);
     
      TForm21 = class(TForm)
        Switch1: TSwitch;
        PrototypeBindSource1: TPrototypeBindSource;
        ListBox1: TListBox;
        BindingsList1: TBindingsList;
        LinkFillControlToField1: TLinkFillControlToField;
        StyleBook1: TStyleBook;
        procedure Switch1Switch(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form21: TForm21;
     
    implementation
     
    {$R *.fmx}
     
    procedure TForm21.Switch1Switch(Sender: TObject);
    begin
    // THlist(ListBox1).HScrollBar.Height:=0;   // ça c'est sur, on la voit plus :ptdr:
    THList(ListBox1).VScrollBar.DisableDisappear:=True;   // à priori ça change rien c'est juste pour montrer que ça existe
    if Switch1.IsChecked then THList(ListBox1).VScrollBar.Width:=40
                         else THList(ListBox1).VScrollBar.Width:=THList(ListBox1).VScrollBar.DefaultSize.Height; // étrange mais :roll:
    end;
     
    end.
    Pour ce qui est des styles, grâce à ta question, je progresse. Je viens de me rendre compte que je me suis fait avoir une fois de plus par cette histoire de défaut/windows 10 desktop/android quand il s'agit d'utiliser FireUI. Toutefois, je ne vois pas à quel stade (dans les sources) Android fait disparaitre le curseur
    Pas d'animation visibles, pas de IFDEF ANDROID spécifique, il va falloir que je plonge plus loin
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Bonjour Serge,
    merci pour ton post. J'ai testé mais j'ai des problèmes :

    je déclare déjà un type TMain = class(TForm) qui est ma fenêtre principale dans laquelle j'ai ma TListBox.

    Que dois je faire de TForm21 ? j'ai placé HList = Class(TCustomListBox); après la déclaration de TMain.

    d'autre part TPrototypeBindSource n'est pas déclaré ainsi que TBindingsList et TLinkFillControlToField ? quelle unité dois je déclarer ?

    A+
    Charly

    PS : ne te bile pas car j'ai bien pris conscience qu'il n'y avait pas de barre de défilement visible dans Android ; ce qui parait surprenant, mais bon ...

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    les ProtypeBindSource, BindingsLists et LinkFillControl ne sont là que pour remplir ma liste test. TForm21 est ma forme principale
    Le seul truc qui importait dans ce que j'ai mis c'est la déclaration de THList (d'ailleurs j'ai dû faire un mauvais copier/coller, j'ai corrigé) et l'utilisation dans le code

    ici, j'ai beaucoup "joué" avec le style Calypso
    Nom : Capture.PNG
Affichages : 348
Taille : 49,3 Ko
    pour voir ce qui pouvait se passer
    voilà mon style, dans le zip
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  13. #13
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 339
    Points : 3 107
    Points
    3 107
    Par défaut
    Oui, merci Serge, cela fonctionne. La barre de défilement est large quand le TSwitch est activé.

    Mais effectivement Elle disparait au repos. C'est propre à Android.

    A+
    Charly

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Charly910 Voir le message
    PS : ne te bile pas car j'ai bien pris conscience qu'il n'y avait pas de barre de défilement visible dans Android ; ce qui parait surprenant, mais bon ...
    c'est effectivement le comportement par défaut, mais cela ne veut pas dire que l'on ne puisse pas le changer, AMHA c'est dans les sources que ça se passe puisque ce n'est pas un composant plateforme.
    Reste à savoir s'il s'agit d'un problème de version ou quelque chose d'autre, il y a la fameuse propriété AutoHide
    mais aussi DisableFocusEffect (par défaut à true pour Listbox) alors que
    Citation Envoyé par Documentation
    Définissez DisableFocusEffect sur True pour que le contrôle désactive l'effet appliqué lorsqu'il reçoit la focalisation. Généralement, DisableFocusEffect vaut False pour les contrôles FireMonkey
    En tout cas, cela m'a permis d'avancer un peu dans les styles "complexes", un style qui utilise des autres éléments du fichier style qui utilisent eux aussi d'autres éléments pour enfin utiliser des zones d'une image png cela selon l'état, et déclinées en 4 résolutions qui plus est ! On ne peut pas dire que c'est fait pour être simple même si le résultat est au rendez-vous. Ne parlons pas de l'éditeur de bitmap pour définir les zones qui est loin d'être facile à manipuler (du moins à la souris)

    Non, pour en revenir à nos moutons, le truc est un peu dans le style, mais certainement dans le code pour ce qui est du comportement Androïd.
    Mes pistes : quelque chose qui se déclenche à la perte de focus (de la scrollbar), certainement une animation puisqu'on voit le bouton (curseur) s'effacer en douceur
    du coup je pensai que fouiller dans les zones du style pourrait fonctionner mais j'ai tellement supprimé/remis le stylebook que j'en ai perdu le fil surtout que le seul test valable ne peut se faire qu'avec Android
    mon dernier essai
    Nom : Screenshot_20190325-094019.png
Affichages : 283
Taille : 33,5 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Faire descendre la barre de défilement >> TrichEdit
    Par Hell dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/07/2012, 00h38
  2. [Forms] barre de défilement en dessous
    Par bargou dans le forum Forms
    Réponses: 8
    Dernier message: 11/01/2005, 11h23
  3. Oter la barre de défilement horizontale d'un TDBGrid
    Par adelavarenne dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2004, 16h37
  4. Evenement sur les barres de défilement d'une ScrollBox
    Par Nico118 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/05/2004, 15h56
  5. Barre de défilement
    Par GO dans le forum Composants VCL
    Réponses: 2
    Dernier message: 26/01/2003, 18h40

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