AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OnMouseMove verzögern

Ein Thema von faux · begonnen am 2. Aug 2006 · letzter Beitrag vom 3. Aug 2006
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#11

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 00:01


Würd mich wundern, wenn das nicht im TWinControl schon drin ist...

Alle Komponenten, die ich mir grad angeschaut habe (TPageControl, TPanel, TCategoryButtons) haben beide Ereignisse.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 00:02
Zitat:
aber das wars dann auch schon
Meinst?

Delphi-Quellcode:
type
  tmyPanel = class(TPanel)
  public
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ tmyPanel }

procedure tmyPanel.CMMouseEnter(var Message: TMessage);
begin
  Form1.Caption := 'CMMouseEnter';
end;

procedure tmyPanel.CMMouseLeave(var Message: TMessage);
begin
  Form1.Caption := 'CMMouseLeave';
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  mPanel: TPanel;
begin
  mPanel := tmyPanel.Create(Self);
  with mPanel do
  begin
    Name := 'myPanel';
    Parent := Self;
    Left := 10;
    Top := 10;
    Width := 185;
    Height := 41;
    Caption := 'Panel1';
    TabOrder := 0;
  end;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 00:10
Zitat von DGL-luke:
Alle Komponenten, die ich mir grad angeschaut habe (TPageControl, TPanel, TCategoryButtons) haben beide Ereignisse.
Dann vielleicht bei Delphi 2006, aber nich bei meinem D7.
Da gibts nur OnMouseMove.

@sniper_w:
Ja, natürlich.
Diese zwei Ereignisse kann man sich leicht selber bauen, aber von Haus aus sind die wohl nur beim TLabel dabei...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 19:29
Hallo!

Ja, ich will erst dann reagieren, wenn der Cursor mindestens eine bestimmte Zeit auf meinem SysTray-Icon ist (welches ich übrigens mit TJvTrayIcon realisieren (dort gibts kein OnMouseEnter/Leave)).

Zitat von DGL-luke:
ich würd im OnMouseMove einen Timer starten, wenn dieser beendet ist und die Maus immernoch über dem Control, kann man den Hint anzeigen (oder was immer man machen will).
Ja, so habe ich mir das auch gedacht, nur: Geht das nicht auch ohne Timer? Und wie prüfe ich, ob das Event noch immer zutrift, also der Cursor noch immer auf dem Icon ist?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#15

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 19:50
das hab ich doch in meinem Edit schon geschrieben. Implementiere einfach die Messages, die sniper_w genannt hat, falls sie noch nicht in deiner wunschkomponente vorhanden sind.

Dann:

- im OnMouseEnter Timer starten
- im OnMouseLeave Timer beenden
- im OnTimer Aktion starten (meinetwegen Hint anzeigen oder w/ever)

Ohne Timer? Du brauchst irgendwas, mit dem du die Zeit misst... und eine timer-message ist da sehr bequem.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 20:15
Zitat von DGL-luke:
Ohne Timer? Du brauchst irgendwas, mit dem du die Zeit misst... und eine timer-message ist da sehr bequem.
Naja, dachte eher daran, obs da vielleicht eine Möglichkeit gibt, ein Event daraus zu machen. Ev. die Windows Hover Funktion zu benutzen oder so.


Zitat von DGL-luke:
Dann:
- im OnMouseEnter Timer starten
- im OnMouseLeave Timer beenden
- im OnTimer Aktion starten (meinetwegen Hint anzeigen oder w/ever)
Meine Kompo hat diese Events nicht.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#17

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 20:24
Zitat von faux:
Meine Kompo hat diese Events nicht.


Was hab ich denn drüber geschrieben? Du sollst die Messages implementieren. Du weisst nicht, das bedeutet?

Delphi-Quellcode:
type
  tmyPanel = class(TPanel)
  public
    FMouseLeave, FMouseEnter: TNotifyEvent;
   
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

    constructor Create(AOwner: TComponent); override;
  published
    property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter;
    property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeaver;
  end;

implementation

{$R *.dfm}

{ tmyPanel }

procedure tmyPanel.CMMouseEnter(var Message: TMessage);
begin
  if Assigned(OnMouseEnter) then
    OnMouseEnter(self);
end;

procedure tmyPanel.CMMouseLeave(var Message: TMessage);
begin
  if Assigned(OnMouseLeave) then
    OnMouseEnter(self);
end;

procedure tmyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  OnMouseEnter := nil;
  OnMouseLeave := nil;
end;

end.
Sonst noch Wünsche? Soll ich dir n heisses Bad einlassen?

EDIT: Seitenhieb entfernt.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 20:26
Zitat von DGL-luke:
Soll ich dir n heisses Bad einlassen?
Ja, wäre sicherlich kein Fehler...

@Topic:
Jo, sorry, da hab ich mich etwas verlesen.
Joa, so werd ichs machen. Danke.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#19

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 20:31
Sorry... hab das entfernt.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: OnMouseMove verzögern

  Alt 3. Aug 2006, 21:32
Wies scheint hab ich da was falsch gemacht. Es funktioniert nicht. :S

Delphi-Quellcode:
unit Unit2;

interface

uses
  Messages, Classes, Controls, JvTrayIcon;

type
  TCustomJvTrayIcon = class(TJvTrayIcon)
  private
    FMouseEnter, FMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter;
    property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeave;
  end;

implementation

procedure TCustomJvTrayIcon.CMMouseEnter(var Message: TMessage);
begin
  if Assigned(FMouseEnter) then
    OnMouseEnter(Self);
end;

procedure TCustomJvTrayIcon.CMMouseLeave(var Message: TMessage);
begin
  if Assigned(FMouseLeave) then
    OnMouseLeave(Self);
end;

constructor TCustomJvTrayIcon.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  OnMouseEnter := nil;
  OnMouseLeave := nil;
end;

end.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TrayIcon := TCustomJvTrayIcon.Create(Self);
  TrayIcon.Active := True;
  TrayIcon.OnMouseEnter := TrayIconMouseEnter;
  TrayIcon.OnMouseLeave := TrayIconMouseLeave;
end;

procedure TForm1.TrayIconMouseEnter(Sender: TObject);
begin
  Label1.Caption := 'Entered';
end;

procedure TForm1.TrayIconMouseLeave(Sender: TObject);
begin
  Label1.Caption := 'Left';
end;
Woran liegt das?!

Ich weiß, ich werf' euch jetzt einfach so nen Code hin, so nach dem Motto sucht den Fehler, aber ich habe leider keinen Plan wo der Fehelr liegen kann.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:08 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