AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mauszeiger nach 3 Sekunden verschwinden lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Mauszeiger nach 3 Sekunden verschwinden lassen

Ein Thema von zappel · begonnen am 19. Sep 2004 · letzter Beitrag vom 19. Sep 2004
Antwort Antwort
zappel

Registriert seit: 30. Jan 2004
65 Beiträge
 
Delphi 2005 Personal
 
#1

Mauszeiger nach 3 Sekunden verschwinden lassen

  Alt 19. Sep 2004, 21:35
Hallo!

Ich bin gerade dabei, einen kleinen Bildschirmschoner mit Diashow zu basteln. 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.)

Das Gleiche möchte ich nun mit einem Image machen, da der Zeiger auch verschwinden soll, wenn er sich unbewegt auf dem Bild befindet. Das klappt allerdings nicht, der Zeiger bleibt sichtbar. Ich habe schon herausgefunden, dass er, wenn ich ihn nach mehr als 3 Sekunden wieder bewege, ganz kurz unsichtbar wird, dann aber sofort wieder erscheint...

Kann mir irgendwer mit meinem Problem helfen, habe hier in der DP nichts passendes gefunden.

Delphi-Quellcode:
procedure TForm1.TimerMouseTimer(Sender: TObject);
begin
  Image1.Cursor:=crNone;
  TimerMouse.Enabled:=false;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Cursor:=crArrow;
  TimerMouse.Enabled:=true;
end;
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#2

Re: Mauszeiger nach 3 Sekunden verschwinden lassen

  Alt 19. Sep 2004, 22:23
Zitat von zappel:
Kann mir irgendwer mit meinem Problem helfen, habe hier in der DP nichts passendes gefunden.
Wenn man nach Hier im Forum suchenmauszeiger verstecken sucht findet man aber etwas

Verstecke den Cursor doch mal mit:

ShowCursor(false);
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
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, 22: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz