Wie bekomme ich einen MouseOver effekt hin

Brösel_the_real_on

Grünschnabel
Versuchs mal über den Objektinspector.
Wenn du den Button oder was auch immer markiert hast, klickst du auf Events. Dort kannst du dir optionen auswählen wie z.B. OnMouseMove oder ähnliches.
 

123

Grünschnabel
Ja aber wenn ich dem Bild mit mousemove eine ander Grafik zuweise , und ich es bei Form1 wieder in den Uhrzustand setze flakkert es.



(!)
 

Krypthonas

Erfahrenes Mitglied
Überprüfst du beim MouseOver, ob schon die neue Grafik gezeichnet wurden ist?(falls ja, muss diese nicht erneut eingelesen werden).

Schonmal was von 2 Puffern gehört?
Setze DoubleBuffered auf true.
 

ASD20054

Mitglied
Hi,

dass hier verwende ich, klappt auch sehr gut :

in der Cpp Datei folgendes eintragen;

Code:
void __fastcall TForm1::OnMouseOver(TMessage & Msg)
{
  if ( ((TImage *)Msg.LParam) == Image1)
  {
    Image1->Picture->LoadFromFile("C:\\x_over.bmp");
  }
  if ( ((TImage *)Msg.LParam) == Image2)
  {
    Image2->Picture->LoadFromFile("C:\\m_over.bmp");
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnMouseOut(TMessage & Msg)
{
  if ( ((TImage *)Msg.LParam) == Image1)
  {
    Image1->Picture->LoadFromFile("C:\\x.bmp");
  }
   if ( ((TImage *)Msg.LParam) == Image2)
  {
    Image2->Picture->LoadFromFile("C:\\m.bmp");
  }
}
//---------------------------------------------------------------------------

In die header Datei in public folgendes eintragen:

Code:
public:		// Anwender-Deklarationen

  void __fastcall OnMouseOver(TMessage & Msg);
  void __fastcall OnMouseOut(TMessage & Msg);
  BEGIN_MESSAGE_MAP
  VCL_MESSAGE_HANDLER(CM_MOUSEENTER , TMessage, OnMouseOver)
  VCL_MESSAGE_HANDLER(CM_MOUSELEAVE , TMessage, OnMouseOut)
  END_MESSAGE_MAP(TForm)

Müsste verständlich sein, wenn du fragen hast, einfach fragen.

MFG ASD20054