Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Maus ausblenden trotz TWebbrowser (https://www.delphipraxis.net/160117-maus-ausblenden-trotz-twebbrowser.html)

Jumpy 28. Apr 2011 13:28

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?

Klaus01 28. Apr 2011 13:40

AW: Maus ausblenden trotz TWebbrowser
 
Hallo,

keine Ahnung ob das auch für das Anszeigen gilt:
Zitat:

Place a TPanel on your form and drop the TWebBrowser on top of the TPanel. Then, change the TPanel's Enabled property to false. This will disable the use of the mouse inside the WebBrowser.
Quelle

Grüße
Klaus

Jumpy 28. Apr 2011 14:05

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.

hathor 28. Apr 2011 14:08

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) ;

Jumpy 28. Apr 2011 14:48

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;

hathor 28. Apr 2011 14:53

AW: Maus ausblenden trotz TWebbrowser
 
Mit einem Timer macht man das normalerweise nicht.

Restrict The Mouse Movement
http://delphi.about.com/od/vclusing/a/mouseadvanced.htm
.
Andere Lösung:
http://www.greatis.com/delphicb/tips...idecursor.html

Jumpy 28. Apr 2011 15:25

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.

Edlmann 28. Apr 2011 15:36

AW: Maus ausblenden trotz TWebbrowser
 
und ich würd vllt statt

Delphi-Quellcode:
if ((X-XOld)*(X-XOld)>2) And ((Y-YOld)*(Y-YOld)>2) then
das ganze so abfragen:

Delphi-Quellcode:
if ((X-XOld)*(X-XOld)+(Y-YOld)*(Y-YOld)>4) then
da ansonsten Bewegungen entlang einer Achse nicht interpretiert werden.

Jumpy 29. Apr 2011 07:22

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 05:35 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