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"