![]() |
Mauszeiger nach 3 Sekunden verschwinden lassen
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; |
Re: Mauszeiger nach 3 Sekunden verschwinden lassen
Zitat:
![]() Verstecke den Cursor doch mal mit:
Delphi-Quellcode:
ShowCursor(false);
|
Re: Mauszeiger nach 3 Sekunden verschwinden lassen
Zitat:
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:
Muss da noch dazu sagen, das ich ein ganz großer Gegner von TTimer bin!!!
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz