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 :

Des composants à l'intérieur d'un VertScrollBox, VertScrollBox ne fonctionne pas.


Sujet :

Composants FMX Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut Des composants à l'intérieur d'un VertScrollBox, VertScrollBox ne fonctionne pas.
    Bonjour,

    Sous Windows tous fonctionnent correctement le problème ce pose sous Android.
    Voici ce que j'ai construit.

    Je place un composant VertScrollBox1 sur ma fiche.

    En deuxième je place un deuxième composant HorzScrollBox1 que je le place dans le
    composant VertScrollBox1 avec les propriétés Align Top.

    En troisième je place à nouveau un composant HorzScrollBox2 dans le VertScrollBox1, ainsi de suite...

    Dans les HorzScrollBox je place des petites images qui sont alignées dans une rangée.

    Voici mon problème, si la VertScrollBox1 ce rempli par des HorzScrollBox je n'arrive pas à scroller
    du bas vers le haut (ou haut/bas).... Seules les HorzScrollBox se font scroller.

    Si je mets mon doigt sur le bord d'un horizontal box j'arrive a scrollé haut/bas mais si je place mon doigt a l'intérieur
    d'un HorzScrollBox pour pouvoir tous scroller haut/bas ça ne fonctionne pas.


    Par quel moyen puis-je arriver à faire défiler le tous verticalement sous Android.

    Merci à l'avance de votre aide et de vos conseils.
    Salutation
    Ardely

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    J'ai beau chercher sur internet, malheureusement je n'ai pas encore réussi à résoudre ce problème.

    Voice dans la direction ce que j'ai essayé ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
         HorzScrollBox2.Parent := VertScrollBox1.Content;
         HorzScrollBox1.Parent := VertScrollBox1.Content;
    ou
         HorzScrollBox2.Parent := VertScrollBox1;
         HorzScrollBox1.Parent := VertScrollBox1;
    ou
         HorzScrollBox2.Parent := VertScrollBox1.Parent ;
         HorzScrollBox1.Parent := VertScrollBox1.Parent ;
    Mais, si ce n'est pas possible, peut-être une autre solution..,
    est-ce-que c'est possible de faire afficher la barre d'un TVertScrollBox sur android et IOS,
    de cette manière, je pourrais l'utiliser.

    Merci pour votre aide et conseils.
    Ardely

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 658
    Points : 3 599
    Points
    3 599
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Quelle version de Delphi utilisez vous ? Si c'est Tokyo, vous avez sous GetIt des modèles d'écran gratuits à télécharger (écrans d'authentification, d'accueil...). Certains utilisent TVertScrollBox.

    Par contre, d'un point de vue IHM, je ne vois pas l'intérêt des THorzScrollBox : une seule rangée d'images avec potentiellement un ascenseur horizontal pour voir la suite ne me parait pas, à première vue, très UX... De mon point de vue, il vaudrait mieux avoir plusieurs rangées (=> plusieurs lignes) afin de voir toutes les images plutôt que d'avoir à scroller horizontalement. Je placerai dans le TVertScrollBox plutôt des TLayout (ou TFlowLayout ou TGridLayout) pour y placer mes images. La hauteur du Layout étant calculée en fonction du nombre d'image à afficher.

    C'est mon ressenti personnel et je ne connais pas votre cahier des charges. Je pense qu'avec un mobile, les utilisateurs sont plus habitués à faire des scrollings verticaux qu'à combiner scrolling vertical et horizontal. A mon avis, sur mobile, le scrolling horizontal est plus apparenté à un changement d'onglet par exemple.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Je suis d'accord, un GridLayout ou un FlowLayout me semble plus indiqué
    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

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    J'ai Tokyo 10.2
    Les modèles d'écran que j'ai pu trouver son uniquement que des THorzScrollBox ou
    des TVertScrollBox mais pas les deux en relation...

    Je me suis mis quelque chose en tête et voulut essayer de résoudre ce problème...,
    mais maintenant pour avancer plus vite je vais essayer d'aboutir à ce que vous me proposez.

    Merci beaucoup de vos conseils!

  6. #6
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 58
    Points : 43
    Points
    43
    Billets dans le blog
    1
    Par défaut
    Bonsoir ! Je ne sais pas si tu as déjà trouvé une solution sinon tu peux utiliser des animations en tout cas c'est la méthode que j'ai utilisé et ça marche

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Non je n'ai pas encore trouvé une solution, (j'ai continuer en prenant les conseils de gbegreg et SergioMaster)
    la seule chose que j'ai pu faire c'est de mettre l'image à HitTest à False
    et j'ai constater que j'arrive à faire bougé l'ascenseur verticalement, mais plus horizontalement (logique)
    donc l'idée était au moment si je mets mon doigt sur l'image de faire une procédure qui devrait a ce moment la,
    détecter la direction que je veux prendre.

    Exemple, si je veux bouger verticalement le HitTest reste à False, et si je veux bouger horizontalement alors le HitT devient à true.
    Mais je ne sais pas encore comment le résoudre.

    Wouah, si tu me dis que ça marche avec l'animation, mais je ne connais pas, il faut encore que je regarde comment faire,
    si tu aurais un petit exemple, ça m'aiderait beaucoup,

    en tout cas merci beaucoup a vous de me guider.
    Salutation

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Wouah, si tu me dis que ça marche avec l'animation, mais je ne connais pas, il faut encore que je regarde comment faire,
    si tu aurais un petit exemple, ça m'aiderait beaucoup,
    Voir ce post
    mais pour moi cela ne correspond pas au besoin indiqué.
    j'ai aussi découvert le FramedScrollbox un peu plus loin dans le même sujet (#14)
    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

  9. #9
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 58
    Points : 43
    Points
    43
    Billets dans le blog
    1
    Par défaut
    Voici le liens un peu solution avec TFloatAnimation :

  10. #10
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    C'est marrant que je tombe sur cette discussion.

    En effet, je me suis moi-même tournée vers l'utilisation d'un TFramedVertScrollbox (et d'un TGridLayout dedans) en développant ce projet après avoir galéré avec les TListview et les TListbox sous Delphi/Android.

    Si la partie audio n'est pas fonctionnelle, au moins l'interface est fonctionelle.
    Le projet est hébergé et accessible ici :
    https://github.com/DJChloe/Android-TapPlayer

    La déclaration du TFrame est ici :
    https://github.com/DJChloe/Android-T...tFileFrame.pas


    La création de la liste de Frames se situe dans le main.pas :
    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
    procedure TMainForm.UpdateFileFrames;
    var i:integer;
    begin
      FreeFileFrames;
      SetLength(FileFrames,OricTape.Count+1);
      GridLayout1.ItemHeight:=90;
      GridLayout1.ItemWidth:=GridLayout1.Width;
      GridLayout1.height := (OricTape.Count+1)*90;
      for i:=0 to OricTape.Count-1 do
      begin
        FileFrames[i]:=TframeFile.Create(GridLayout1);
        GridLayout1.AddObject(FileFrames[i]);
          OricTape.Items[i].TapeIndex:=i;
          FileFrames[i].Parent:=GridLayout1;
          FileFrames[i].TabOrder:=i;
          FileFrames[i].Name:='FF'+trim(IntToStr(i));
          if not OricTape.Items[i].RawData then
             FileFrames[i].OricFileName:=OricTape.Items[i].CatalogName+'    '+OricTape.Items[i].FileKindDesc
          else FileFrames[i].OricFileName:='Raw Data';
          FileFrames[i].tag:=i;
          FileFrames[i].DoPause:=False;
          FileFrames[i].Actif:=False;
          FileFrames[i].SpeedButton1.OnClick:=FileFrameClick;
          FileFrames[i].Repaint;
          Application.ProcessMessages;
      end;
     
      FileFrames[OricTape.Count]:=TframeFile.Create(GridLayout1);
       GridLayout1.AddObject(FileFrames[OricTape.Count]);
        FileFrames[OricTape.Count].TabOrder:=OricTape.Count;
        FileFrames[OricTape.Count].Name:='FF'+trim(IntToStr(OricTape.Count));
        FileFrames[OricTape.Count].OricFileName:='End of Tape';
        FileFrames[OricTape.Count].tag:=OricTape.Count;
        FileFrames[OricTape.Count].Label1.Visible:=true;
        FileFrames[OricTape.Count].Label2.Visible:=false;
        FileFrames[OricTape.Count].SpeedButton1.Visible:=False;
        FileFrames[OricTape.Count].Rectangle1.Visible:=false;
        FileFrames[OricTape.Count].CBPause.Visible:=false;
        FileFrames[OricTape.Count].DoPause:=False;
        FileFrames[OricTape.Count].Actif:=False;
        FileFrames[OricTape.Count].Repaint;
        Application.ProcessMessages;
     
      FramedVertScrollBox1.Repaint;
      Application.ProcessMessages;
    end;
    Pour les screenshots et les explications, je vous renvoie ici :
    https://www.developpez.net/forums/d1...r-thread-ouch/


    L'avantage d'un TFrame sur un TListviewItem ou TListBoxItem, c'est qu'on peu y placer tous les types de contrôle visuels que l'on veut.

    Pour ma part, l'idée était d'y placer ma progress bar à moi stylée à ma façon (deux Trectangle).

    A noter : L'utilisation de TFramedVertScrollBox ne permet pas d'avoir la main mise sur l'ordre dans lequel sont affichés les TFrame, on est obligé de le faire avec un TLayout :
    • TFramedVertScrollBox --> liste de TFrame : affiche tout dans le désordre (indépendemment de l'ordre de création) sans possibilité d'y changer quoique ce soit.
    • TFramedVertScrollBox --> TGridLayout --> liste de TFrame : La liste de TFrames se retrouve correctement ordonnée dans le Layout.
    Bidouilleuse Delphi

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2015, 10h11
  2. Réponses: 0
    Dernier message: 02/11/2015, 11h19
  3. Redimensionnement des composants à l'intérieur d'un GridLayout
    Par keul85 dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 10/04/2008, 23h34
  4. Réponses: 9
    Dernier message: 29/01/2007, 11h00
  5. Réponses: 1
    Dernier message: 02/01/2003, 12h45

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