OnEnter / OnLeave avec un Panel

Résolu
kerizo Messages postés 9 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 26 décembre 2007 - 23 déc. 2007 à 02:42
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 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,

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
23 déc. 2007 à 06:16
SpeedButton en mode Flat


3
kerizo Messages postés 9 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 26 décembre 2007
23 déc. 2007 à 09:36
Merci !
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 déc. 2007 à 11:43
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
0
kerizo Messages postés 9 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 26 décembre 2007
23 déc. 2007 à 11:53
Bonjour Cantador,
Je vous remercie pour votre orientation et complémentarité".

Le problème est résolu.

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
23 déc. 2007 à 13:46
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.


0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 déc. 2007 à 18:52
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
0
Rejoignez-nous