OnEnter / OnLeave avec un Panel [Résolu]

kerizo 9 Messages postés lundi 5 novembre 2007Date d'inscription 26 décembre 2007 Dernière intervention - 23 déc. 2007 à 02:42 - Dernière réponse : cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention
- 23 déc. 2007 à 18:52
Bonjour,

J'aurais juste une question dont je n'ai trouvé nul par sa réponse:

comment faire Apparaître / Disparaître un Panel en y faisant passer sûr le pointeur de la souris ?

Malheureusement dans les Events de Panel , il n'existe pas de OnMouseEnter et OnMouseLeave , ce qui pourtant est le cas pour les labels.

En fais voici ce que je souhaite :


http://img526.imageshack.us/img526/5886/pointagepanelkg3.jpg




Votre réponse me sera précieuse,

Merci,
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 déc. 2007 à 06:16
3
Merci
SpeedButton en mode Flat


Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de f0xi
kerizo 9 Messages postés lundi 5 novembre 2007Date d'inscription 26 décembre 2007 Dernière intervention - 23 déc. 2007 à 09:36
0
Merci
Merci !
Commenter la réponse de kerizo
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 23 déc. 2007 à 11:43
0
Merci
Si tu veux absolument utiliser un TPanel :

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 Panel1.BevelInner := bvRaised;
 Panel1.BevelOuter := bvRaised;
end;

Il faut bien sûr tester la sortie..

cantador
Commenter la réponse de cs_cantador
kerizo 9 Messages postés lundi 5 novembre 2007Date d'inscription 26 décembre 2007 Dernière intervention - 23 déc. 2007 à 11:53
0
Merci
Bonjour Cantador,
Je vous remercie pour votre orientation et complémentarité".

Le problème est résolu.

Cordialement.
Commenter la réponse de kerizo
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 23 déc. 2007 à 13:46
0
Merci
non cantador, la gestion OnEnter / OnLeave est un peu plus complexe qu'un OnMouseMove
et même pas la peine de vouloir utiliser un timer, c'est pas propre.

voici comment ajouter OnEnter/OnLeave sur les TPanel et n'importe quel composant qui pourra suporter l'evenement :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TPanel = class(ExtCtrls.TPanel)
  private
    fOnMouseEnter : TNotifyEvent;
    fOnMouseLeave : TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
    property OnMouseEnter : TNotifyEvent read fOnMouseEnter write fOnMouseEnter;
    property OnMouseLeave : TnotifyEvent read fOnMouseLeave write fOnMouseLeave;
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
  public
    procedure DoPanelMouseEnter(Sender: TObject);
    procedure DoPanelMouseLeave(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TPanel.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseEnter) then
     fOnMouseEnter(Self);
end;

procedure TPanel.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if Assigned(FOnMouseLeave) then
     fOnMouseLeave(Self);
end;

{ TForm1 }

procedure TForm1.DoPanelMouseEnter(Sender: TObject);
begin
  (Sender as TPanel).Color := clRed;
end;

procedure TForm1.DoPanelMouseLeave(Sender: TObject);
begin
  (Sender as TPanel).Color := clBtnFace;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.OnMouseEnter := DoPanelMouseEnter;
  Panel1.OnMouseLeave := DoPanelMouseLeave;
end;

end.


Commenter la réponse de f0xi
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 23 déc. 2007 à 18:52
0
Merci
hé, je n'ai fourni que l'entrée par la sortie...
Ta solution élégante règle évidemment le problème.

A noter également qu'un autre composant le TJvPanel possède les évènements
OnMouseEnter et OnMouseLeave.

@+
cantador
Commenter la réponse de cs_cantador

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.