Einzelnen Beitrag anzeigen

Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#3

Re: Mauszeiger nach 3 Sekunden verschwinden lassen

  Alt 19. Sep 2004, 23:55
Zitat von zappel:
Nun möchte ich einbauen, dass die Maus unsichtbar wird, wenn man sie 3 Sekunden lang nicht bewegt. Dazu habe ich einen Timer eingebaut, der TForm.Cursor:=crNone setzt. Bei FormMouseMove folgt TForm.Cursor:=crDefault. Das klappt auch alles bis dahin super. (Nach dem auslösen der Timers wird er disabled und wieder bei FormMouseMove enabled, aerb das nur nebenbei.)
Warum setzt du den Cursor nicht mit Screen.Cursor?
Wenn du ein Image auf deiner Form hast, dann wird das MouseMove Ereignis der Form doch gar nicht ausgelöst. Besser wäre wenn du dafür das Ereignis OnMessage von TApplication auswerten würdest.
Hier mal ein simples Beispiel:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure OnAppMessage(var Msg: TMsg; var Handled: Boolean);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{--------------------------------------------------------------------------------------------------}

procedure TForm1.OnAppMessage(var Msg: TMsg; var Handled: Boolean);
begin

  Handled := False;

  if Msg.message <> WM_MOUSEMOVE then
    Exit;

  Screen.Cursor := crDefault;

  with Timer1 do
  begin
    Enabled := False;
    Enabled := True;
  end;

end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.FormCreate(Sender: TObject);
begin

  Application.OnMessage := OnAppMessage;

  with Timer1 do
  begin
    Interval := 3000;
    Enabled := True;
  end;

end;

{--------------------------------------------------------------------------------------------------}

procedure TForm1.Timer1Timer(Sender: TObject);
begin

  Screen.Cursor := crNone;

end;

{--------------------------------------------------------------------------------------------------}

end.
Muss da noch dazu sagen, das ich ein ganz großer Gegner von TTimer bin!!!
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat