AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schöne Buttons mit MouseOver

Ein Thema von Kuckuckskind · begonnen am 2. Dez 2002 · letzter Beitrag vom 4. Dez 2002
Antwort Antwort
Benutzerbild von Kuckuckskind
Kuckuckskind

Registriert seit: 29. Nov 2002
65 Beiträge
 
Delphi 6 Enterprise
 
#1

Schöne Buttons mit MouseOver

  Alt 2. Dez 2002, 13:52
Hallo allerseits,

wie kann ich meine Buttons grafisch aufbereiten? D.h. mit einem schwarzen, dünnen Rahmen, einer blauen Fläche und einem MouseOver? Ich hab schon alles mögliche ausprobiert, z.B. einfach ein Panel statt Button genommen. (Ist das nicht sowieso die beste Lösung?)
Naja, das MouseOver macht mir im Moment noch am meisten zu schaffen: Mit MouseUp und MouseDown (heißt das so?) kann ich da ja nicht viel anfangen. Mit MouseMove bekomm ich`s wenigstens so weit, dass der Button (bzw. das Panel) beim Hinüberfahren die Farbe ändert. Leider geht die Farbe nicht wieder weg... tja...
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#2
  Alt 2. Dez 2002, 14:06
Das einfachste für einen Hover-Effekt ist wohl das OnMouseMove Event: Bei OnMouseMove über dem Panel (oder was auch sonst) schreibst du
Code:
Panel1.Color := clRed;
und beim und OnMouseMove des Forms, bzw des Controls auf dem das Panel liegt machst dus wieder rückgängig:
Code:
Panel1.Color := clAqua; //ein wunderschöner Hovereffekt
Ich weiß jetzt nicht wie zeitintensiv das einfärben eines Panels ist, aber da es neu gezeichnet wird beim ändern der Farbe denke ich, dass es Sinn macht eine Variable zu benutzen, mit der du den Farbstatus des Panels speicherst (boolean), so dass nicht jedesmal neu eingefärbt wird wenn das MouseMove Event auftritt (das tritt nämlich ganz schön oft auf!).

Gruß, Sebastian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 2. Dez 2002, 14:17
Moin Zusammen,

oder man rüstet ein MouseEnter/MouseLeave nach.

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

var
  Form1: TForm1;

const
  _clMouseEntered = clRed;
  _clMouseLeaved = clBlue;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.CMMouseEnter(var Message: TMessage);

var
  ptWork : TPoint;

begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) = Panel1.Handle then
  begin
    Panel1.Color := _clMouseEntered;
  end;
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);

var
  ptWork : TPoint;

begin
  GetCursorPos(ptWork);
  if WindowFromPoint(ptWork) <> Panel1.Handle then
  begin
    Panel1.Color := _clMouseLeaved;
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von foxy
foxy

Registriert seit: 4. Nov 2002
Ort: Saarbrücken
62 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 2. Dez 2002, 14:24
servus @kuckuck

also ich wollte das auch machen aber da ich faul bin und mir überlegt habe in welchem stil ich das ändern will hab ich mir einfach eine Unit genommen un zwar hier
Kein Plan von nix
MFG Heiko aka Foxy
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#5
  Alt 2. Dez 2002, 15:08
@Christian: Ist natürlich die schönere Methode. Wegen der Einfachheit (insbesondere für Anfänger, ich weiß ja nicht wie weit Kuckuckskind in Sachen Messages bewandert ist) hab ich erst mal die einfachere gewählt.

Wundert mich übrigens das keiner der Buttonkomponenten (TButton, TBitButton, TSpeedButton) keine Eigenschaft Color haben. Und: Wieso sind standardmäßig keine MouseLeave/Enter Events vorgesehen? Ist das in anderen Sprachen auch so? Ich weiß nur von JavaScript zb, dass es da solche Events gibt.

Gruß, Sebastian
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 2. Dez 2002, 15:17
Moin Sebastian,

man kann natürlich auch eine neue Kompo erstellen (z.B. ein Panel von TCustomPanel abgeleitet), dass dann um die Enter/Leave Funktionen usw. ergänzt wird.
Das wäre dann noch sauberer.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Kuckuckskind
Kuckuckskind

Registriert seit: 29. Nov 2002
65 Beiträge
 
Delphi 6 Enterprise
 
#7
  Alt 4. Dez 2002, 17:36
Hi,

danke euch allen für eure Hilfe! Es klappt und ich bin glücklich

Naja, meine Delphi-Kenntnisse beschräken sich auf ein absolutes Minimum was irgendwie eine weitergehende Gestaltung der Programme angeht. Tja, Schulwissen halt...
  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 16:17 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