You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.7 KiB
Plaintext
119 lines
3.7 KiB
Plaintext
//*******************************************************//
|
|
// //
|
|
// DelphiFlash.com //
|
|
// Copyright (c) 2004 FeatherySoft, Inc. //
|
|
// info@delphiflash.com //
|
|
// //
|
|
//*******************************************************//
|
|
|
|
// Description: Extended ShockwaveFlash visual control
|
|
// Last date update: 9 mar 2004
|
|
|
|
unit ShockwaveEx;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, SysUtils, Classes, Controls, OleCtrls, ShockwaveFlashObjects_TLB,
|
|
Messages{$IFNDEF VER130}, Types{$ENDIF};
|
|
|
|
type
|
|
TShockwaveFlashEx = class(TShockwaveFlash)
|
|
private
|
|
FOnMouseDown: TMouseEvent;
|
|
FOnMouseUp: TMouseEvent;
|
|
FOnMouseMove: TMouseMoveEvent;
|
|
FOnClick: TNotifyEvent;
|
|
fLockMouseClick: boolean;
|
|
WasDown: boolean;
|
|
protected
|
|
procedure WndProc(var Message:TMessage); override;
|
|
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
|
|
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
|
|
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
|
|
procedure Click; override;
|
|
public
|
|
Procedure CreateWnd; override;
|
|
published
|
|
property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
|
|
property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
|
|
property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
|
|
property OnClick: TNotifyEvent read FOnClick write FOnClick;
|
|
property LockMouseClick: boolean read fLockMouseClick write fLockMouseClick default false;
|
|
end;
|
|
|
|
procedure Register;
|
|
|
|
implementation
|
|
|
|
Procedure TShockwaveFlashEx.CreateWnd;
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
procedure TShockwaveFlashEx.WndProc(var Message:TMessage);
|
|
Var x,y: integer;
|
|
xy: TPoint;
|
|
begin
|
|
if not (csDesigning in ComponentState) then
|
|
begin
|
|
x:=TSmallPoint(Message.LParam).x;
|
|
y:=TSmallPoint(Message.LParam).y;
|
|
Case Message.Msg of
|
|
CM_MOUSELEAVE: WasDown:=false;
|
|
WM_LBUTTONDOWN: begin MouseDown(mbLeft,[],x,y); WasDown:=true; end;
|
|
WM_RBUTTONDOWN: WasDown:=true;
|
|
WM_RBUTTONUP: if (PopupMenu<>nil) and (WasDown) Then
|
|
begin
|
|
WasDown:=false;
|
|
xy.X:=x;
|
|
xy.Y:=y;
|
|
xy:=ClientToScreen(xy);
|
|
PopupMenu.Popup(xy.X,xy.Y);
|
|
end;
|
|
WM_LBUTTONUP: begin MouseUp(mbLeft,[],x,y); WasDown:=false; end;
|
|
WM_MOUSEMOVE: MouseMove([],x,y);
|
|
end;
|
|
if (((Message.Msg=WM_RBUTTONDOWN) or (Message.Msg=WM_RBUTTONDOWN)) and (not Menu)) or
|
|
(((Message.Msg=WM_RBUTTONUP) or (Message.Msg=WM_LBUTTONUP)) and (fLockMouseClick))
|
|
then Message.Result := 0
|
|
else inherited WndProc(Message);
|
|
Exit;
|
|
end;
|
|
inherited WndProc(Message);
|
|
end;
|
|
|
|
procedure TShockwaveFlashEx.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if Assigned(FOnMouseDown) then
|
|
begin
|
|
FOnMouseDown(Self, Button, Shift, X, Y);
|
|
end;
|
|
end;
|
|
|
|
procedure TShockwaveFlashEx.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if Assigned(FOnMouseUp) then
|
|
begin
|
|
FOnMouseUp(Self, Button, Shift, X, Y);
|
|
end;
|
|
if WasDown Then Click;
|
|
end;
|
|
|
|
procedure TShockwaveFlashEx.MouseMove(Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
if Assigned(FOnMouseMove) then FOnMouseMove(Self, Shift, X, Y);
|
|
end;
|
|
|
|
procedure TShockwaveFlashEx.Click;
|
|
begin
|
|
if Assigned(FOnClick) then FOnClick(Self);
|
|
end;
|
|
|
|
procedure Register;
|
|
begin
|
|
RegisterComponents('Flash', [TShockwaveFlashEx]);
|
|
end;
|
|
|
|
end.
|