AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maus ausblenden trotz TWebbrowser

Ein Thema von Jumpy · begonnen am 28. Apr 2011 · letzter Beitrag vom 29. Apr 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#1

Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 14:28
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

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?
Ralph
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 14:40
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
Klaus
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 15:05
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.
Ralph
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 15:08
Delphi-Quellcode:
SetCursorPos(0,0); // oder irgendwo hin
r := BoundsRect;
    ClipCursor(@R);// dann sperre ihn ein !
//irgendwann später...
//freigeben nicht vergessen:
ClipCursor(nil) ;

Geändert von hathor (28. Apr 2011 um 15:12 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 15:48
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;
Ralph
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 15:53
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

Geändert von hathor (28. Apr 2011 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 16:25
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.
Ralph
  Mit Zitat antworten Zitat
Edlmann

Registriert seit: 19. Nov 2010
212 Beiträge
 
#8

AW: Maus ausblenden trotz TWebbrowser

  Alt 28. Apr 2011, 16:36
und ich würd vllt statt

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

if ((X-XOld)*(X-XOld)+(Y-YOld)*(Y-YOld)>4) then da ansonsten Bewegungen entlang einer Achse nicht interpretiert werden.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Maus ausblenden trotz TWebbrowser

  Alt 29. Apr 2011, 08:22
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.
Ralph
  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 11:57 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