|
下面是TDragClass的源代码,比如多,可以拷去机上试试,再慢慢看:
//------TDragClass------------------------
unit uDrag;
interface
uses Windows, Messages,Classes,SysUtils,Controls,Graphics,
uDragPoint,StdCtrls;
type
//控件的八个点,用于拉动大小
TPointRec=record
LeftTop:TDragPoint;
LeftBottom:TDragPoint;
RightTop:TDragPoint;
RightButton:TDragPoint;
LeftMid:TDragPoint;
TopMid:TDragPoint;
RightMid:TDragPoint;
ButtonMid:TDragPoint;
end;
TDragClass=class
private
FConList:TList; //保存控件的列表
FCurActiveCon:Integer; //当前活动控件
FPointRec:TPointRec; //当前控件的边缘的八个小点
//跳跃式移动的成员
FisMoveStep:Boolean;
FMoveStep:integer;
MoveX,MoveY:integer;
//控件事件相关的成员
FConMouseDown:TMouseEvent;
FConMouseMove:TMouseMoveEvent;
FConMouseup:TMouseEvent;
isDown:Boolean;
prevP,nextP:TPoint;
protected
//-------对移动点的操作--
procedure CreateDragPoint(PointParent:TWinControl);
procedure SetPointPos(posRect:TRect);
procedure SetPointParent(PointParent:TWinControl);
procedure SetPointEvent;
procedure SetCurActiveCon(curCon:Pointer);
//----------------------
procedure MoveLeftTopPoint;
procedure AlignLeftTop;
procedure MoveLeftBottomPoint;
procedure AlignLeftBottom;
procedure MoveRightTopPoint;
procedure AlignRightTop;
procedure MoveRightBottomPoint;
procedure AlignRightBottom;
procedure MoveLeftMidPoint;
procedure AlignLeftMid;
procedure MoveTopMidPoint;
procedure AlignTopMid;
procedure MoveRightMidPoint;
procedure AlignRightMid;
procedure MoveBottomMidPoint;
procedure AlignBottomMid;
procedure reSizeCon;
//当前控件事件和移动点事件处理------------
procedure ConMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ConMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ConMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PointMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PointMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PointMouseUp(Sender: TObject; Butt [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> 没有相关教程
|