Announcement

Collapse
No announcement yet.

im timer - maus bewegt

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

  • im timer - maus bewegt

    hi leute,

    es muss doch möglich sein, in einem timer mit <b>getcursorpos</b> abzufragen <b>ob</b> soch die maus bewegt hat und wenn nein einen bestimmten code ausführen, aber wie?

    gruß

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo MArkus,<br>
    wie wäre es denn damit:<br>
    <pre>
    <font face="Verdana" size="1" color="#000000">unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private-Deklarationen }
    FOldMousePos : TPoint;
    procedure CheckMousePos;
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.CheckMousePos;
    var
    NewMousePos : TPoint;
    begin
    Label1.Caption:='X: '+IntToStr(FOldMousePos.X)+' Y: '+IntToStr(FOldMousePos.Y);
    GetCursorPos(NewMousePos);
    NewMousePos:=ScreenToClient(NewMousePos);
    Label2.Caption:='X: '+IntToStr(NewMousePos.X)+' Y: '+IntToStr(NewMousePos.Y);
    If (NewMousePos.X&lt;&gt;FOldMousePos.X) or (NewMousePos.Y&lt;&gt;FOldMousePos.Y) then
    Label3.Caption:='Maus hat sich bewegt'
    else
    Label3.Caption:='Maus hat sich nicht bewegt';
    FOldMousePos:=NewMousePos;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    CheckMousePos;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    GetCursorPos(FOldMousePos);
    FOldMOusePos:=ScreenToClient(FOldMOusePos);
    end;

    end.</font>
    </pre&gt

    Comment


    • #3
      hi jens,

      weiß nicht ob das geht!<br>
      so habe ich es probiert:<br>

      <pre>
      <code><font size=3 face="Courier New"><font color="#000000"><b>procedure </b>TFrmMain_Mausmanager.Maustools1MouseMessage(Send er: TObject;
      Button: <b>String</b>);
      <b>var
      </b>p : tpoint;
      <b>begin

      </b>GetCursorPos(p);
      <b>IF </b>(abs(p.x-mausposition.x) &gt; 9) <b>or </b>(abs(p.y-mausposition.y) &gt; 9) <b>or
      </b>(abs(mausposition.x-p.x) &gt; 9) <b>or </b>(abs(mausposition.y-p.y) &gt; 9) <b>then begin

      if </b>chbeinrastfunktion.Checked <b>then begin

      </b>//wenn die maus linkshändig ist kann man mit der rechten maustaste einrasten
      <b>if </b>Radiolinks.Checked <b>then begin
      if </b>button = 'Rechts' <b>then begin
      </b>Maustools1.RechtsEinrasten := true;
      color := clblue;
      ico:=ticon.create;
      ImageList1.GetIcon (2, Application.Icon);
      ImageList1.GetIcon (2,ico);
      TrayIcon1.Icon := ico;
      ico.Destroy;
      <b>end</b>;

      <b>if </b>button = 'Links' <b>then begin
      </b>Maustools1.RechtsEinrasten := false;
      color := clBtnFace;
      ico:=ticon.create;
      ImageList1.GetIcon (0, Application.Icon);
      ImageList1.GetIcon (0,ico);
      TrayIcon1.Icon := ico;
      ico.Destroy;
      <b>end</b>;
      <b>end else

      </b>//wenn die maus rechtshändig ist kann man mit der linken maustaste einrasten
      <b>if </b>Radiorechts.Checked <b>then begin
      if </b>button = 'Links' <b>then begin
      </b>Maustools1.LinksEinrasten := true;
      color := clblue;
      ico:=ticon.create;
      ImageList1.GetIcon (1, Application.Icon);
      ImageList1.GetIcon (1,ico);
      TrayIcon1.Icon := ico;
      ico.Destroy;
      <b>end</b>;

      <b>if </b>button = 'Rechts' <b>then begin
      </b>Maustools1.LinksEinrasten := false;
      color := clBtnFace;
      ico:=ticon.create;
      ImageList1.GetIcon (0, Application.Icon);
      ImageList1.GetIcon (0,ico);
      TrayIcon1.Icon := ico;
      ico.Destroy;
      <b>end</b>;
      <b>end</b>;

      <b>end</b>;
      <b>end</b>;

      </font>
      </code></pre&gt
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        hi jens,

        weiß nicht ob das geht!<br>
        so habe ich es probiert:<br>

        <pre>
        <code><font size=3 face="Courier New"><font color="#000000"><b>procedure </b>TFrmMain_Mausmanager.Maustools1MouseMessage(Send er: TObject;
        Button: <b>String</b>);
        <b>var
        </b>p : tpoint;
        <b>begin

        </b>GetCursorPos(p);
        <b>IF </b>(abs(p.x-mausposition.x) &gt; 9) <b>or </b>(abs(p.y-mausposition.y) &gt; 9) <b>or
        </b>(abs(mausposition.x-p.x) &gt; 9) <b>or </b>(abs(mausposition.y-p.y) &gt; 9) <b>then begin

        if </b>chbeinrastfunktion.Checked <b>then begin

        </b>//wenn die maus linkshändig ist kann man mit der rechten maustaste einrasten
        <b>if </b>Radiolinks.Checked <b>then begin
        if </b>button = 'Rechts' <b>then begin
        </b>Maustools1.RechtsEinrasten := true;
        color := clblue;
        ico:=ticon.create;
        ImageList1.GetIcon (2, Application.Icon);
        ImageList1.GetIcon (2,ico);
        TrayIcon1.Icon := ico;
        ico.Destroy;
        <b>end</b>;

        <b>if </b>button = 'Links' <b>then begin
        </b>Maustools1.RechtsEinrasten := false;
        color := clBtnFace;
        ico:=ticon.create;
        ImageList1.GetIcon (0, Application.Icon);
        ImageList1.GetIcon (0,ico);
        TrayIcon1.Icon := ico;
        ico.Destroy;
        <b>end</b>;
        <b>end else

        </b>//wenn die maus rechtshändig ist kann man mit der linken maustaste einrasten
        <b>if </b>Radiorechts.Checked <b>then begin
        if </b>button = 'Links' <b>then begin
        </b>Maustools1.LinksEinrasten := true;
        color := clblue;
        ico:=ticon.create;
        ImageList1.GetIcon (1, Application.Icon);
        ImageList1.GetIcon (1,ico);
        TrayIcon1.Icon := ico;
        ico.Destroy;
        <b>end</b>;

        <b>if </b>button = 'Rechts' <b>then begin
        </b>Maustools1.LinksEinrasten := false;
        color := clBtnFace;
        ico:=ticon.create;
        ImageList1.GetIcon (0, Application.Icon);
        ImageList1.GetIcon (0,ico);
        TrayIcon1.Icon := ico;
        ico.Destroy;
        <b>end</b>;
        <b>end</b>;

        <b>end</b>;

        GetCursorPos(mausposition);
        <b>end</b>;

        </font>
        </code></pre&gt
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          bei deinem code wird halt GetCursorPos(FOldMousePos); nur im create aufgerufen! ist bißchen wenig oder?

          gruß

          marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hallo Markus,<br>nein das ist nicht richtig. GetCursorPos wird an zwei Stellen auf gerufen. Unteranderem auch in CheckMousePos<br>Wenn MousePosition die absoluten Screenkoordinaten enthält sollte es funktionieren.<br>;-) Aber warum stellst Du hier eine Frage, wenn Du die Lösung schön hast

            Comment


            • #7
              meine lösung tut nicht!!!!

              gruß

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Hallo Markus,<br>evt. musst Du MousePosition nachdem Vergleich mit der aktuellen Mausposition eben auf diese setzen

                Comment


                • #9
                  hi jens,

                  habe da ein funktion draus gemacht:<br>

                  <pre>
                  <code><font size=3 face="Courier New"><font color="#000000"><b>function </b>TFrmMain_Mausmanager.CheckMousePos : boolean;
                  <b>begin
                  </b>result := false;
                  GetCursorPos(NeueMausPosition);
                  NeueMausPosition:=ScreenToClient(NeueMausPosition) ;
                  <b>If </b>(NeueMausPosition.X&lt;&gt;AlteMausPosition.X) <b>or </b>(NeueMausPosition.Y&lt;&gt;AlteMausPosition.Y) <b>then begin
                  </b>AlteMausPosition:=NeueMausPosition;
                  result := true;
                  <b>end</b>;
                  <b>end</b>;

                  </font>
                  </code></pre>

                  und wenn man die im timer aufruft:<br>
                  if not CheckMousePos then FrmMain_Mausmanager.color := clblue;

                  scheint es zu gehen!

                  gruß

                  marku
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment

                  Working...
                  X