Autor Beitrag
Rool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Di 14.01.03 22:00 
TAnimate hat kein MouseMove bzw. Click-Ereigniss!! Wie kann ich es trotzdem abfangen? Ich will nicht einfacj n Timer benutzen und dauernd die Maus-Position bzw. Button-Status abfragen. Da muss es doch was besseres geben!

_________________
MFG Rool
Ecthelion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Di 14.01.03 22:26 
Wie macht man das überhaupt, dass beim mausklick auf dem desktop die Koordinaten abgefragt werden? Irgendwie antwortet niemand auf meinen Thread, ich glaub dein Problem is ähnlich...
Rool Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Mi 15.01.03 15:35 
Titel: GetAsyncKeyState / unsichtbares TWinControl
Mit GetAsyncKeyState kann man fragen ob die Maus gedrückt ist, das ist in diesem Fall (bei mir aber nicht sehr hilfreich)
Erst dachte ich, man könne ein unsichtbares Image über die TAnimate-Komponente legen und dann dessen Click bzw MouseMove Prozedur benutzen, aber da TImage von TGraphicControl abgeleitet ist und kein eigenes Fenster ist, kann es nicht ÜBER einer TWinControl-Komponente schweben!!!
Kann man denn ein unsichtbares TWinControl machen??

_________________
MFG Rool
Rool Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Mi 15.01.03 15:37 
Titel: Schlechte Lösung
Habs jetzt so (mit nem Timer (grrrrrrrrrrrr)):
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
if PtInRect(Rect(aniJR.clienttoscreen(aniJR.ClientRect.TopLeft),aniJR.clienttoscreen(aniJR.ClientRect.BottomRight)),Mouse.CursorPos) then begin 
aniJR.Active:=true; 
if GetAsyncKeyState(VK_LBUTTON)<>0 then ShellExecute(Handle,'open','http://www.myhomepage.de',nil,nil,0) 
end 
else 
aniJR.Active:=false;

Aber das ist der absolute Müll, denn auch wenn irgendein fremdes Fenster im Vordergrund ist und ich zufällig in dieser Position etwas anklicke, startet ein Browser mit der Page!! Wie kann man das machen?

Moderiert von user profile iconTino: Code-Tags hinzugefügt.

_________________
MFG Rool
Rool Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 211



BeitragVerfasst: Do 16.01.03 21:06 
Titel: LÖSUNG!
OK, fals es noch jemanden interssiert, hab einfach ne neue Klasse von TAnimate abgeleitet (hätt ich auch früher drauf kommen können!!! :autsch:)

Hier der komplette Code:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
unit EventAnimate;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ComCtrls;

type
  TEventAnimate = class(TAnimate)
  private
    FClick: TNotifyEvent;
    FMouseMove: TMouseMoveEvent;
    FMouseUp: TMouseEvent;
    FMouseDown: TMouseEvent;
    FMouseEnter: TNotifyEvent;
    FMouseLeave: TNotifyEvent;
    
    { Private-Deklarationen }
    
  protected
    { Protected-Deklarationen }
    procedure Click; override;
    procedure MouseMove(Shift: TShiftState; X,
      Y: Integer); override;
    procedure MouseDown(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); override;
    procedure MouseEnter(var M: TMessage); message cm_MouseEnter;
    procedure MouseLeave(var M: TMessage); message cm_MouseLeave;
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
    property OnClick: TNotifyEvent read FClick write FClick;
    property OnMouseMove: TMouseMoveEvent read FMouseMove write FMouseMove;
    property OnMouseDown: TMouseEvent read FMouseDown write FMouseDown;
    property OnMouseUp: TMouseEvent read FMouseUp write FMouseUp;
    property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter;
    property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TEventAnimate]);
end;

{ TEventAnimate }

procedure TEventAnimate.Click;
begin
     if Assigned(FClick) then FClick(self)
end;


procedure TEventAnimate.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  if Assigned(FMouseDown) then FMouseDown(self,Button,Shift,x,y)
end;

procedure TEventAnimate.MouseEnter;
begin
  if assigned(FMouseEnter) then FMouseEnter(self);
end;

procedure TEventAnimate.MouseLeave(var M: TMessage);
begin
  if assigned(FMouseLeave) then FMouseLeave(self);
end;

procedure TEventAnimate.MouseMove;
begin
  inherited;
  if Assigned(FMouseMove) then FMouseMove(self,Shift,x,y)
end;

procedure TEventAnimate.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  if Assigned(FMouseUp) then FMouseUp(self,Button,Shift,x,y)
end;


end.


Moderiert von user profile iconTino: Code-Tags hinzugefügt.

_________________
MFG Rool