Announcement

Collapse
No announcement yet.

MouseMove

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

  • MouseMove

    <html>

    <head>
    <meta http-equiv="Content-Language" content="de">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>Neue Seite 1</title>
    </head>

    <body>

    <p>Wie kann ich feststellen, daß sich die Mouse <b><font color="#FF0000">nicht</font></b>
    mehr über einem Objekt befindet.</p>
    <p>Ich verwende ein OnMouseMove Event, bei dem ich zwar feststellen kann, daß
    sich die Mouse über einem Objekt befindet, aber es gibt nichts, womit ich
    feststellen kann, daß die Mouse das Objekt wieder verläßt. Das Objekt ist ein
    TLabel. Kann sein, daß man mit sowas keine WM_CAPTURECHANGED abfangen kann.
    Aber vielleicht gibt es doch eine Möglichkeit die einer von euch weiß. Wäre
    für Hilfe sehr dankbar.</p>
    <p>Gruß Roman</p>

    </body>

    </html>

  • #2
    Hallo Roman,

    es gibt Messages, die das für Dich erledigen. Hier ein Beispiel für eine von TPanel abgeleitete Komponente, die Dir weiterhelfen wird:

    <pre>
    unit TestPanel;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls;

    type
    TTestPanel = class(TPanel)
    private
    { Private-Deklarationen }
    procedure CMMouseEnter (var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave (var Message: TMessage); message CM_MOUSELEAVE;
    protected
    { Protected-Deklarationen }
    public
    { Public-Deklarationen }
    published
    { Published-Deklarationen }
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('Zusätzlich', [TTestPanel]);
    end;

    { TTestPanel }

    procedure TTestPanel.CMMouseEnter(var Message: TMessage);
    begin
    inherited;
    Caption := 'Maus in Panel';
    end;

    procedure TTestPanel.CMMouseLeave(var Message: TMessage);
    begin
    inherited;
    Caption := 'keine Maus gefunden';
    end;
    end.
    </pre>

    Viel Erfolg

    Comment


    • #3
      Danke Uli für deine prompte Hilfe. Jetzt habe ich eine Version für Delphi. Ich bin gespannt, ob ich diese Struktur auch für den C++ Builder übernehmen kann.

      Gruß Roma

      Comment


      • #4
        Hallo Uli,

        sind CM_MOUSEENTER und CM_MOUSELEAVE selbstdefinierte Messages oder gibts die schon in Delphi. Wenn diese jedoch selbstdefiniert sind, über was werden diese Messages oder Ereignisse ausgelöst?

        Gruß Roma

        Comment


        • #5
          Hallo Roman,

          die messages sind in Delphi definiert. Schau dir doch mal den Quelltext von Controls.pas an und suche dort nach "CM_MOUSEENTER". Dort findest du alles Wissenswerte.

          Gruß Uli

          P.S. Einen Tipp von Andreas Kosch gebe ich gerne weiter: In Windows die Suchfunktion (Dateien/Ordner) benutzen und im Feld "Enthaltener Text" z.B. CM_MOUSEENTER eingeben. So findet man (fast) alles

          Comment

          Working...
          X