AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt...
Thema durchsuchen
Ansicht
Themen-Optionen

Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt...

Ein Thema von flomei · begonnen am 18. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt...

  Alt 18. Aug 2003, 16:38
Hallo, ich habe hier ein kleines Problem. Ich habe ein Panel bei dem BevelOuter = bvNone und BevelInner = bvLowered sind. Wenn sich die Maus über das Panel bewegt möchte ich gerne das BevelInner zu bvRaised wird und beim Verlassen wieder auf bvNone geht. Wie mache ich das am Besten? Mir fehlt beim Panel die OnMouseLeave Eigenschaft um den Wert zurückzusetzen. Wie kann ich das trotzdem machen?
Ist sicherlich nur ein klitzekleines Problem aber ich wäre trotzdem für jede Hilfe dankbar!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..

  Alt 18. Aug 2003, 16:43
Zitat von flomei:
.....
Ist sicherlich nur ein klitzekleines Problem aber ich wäre trotzdem für jede Hilfe dankbar!

MfG Florian

Hai flomai,

Schaue dir mal diesen Thread an:
MouseLeav. Da hatte wir das selbe mit einem TLabel.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..

  Alt 18. Aug 2003, 16:43
das hier sollte dir helfen:
http://www.swissdelphicenter.ch/de/showcode.php?id=1068

[edit] Wieder zu spät
Ich kann mich einfach nicht an die GEburtagsfarben gewöhnen
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..

  Alt 18. Aug 2003, 16:50
Zitat von alexander:
das ....
Ich kann mich einfach nicht an die GEburtagsfarben gewöhnen
Hihi.... und weil mir die Farben so gut gefallen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Panel1: TPanel;
  private
    { Private-Deklarationen }
  public
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CMMouseEnter(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) = Panel1.Handle then //Maus ist über dem Panel1
  begin
   Panel1.BevelInner := bvRaised;
  end;
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) <> Panel1.Handle then //Maus verlässt das Pannel1
  begin
   Panel1.BevelInner := bvNone;
  end;
end;
Dieser Code macht für Panel1 den Hoover Effekt wie flomei in möchte.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..

  Alt 19. Aug 2003, 00:03
Wie mach ich das denn bei mehreren Panels? Ich hab probiert die Namen umzuändern aber das klappt nicht.
Delphi-Quellcode:
//Hoover fürs erste Panel
    procedure PnlCheckLengthHooverOn(var Message: TMessage); message CM_MOUSEENTER;
    procedure PnlCheckLengthHooverOff(var Message: TMessage); message CM_MOUSELEAVE;
//Hoover fürs zweite Panel
    procedure PnlResetHooverOn(var Message: TMessage); message CM_MOUSEENTER;
    procedure PnlResetHooverOff(var Message: TMessage); message CM_MOUSELEAVE;
Fehlermeldung:
Zitat:
[Error] MainFormUnit.pas(32): Duplicate message method index
[Error] MainFormUnit.pas(33): Duplicate message method index
32 und 33 sind die beiden Zeilen in denen das nochmal vorkommt.

Schonmal Danke!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..

  Alt 19. Aug 2003, 08:31
Zitat von flomei:
Wie mach ich das denn bei mehreren Panels? ...
Delphi-Quellcode:
//Hoover fürs erste Panel
    procedure PnlCheckLengthHooverOn(var Message: TMessage); message CM_MOUSEENTER;
    procedure PnlCheckLengthHooverOff(var Message: TMessage); message CM_MOUSELEAVE;
//Hoover fürs zweite Panel
    procedure PnlResetHooverOn(var Message: TMessage); message CM_MOUSEENTER;
    procedure PnlResetHooverOff(var Message: TMessage); message CM_MOUSELEAVE;
....
Hai flomei,

die proceduren gelten für die gesamte Form! Die Auswertung "von welchem Object die Message kommt" wir in der Procedure gemacht.

Delphi-Quellcode:
procedure TForm1.CMMouseEnter(var Message: TMessage);
var
  ptWork : TPoint;
begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) = Panel1.Handle then
  begin
   Panel1.BevelInner := bvRaised;
  end;
  if WindowFromPoint(ptWork) = Panel2.Handle then
  begin
   Panel2.BevelInner := bvRaised;
  end;
end;
Das geht sicher auch besser. Aber das müssen die die API-Profis sagen

Oder Du erzeugst dir gleich ein Eigenes Pannel mit den Eigenschaften.

Delphi-Quellcode:
type
  myPanel = class (TPanel)
   private
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    panel1 : myPanel;
    panel2 : myPanel;
    panel3 : myPanel;
  public
    { Public-Deklarationen }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure myPanel.CMMouseEnter(var Message: TMessage);
begin
  BevelInner := bvRaised;
end;

procedure myPanel.CMMouseLeave(var Message: TMessage);
begin
  BevelInner := bvNone;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 panel1 := myPanel.Create(nil);
 panel1.Left := 100;
 panel1.Top := 50;
 panel1.Width := 100;
 panel1.Height := 100;
 panel1.Show;
 panel1.Parent := Form1;
end;
Wenn Du Dir das noch in eine Komponente packst hast Du alles was Du möchtest.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz