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 :

[D7] Affichage liste sur survol bouton.


Sujet :

Delphi

  1. #1
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut [D7] Affichage liste sur survol bouton.
    Bonjour à tous,

    Voila, je sais ce que je veux, mais je ne sais pas comment parvenir à mes fins.

    Sur une form, j'ai plusieurs boutons (tSpeedButton).
    Et sur l'un d'eux, j'aimerais que quand la souris passe dessus, une liste proposant 3/4 élements s'affiche à droite du bouton (j'avais pensé à un popupmenu, c'est le seul capable de sortir d'une form).

    J'ai essayé quelques manips, du genre:

    - Dans le mouseMove de la form, vérifier sur quel élement la souris se trouve.
    Mais je ne connais pas l'équivalent de GetHitTestInfoAt pour une Form.

    - Dans le mouseMove du bouton, mais n'arrive pas à lancer la popup, et je crain qu'elle disparaisse dès que je vais dessus.

    Avez vous une idée ?

    L'effet graphique idéal aurait été quelque chose que l'on voit de dérouler à droite du bouton... Comme si ca en sortait.
    Peut être que tout bêtement, il y a un composant qui fait ca, que je ne connait pas.

    Merci d'avance.
    David.

  2. #2
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    Salut,
    Et simplement ça, cela ne ferait pas l'affaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    var Pop: TPoint;
    begin
      Pop.X := Button1.Left + Button1.Width;
      Pop.Y := Button1.Top;
      PopupMenu1.Popup(ClientToScreen(Pop).X, ClientToScreen(Pop).Y);
    end;
    @+
    D7/2007 - Asphyre 4.1

  3. #3
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour souch,

    En effet, je viens de faire un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TfrmAccueil.btnPublicationMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    var point: TPoint;
    begin
      point := btnPublication.ClientOrigin;
      pmGammes.Popup(point.X+btnPublication.Width,point.Y);
    end;
    Ca marche, mais je me rend compte que le popupMenu n'est pas le composant idéal.
    En effet, déjà, ma form a une couleur de fond, le popupMenu dénote.
    De plus, je ne peux pas gérer sa fermeture lorsque la souris est sortie du bouton ou du popupMenu.

    http://www.developpez.net/forums/sho...rmer+popupmenu

    Y a t'il un autre moyen que de faire une form rien que pour ça ?
    David.

  4. #4
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bon, tant pis... J'ai fait une form.

    Y a des comportements à gérer que je ne maitrise pas...
    Je poste un nouveau sujet car ce n'est pas le même pb.

    Merci quand même.
    David.

  5. #5
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    Ok, sinon, tu n'est pas forcé de poser une form, tu peut très bien créer dynamiquement le compo de liste de ton choix (listbox par exemple) et l'afficher a la position nécessaire, puis de le masquer ou killer dans le onmousemove de ton tpanel ou tform sur lequel ton bouton est posé.

    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
     
    (...)
      private
        MaListe: TListBox;
    (...)
     
    procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
      if not Assigned(MaListe) then begin
        MaListe := TListBox.Create(Form1);
        with MaListe do begin
          Visible := False;
          Parent := Form1;
          Left := Button1.Left + Button1.Width;
          Top := Button1.Top;
          Items.Clear;
          Items.Add('test');
          Items.Add('test2');
          Height := Items.Count * 20;
          Visible := True;
          OnClick := ListBox1Click;
        end;
      end;
    end;
     
    procedure TForm1.ListBox1Click(Sender: TObject);
    begin
      //
    end;
     
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
      if Assigned(MaListe) then FreeAndNil(MaListe);
    end;
    D7/2007 - Asphyre 4.1

  6. #6
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Oui, en effet, j'y ai pensé.

    Seulement, cette liste déborde de la fenêtre.
    Et je ne connais que le popupMenu qui puisse s'afficher en dehors d'une form.
    David.

  7. #7
    Membre régulier Avatar de souch
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2003
    Messages : 145
    Points : 124
    Points
    124
    Par défaut
    Hum, oui la en effet, tu va avoir besoin de créer une nouvelle form, en fsStayOnTop histoire qu'elle soit en première ligne.
    D7/2007 - Asphyre 4.1

  8. #8
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    C'est fait.

    Merci pour ta participation.
    David.

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

Discussions similaires

  1. affichage text sur clic bouton + condition
    Par gazelle dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/02/2009, 16h36
  2. cliquer sur un bouton pour tout selectionner dans une liste multiple
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2007, 15h33
  3. Réponses: 2
    Dernier message: 27/02/2007, 17h47
  4. Réponses: 4
    Dernier message: 28/02/2006, 14h25

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