Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie schnell reagiert Delphi (https://www.delphipraxis.net/100563-wie-schnell-reagiert-delphi.html)

taktaky 30. Sep 2007 16:35


Wie schnell reagiert Delphi
 
Hallo,

was muss man tun, damit Delphi schnell reagiert ?
ich habe z.B. ein Panel1 erstellt, das auf MouseOver reagiert, leider wenn ich den Cursor darüber sehr schnell anfahre, dann passiert nichts, nur wenn ich den Cursor langsam bewege !!!
Delphi-Quellcode:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
ShowMessage('ich habe dich erwischt');
end;
Delphi kann nie den Cursor erwischen !!!


____

DeddyH 30. Sep 2007 17:05

Re: Wie schnell reagiert Delphi
 
Das ist kein Delphi- sondern ein Windows-Problem.

malo 30. Sep 2007 17:12

Re: Wie schnell reagiert Delphi
 
Kann ich nicht nachvollziehen. Habs grad mit WinXP Pro und D5 Pro ausprobiert und ich kann gar nicht schnell genug mit dem Cursor über das Panel huschen, dass keine Meldung erscheint. Vielleicht ist deine CPU-Auslastung einfach ziemlich hoch?

OregonGhost 30. Sep 2007 17:12

Re: Wie schnell reagiert Delphi
 
Wenn du den Cursor mal schnell bewegst, wirst du feststellen, dass er sich nicht flüssig von A nach B bewegt, sondern springt. Genauere Daten kommen nicht herein. Wenn dein Panel also genau zwischen zwei Mauspositionen liegt, bekommt es keine Meldung. Es gibt normalerweise auch keine Notwendigkeit, auf solche Bewegungen zu reagieren.

@malo, roter Kasten: Mach das Panel mal relativ klein, dann wirst du's schon sehen.

taktaky 30. Sep 2007 17:16

Re: Wie schnell reagiert Delphi
 
Zitat:

Zitat von DeddyH
Das ist kein Delphi- sondern ein Windows-Problem.

Ok, und was kann man dafür machen?
Ich habe versucht mit einem Timer das Problem zu lösen, leider immer noch nicht geschaft

---

DeddyH 30. Sep 2007 17:21

Re: Wie schnell reagiert Delphi
 
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if not PtInRect(Rect(Left,Top,Left + Width, Top + Height),Mouse.CursorPos) then
    Close;
end;
So z.B.

taktaky 30. Sep 2007 17:22

Re: Wie schnell reagiert Delphi
 
Zitat:

Zitat von malo
Kann ich nicht nachvollziehen. Habs grad mit WinXP Pro und D5 Pro ausprobiert und ich kann gar nicht schnell genug mit dem Cursor über das Panel huschen, dass keine Meldung erscheint. Vielleicht ist deine CPU-Auslastung einfach ziemlich hoch?

Vielleicht hast Du das Panel Breit gemacht. Mach das Panel klein wie ein Button und noch einmal ausprobieren

---

taktaky 30. Sep 2007 17:36

Re: Wie schnell reagiert Delphi
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if not PtInRect(Rect(Left,Top,Left + Width, Top + Height),Mouse.CursorPos) then
    Close;
end;
So z.B.

Schon ausprobiert und funktioniert sehr gut :thumb: .

Ich wollte den selben Code um das Form2 aufzurufen (und zu beenden), dann wird das Form2 zwar aufgerufen auch wenn ich sehr schnell den Cursor bewege, erscheint aber danach eine Fehlermeldung:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if PtInRect(Rect(Left,Top,Left + Width, Top + Height),Mouse.CursorPos) then
    Form2.ShowModal();
end;

DeddyH 30. Sep 2007 17:42

Re: Wie schnell reagiert Delphi
 
Das war der Code für Form2, um es beim Verlassen zu beenden (auch wenn Form1 da steht).

taktaky 30. Sep 2007 23:24

Re: Wie schnell reagiert Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja Form2 wird wie gewünscht beendet mit Timer1
Ich muss aber auch das Form2 mit einem anderen Timer genauso einblenden lassen

Wie kann ich nun Form2 aufrufen, wenn der Cursor auf Panel2 kommt?
Aber genuso mit einem anderen Timer und nicht so:
Delphi-Quellcode:
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  begin
Form2.ShowModal();

end;
Oder stimmt was @OregonGhost gesagt hat und können wir dafür nicht machen ?

Also mit dem Code kann ich Form2 einblenden, wenn der Cursor auf Form1 kommt.
Ich möchte aber das Form2 einblenden, wenn der Cursor auf Panel2 kommt und nicht auf Form1 :
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if PtInRect(Rect(Left,Top,Left + Width, Top + Height),Mouse.CursorPos) then
    Form2.ShowModal();
end;
Leider kann man keinen Timer auf Panel anlegen.


-----------


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.
Seite 1 von 2  1 2      

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