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 :

Déplacement vertical à partir d'un THorzScrollBox


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut Déplacement vertical à partir d'un THorzScrollBox
    Bonjour,

    Je viens vers vous avec un problème concernant l'utilisation d'un THorzScrollBox dont il est dit dans les docs que cela ne permet qu'un déplacement horizontal.
    Voici comment est implémenté mon projet: j'ai un TVertScrollBox contenant des panels et un HorzScrollBox. Mon problème est le suivant: étant sur un panel du VertScrollBox il m'est possible de faire un scroll vertical mais pas quand je suis sur le HorzScrollBox; alors mon problème est comment pouvoir faire un déplacement vertical même quand je suis sur ce composant.
    j'ai éssayé ceci dans mon code mais qui n'a rien donné:
    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 TForm1.HorzScrollBoxMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
      VertScrollBox1.OnMouseDown(Sender, Button, Shift, X, Y);
    end;
     
    //------------------------------------------------------------------------------
    procedure TForm1.HorzScrollBoxMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Single);
    begin
      VertScrollBox1.OnMouseUp(Sender, Button, Shift, X, Y);
    end;
    j'ai utilsé aussi le GestureManager mais qui ne m'a pas aidé ou alors je ne sais pas si je m'y suis est mal pri avec; enfin j'ai éssayé par calcul, un peu comme ceci mais les déplacement pertubes mon affichages de composants, bien en +/- selon les cas et toujours avec un GestureManager
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VertScrollBox1.Position.Y := VertScrollBox1.Position.Y - EventInfo.Location.Y
    Si quelqu'un peut m'éclairer sur un procéder fonctionnel je lui en serai gré; merci davance.
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre Expert

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Par défaut
    Bonsoir.

    Le ScrollBox horizontal bloque le déplacement vertical (logique) par la molette de la souris.
    Je n'ai pas testé, mais une solution simple serait d'utiliser l'événement OnMouseWheel du HorzScrollBox en y implémentant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      N: integer;
    begin
       if WheelDelta > 0 then N:= 10 else N:= -10;
       VertScrollbox.ScrollBy(0, N);
    end;
    Il te faudra veiller à ne faire le scrollby que si la position de VertScrollBox le permet.

    Cordialement
    Thierry

  3. #3
    Membre averti
    Homme Profil pro
    Software engineer
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Bonsoir ThWilliam,

    J'ai eu a éssayer ton approche mais cela n'a pas eu de sucess (aucun mouvement) . Je suppose que cela est du au fait que j'utilise le gestionnaire (gestureManager) parce que les évènements onMouseUp (down) comme mentionnés plus haut ne sont pas pris en compte du coup j'ai opté pour une solution simple dans ce bout de code (Panel401ScrollBox représente mon HorzScrollBox)
    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
     
    //------------------------------------------------------------------------------
    procedure TForm1.Panel401ScrollBoxGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
    Var s: String;
    begin
      IF GestureToIdent(EventInfo.GestureID, S) THEN
        Begin
          if ((S = 'sgiUp') OR (S = 'sgiDownUp')) then
            VertScrollBox1.Content.ScrollBox.Position.Y := VertScrollBox1.Content.ScrollBox.Position.Y - Panel401ScrollBox.Height;
          if ((S = 'sgiDown') OR (S = 'sgiUpDown')) then
            VertScrollBox1.Content.ScrollBox.Position.Y := VertScrollBox1.Content.ScrollBox.Position.Y + Panel401ScrollBox.Height;
     
          Handled :=  True;
       End;
     
    end;
    et là c'est plus cool !!! Merci pour ton aide ThWilliam, j'éssairai ta suggestion dans un autre contexte mais là j'ai pas trop le temps.

    Emmanuel
    "L'homme ne devient Homme que par éducation."
    "Des pensées sans contenu sont vides, des intuitions sans concepts, aveugles."
    "Une proposition incorrecte est forcément fausse, mais une proposition correcte n'est pas forcément vraie."

    Emmanuel Kant

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Colonnes fixes lors d'un déplacement vertical ?
    Par nikko49 dans le forum Conception
    Réponses: 2
    Dernier message: 16/01/2013, 20h10
  2. [script.aculo.us] Déplacement div à partir de la propriété
    Par Arnaud F. dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 09/07/2009, 14h07
  3. JDialog: empecher le déplacement vertical
    Par dr23fr dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 09/06/2008, 14h02

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