Announcement

Collapse
No announcement yet.

OnMouseMove - nicht schnell genug???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OnMouseMove - nicht schnell genug???

    Hallo!
    Das OnMouseMove-Ereignis z.B. von TForm oder TPanel scheint auf schnelle Maus-Bewegungen nicht zu reagieren.
    In meinem Programm soll, wenn über ein Panel die Maus bewegt wird sich eine
    Image-Komponete ändern. Das tut sie aber nicht, wenn ich die Maus schnell über das Panel hinweg bewege.
    Wie kann das sein und was kann man dagegen tun?

    Viele Grüße,
    Jens

  • #2
    Liegt am Maustreiber und man nichts dagegen tun, außer am Maustreiber Einstellungen ändern (soweit vorhanden).

    Gruß Hage

    Comment


    • #3
      Naja, beim MainMenu z.B. tritt das Problem aber nicht auf:
      Sobald ich mit der Maus - egal wie schnell - einen Menu-Punkt verlasse, verschwindet auch die Hervorhebung (Um so was ähnliches geht's bei meinen Image-komponenten nämlich auch). Aber vielleicht steht dahinter ja ein ganz anderer Gedanke, als das Mit mousemove zu machen.

      Mfg Jen

      Comment


      • #4
        Ein Popupmenu ist pseudomodal, d.h. sobald es sichtbar wurde captured es die Maus. Es erlagt somit desktopweit die Kontrolle über die Maus. Andere Fenster bekommen daraufhin keinerlei Mausereignisse mehr, bzw. egal wo sich die Maus befindet, das Popupwindow bekommt es als erstes zugestellt. Daher ist es für ein Popupmenu ein leichtes, auch bei schnellen Bewegungen, festzustellen das die Maus weit außerhalb des Clientbereich's ist.<br>
        Aber versuche dies mal mit einem Mainmenu.

        Gruß Hage

        Comment


        • #5
          Letzlich ist es halt ein Problem das die Maus ein Datenpaket von sich gibt. Die resultierende MOUSEMOVE message landet halt bei der Control unter der Zielposition. War der Weg zu lang bekommt die Control dazwischen halt nichts mit.<br>
          Falls du uebrigens CM_MOUSEENTER und CM_MOUSELEAVE benutzt, so sei bei Popupmenues gewarnt. Bricht man das Menue mit ESC ab und die Maus steht ausserhalb deiner Control, so bekommt sie kein CM_MOUSELEAVE. Das ist ein VCL-Problem (zumindest bei Delphi 5)

          Comment

          Working...
          X