![]() |
Maus ausblenden trotz TWebbrowser
Hallo,
hab eine Mini Anwendung, die nur aus einem maximierten Form mit einem TWebbrowserelement drauf besteht. Dazu gibt es ein TStringList mit hinterlegten URLs und einen Timer, der alle Sekunde tickt und einen Zähler hochsetzt. Ereich der Zähler einen variablen Schwellenwert (z.Zt. 10) wird er zurückgesetzt und die nächste URL aus der Liste geladen und angezeigt. Das klappt alles soweit. Jetzt möchte ich aber (ähnl. wie im MediaPlayer) die Maus ausblenden, wenn sie 5 Sekunden nicht bewegt wurde. Hab dazu einen zweiten Zähler eingerichtet, der auch vom Timer hochgezählt wird. Ereicht dieser den Wert 5, wird über Screen.Cursor=-1 die Maus ausgeblendet. Im Ereignis OnMouseMove wird der Mauszeiger wieder eingeblendet (Screen.Cursor=1) und der Zähler für die Maus wieder auf 0 gesetzt. Die Idee dazu hab ich mir hier im Forum zusammengeklaut :-D Problem jetzt: Jedes mal wenn die URL wechselt / neue Webseite angezegt wird, wird das Ereignis auch ausgelöst. Das Umgehe ich umständlich, indem ich die Mausposition speichere und sehe ob sie sich nach dem MoveEvent "signifikant" bewegt hat und reagiere erst dann. Das klappt auch manchmal. Aber manchmal, wenn das Laden der Webseite lange dauert, wird aus der Cursor zur Sanduhr (ich denke das kommt vom TWebrowser? (auf jeden Fall nicht von mir)) und dabei wird er sichtbar, obwohl ich ihn ja nicht bewegt habe. Irgendwer 'ne Idee, wie man das lösen könnte? |
AW: Maus ausblenden trotz TWebbrowser
Hallo,
keine Ahnung ob das auch für das Anszeigen gilt: Zitat:
![]() Grüße Klaus |
AW: Maus ausblenden trotz TWebbrowser
Leider nein. Das hab ich nämlich schon drin, da ich nicht wollte, das auf Links geklickt werden kann.
Das Ganze soll ja nur zum Anzeigen einiger Seiten sein, nicht zum surfen. Das Verhalten tritt also auf, obwohl das Panel mit dem TWebBrowser drauf disabled ist. Der TWebBrowser selbst ist auch disabled, aber das scheint mir eh keine Auswirkungen zu haben. |
AW: Maus ausblenden trotz TWebbrowser
Delphi-Quellcode:
SetCursorPos(0,0); // oder irgendwo hin
r := BoundsRect; ClipCursor(@R);// dann sperre ihn ein ! //irgendwann später... //freigeben nicht vergessen: ClipCursor(nil) ; |
AW: Maus ausblenden trotz TWebbrowser
Habs mal versucht umzusetzen. Passiert aber nix. Weder wird der Mauszeiger versetzt, noch verschwindet er o.ä. Habs wohl nicht richtig verstanden:
Delphi-Quellcode:
procedure TBrowserMain.Timer1Timer(Sender: TObject);
var r:trect; begin //Cycle //[...] //Maus Ausblendung if Maus = 0 then begin SetCursorPos(0,0); // oder irgendwo hin r := BoundsRect; ClipCursor(@R);// dann sperre ihn ein ! end else Maus:=Maus-1; end; procedure TBrowserMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ((X-XOld)*(X-XOld)>2) And ((Y-YOld)*(Y-YOld)>2) then begin ClipCursor(nil); Maus:=5; end; XOld:=X; YOld:=Y; end; |
AW: Maus ausblenden trotz TWebbrowser
Mit einem Timer macht man das normalerweise nicht.
Restrict The Mouse Movement ![]() . Andere Lösung: ![]() |
AW: Maus ausblenden trotz TWebbrowser
Letzteres geht schon mal Ansatzweise. Nach Programmstart verschw. die Maus und kommt erst nach Mausemove wieder. Danach verschwindet sie aber nicht mehr. Vllt. ein Logikfehler. Experementier ich morgen mal weiter.
Vielen Dank schon mal soweit. |
AW: Maus ausblenden trotz TWebbrowser
und ich würd vllt statt
Delphi-Quellcode:
das ganze so abfragen:
if ((X-XOld)*(X-XOld)>2) And ((Y-YOld)*(Y-YOld)>2) then
Delphi-Quellcode:
da ansonsten Bewegungen entlang einer Achse nicht interpretiert werden.
if ((X-XOld)*(X-XOld)+(Y-YOld)*(Y-YOld)>4) then
|
AW: Maus ausblenden trotz TWebbrowser
Jo das macht Sinn. War bis jetzt nicht aufgefallen, da meine vor Frust zitternden Hände eh keine gerade Linie ziehen konnten. Bau ich ein. Danke.:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 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