Focus
-
Oder du machst unetr das Frame ein Label das genau 1px hervorschaut.
Dann vereinbarst du eine Bool Veriable
bool framemaus;Dann fügst du folgendes bei der MouseMove Methode vom Frame ein:
void __fastcall TForm1::Frame21MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { framemaus = true; } //---------------------------------------------------------------------------Und folgendes dei der MouseMove Methode des Labels;
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { framemaus = false; } //---------------------------------------------------------------------------MfG kevka
-
Das funktioniert aber nur, wenn Du die Maus im Zeitlupentempo bewegst.
-
Dann muss das Label halt etwas mehr rausstehen.
-
Selbst dann funktioniert das nicht sicher, weil Windows bei mehr als Zeitlupenbewegungen eine Menge Bewegungsdaten der Maus wegfallen läßt.
-
Ich hab schonmal nen Programm mit MouseOverButton so geschrieben und es funktioniert immer nur wenn du grade mal SpeedyGonzales Konkurenz machen wilst flackert es ein bischen.
-
Und was machst Du, wenn man zu einer anderen Anwendung tabt dort irgendetwas macht und wieder zurücktabt. Diese Lösungvariante kannst Du auch mit random gleichsetzen - purer Zufall ob Dein Ereignis eintritt oder nicht.
Gruss
-
@Rostfrei[]: So weit hatte ich schon gar nicht gedacht, muß an der Hitze liegen...
Aber davon abgesehen:
Vielleicht bin ich ja vom Ego-Shooter zocken geschädigt, aber selbst mit einem 50 Pixel breiten Rahmen und - für mich - normaler Geschwindigkeit der Maus, funktioniert das die Hälfte der Zeit nicht.
-
Könnte man hier nicht MouseEnter/MouseLeave nutzen?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-98829.html
-
Hallo,
vielen Dank für eure Hilfe und den vielen Links. Habe die Beispiele durchgearbeitet, und eins in abgeänderten Form übernommen. Funktioniert prima.
Gruß Siegfried

-
unde wie hast du es jetzt gelöst?
-
Hallo,
also, welche Quelle ich genutzt habe, ???
in der Form.hclass TmyFormNewGleisbild : public TForm { // protected: void __fastcall CMMouseEnter(TMessage *Message); void __fastcall CMMouseLeave(TMessage *Message); //... public: // Anwender-Deklarationen BEGIN_MESSAGE_MAP MESSAGE_HANDLER(CM_MOUSEENTER, TMessage *, CMMouseEnter); MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage *, CMMouseLeave); END_MESSAGE_MAP(TForm); //... }; //---------------------------------------------------------------------------in der Form.cpp
void __fastcall TForm1::CMMouseEnter(TMessage* Message) { // } //--------------------------------------------------------------------------- void __fastcall TForm1::CMMouseLeave(TMessage* Message) { if (boActivate) { // boActivate if (FrameImageBar1->boImageFocus == true) { // FrameImageBar1->boImageFocus == true FrameImageBar1->DeleteFocusImage(); FrameImageBar1->boImageFocus = false; } // FrameImageBar1->boImageFocus == true } // boActivate boActivate = true; } //---------------------------------------------------------------------------in der Frame wird beim überfahren einer Image mit der Maus " boImageFocus " auf true gesetzt. Ist die Maus auserhalb der Frame, wird " TForm1::CMMouseLeave " abgearbeitet. Diese steuert in " FrameImageBar1->DeleteFocusImage(); " die deaktivierung der zuletzt aktiven Image auf der Frame.
es funktioniert.
Gruß Siegfried
