翻译|其它|编辑:郝浩|2005-02-03 11:46:00.000|阅读 1431 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
接前面部分
procedure TDragClass.AlignLeftTop;
begin
FPointRec.LeftBottom.Left:=FPointRec.LeftTop.Left;
FPointRec.RightTop.Top:=FPointRec.LeftTop.Top;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//对齐点
procedure TDragClass.AlignLeftBottom;
begin
FPointRec.LeftTop.Left:=FPointRec.LeftBottom.Left;
FPointRec.RightButton.Top:=FPointRec.LeftBottom.Top;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
FPointRec.ButtonMid.Top:=FPointrec.LeftBottom.Top;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//移动左底点
procedure TDragClass.MoveLeftBottomPoint;
var offsetX,offsetY:Integer;
begin
GetCursorPos(FPointRec.LeftBottom.NextP);
offsetX:=FPointRec.LeftBottom.NextP.X-FPointRec.LeftBottom.PrevP.X;
offSetY:=FPointRec.LeftBottom.NextP.Y-FPointRec.LeftBottom.PrevP.Y;
if not FisMoveStep then
begin
FPointRec.LeftBottom.Left:=FPointRec.LeftBottom.Left+offsetX;
FPointRec.LeftBottom.Top:=FPointRec.LeftBottom.Top+offsetY;
end
else begin
MoveX:=MoveX+offsetX;
MoveY:=MoveY+offsetY;
if Abs(moveX)>=FMoveStep then
begin
FPointRec.LeftBottom.Left:=FPointRec.LeftBottom.Left+moveX;
moveX:=0;
end;
if Abs(moveY)>=FMoveStep then
begin
FPointRec.LeftBottom.Top:=FPointRec.LeftBottom.Top+moveY;
movey:=0;
end;
end;
FPointRec.LeftBottom.PrevP:=FPointRec.LeftBottom.NextP;
AlignLeftBottom;
end;
//对齐点
procedure TDragClass.AlignRightTop;
begin
FPointRec.LeftTop.Top:=FPointRec.RightTop.top;
FPointRec.RightButton.Left:=FPointRec.RightTop.Left;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.RightMid.Left:=FPointRec.RightTop.Left;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
FPointRec.ButtonMid.Top:=FPointrec.LeftBottom.Top;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//移动右上点
procedure TDragClass.MoveRightTopPoint;
var offsetX,offsetY:Integer;
begin
GetCursorPos(FPointRec.RightTop.NextP);
offsetX:=FPointRec.RightTop.NextP.X-FPointRec.RightTop.PrevP.X;
offSetY:=FPointRec.RightTop.NextP.Y-FPointRec.RightTop.PrevP.Y;
if not FisMoveStep then
begin
FPointRec.RightTop.Left:=FPointRec.RightTop.Left+offsetX;
FPointRec.RightTop.Top:=FPointRec.RightTop.Top+offsetY;
end
else begin
MoveX:=MoveX+offsetX;
MoveY:=MoveY+offsetY;
if Abs(moveX)>=FMoveStep then
begin
FPointRec.RightTop.Left:=FPointRec.RightTop.Left+moveX;
moveX:=0;
end;
if Abs(moveY)>=FMoveStep then
begin
FPointRec.RightTop.Top:=FPointRec.RightTop.Top+moveY;
moveY:=0;
end;
end;
FPointRec.RightTop.PrevP:=FPointRec.RightTop.NextP;
AlignRightTop;
end;
//对齐点
procedure TDragClass.AlignRightBottom;
begin
FPointRec.LeftBottom.Top:=FPointRec.RightButton.top;
FPointRec.RightTop.Left:=FPointRec.RightButton.Left;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.RightMid.Left:=FPointRec.RightTop.Left;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
FPointRec.ButtonMid.Top:=FPointrec.LeftBottom.Top;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//移动右底点
procedure TDragClass.MoveRightBottomPoint;
var offsetX,offsetY:Integer;
begin
GetCursorPos(FPointRec.RightButton.NextP);
offsetX:=FPointRec.RightButton.NextP.X-FPointRec.RightButton.PrevP.X;
offSetY:=FPointRec.RightButton.NextP.Y-FPointRec.RightButton.PrevP.Y;
if not FisMoveStep then
begin
FPointRec.RightButton.Left:=FPointRec.RightButton.Left+offsetX;
FPointRec.RightButton.Top:=FPointRec.RightButton.Top+offsetY;
end
else begin
MoveX:=MoveX+offsetX;
MoveY:=MoveY+offsetY;
if Abs(moveX)>=FMoveStep then
begin
FPointRec.RightButton.Left:=FPointRec.RightButton.Left+moveX;
moveX:=0;
end;
if Abs(moveY)>=FMoveStep then
begin
FPointRec.RightButton.Top:=FPointRec.RightButton.Top+moveY;
moveY:=0;
end;
end;
FPointRec.RightButton.PrevP:=FPointRec.RightButton.NextP;
AlignRightBottom;
end;
//对齐点
procedure TDragClass.AlignLeftMid;
begin
FPointRec.LeftTop.Left:=FPointRec.LeftMid.Left;
FPointRec.LeftBottom.Left:=FPointRec.LeftMid.Left;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.ButtonMid.Top:=FPointrec.LeftBottom.Top;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//左中点
procedure TDragClass.MoveLeftMidPoint;
var offsetX:Integer;
begin
GetCursorPos(FPointRec.LeftMid.NextP);
offsetX:=FPointRec.LeftMid.NextP.X-FPointRec.LeftMid.PrevP.X;
if not FisMoveStep then
begin
FPointRec.LeftMid.Left:=FPointRec.LeftMid.Left+offsetX;
end
else begin
MoveX:=MoveX+offsetX;
if Abs(moveX)>=FMoveStep then
begin
FPointRec.LeftMid.Left:=FPointRec.LeftMid.Left+moveX;
moveX:=0;
end;
end;
FPointRec.LeftMid.PrevP:=FPointRec.LeftMid.NextP;
AlignLeftMid;
end;
//对齐点
procedure TDragClass.AlignTopMid;
begin
FPointRec.LeftTop.Top:=FPointRec.TopMid.Top;
FPointRec.RightTop.Top:=FPointRec.TopMid.Top;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.RightMid.Left:=FPointRec.RightTop.Left;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
end;
//顶中点
procedure TDragClass.MoveTopMidPoint;
var offsetY:Integer;
begin
GetCursorPos(FPointRec.TopMid.NextP);
offSetY:=FPointRec.TopMid.NextP.Y-FPointRec.TopMid.PrevP.Y;
if not FisMoveStep then
begin
FPointRec.TopMid.Top:=FPointRec.TopMid.Top+offsetY;
end
else begin
MoveY:=MoveY+offsetY;
if Abs(moveY)>=FMoveStep then
begin
FPointRec.TopMid.Top:=FPointRec.TopMid.Top+moveY;
moveY:=0;
end;
end;
FPointRec.TopMid.PrevP:=FPointRec.TopMid.NextP;
AlignTopMid;
end;
//对齐点
procedure TDragClass.AlignRightMid;
begin
FPointRec.RightTop.Left:=FPointRec.RightMid.Left;
FPointRec.RightButton.Left:=FPointRec.RightMid.Left;
FPointRec.TopMid.Top:=FPointRec.LeftTop.Top;
FPointRec.TopMid.Left:=
(FPointRec.RightTop.Left+FPointRec.LeftTop.Left) div 2;
FPointRec.ButtonMid.Top:=FPointrec.LeftBottom.Top;
FPointRec.ButtonMid.Left:=
(FPointRec.LeftBottom.Left+FPointRec.RightButton.Left) div 2;
end;
//右中点
procedure TDragClass.MoveRightMidPoint;
var offsetX:Integer;
begin
GetCursorPos(FPointRec.RightMid.NextP);
offsetX:=FPointRec.RightMid.NextP.X-FPointRec.RightMid.PrevP.X;
if not FisMoveStep then
begin
FPointRec.RightMid.Left:=FPointRec.RightMid.Left+offsetX;
end
else begin
MoveX:=MoveX+offsetX;
if Abs(moveX)>=FMoveStep then
begin
FPointRec.RightMid.Left:=FPointRec.RightMid.Left+moveX;
moveX:=0;
end;
end;
FPointRec.RightMid.PrevP:=FPointRec.RightMid.NextP;
AlignRightMid;
end;
//对齐点
procedure TDragClass.AlignBottomMid;
begin
FPointRec.LeftBottom.Top:=FPointRec.ButtonMid.Top;
FPointRec.RightButton.Top:=FPointrec.ButtonMid.Top;
FPointRec.LeftMid.Left:=FPointRec.LeftTop.Left;
FPointRec.LeftMid.Top:=
(FPointRec.LeftBottom.Top+FPointRec.LeftTop.Top) div 2;
FPointRec.RightMid.Left:=FPointRec.RightTop.Left;
FPointRec.RightMid.Top:=
(FPointRec.RightTop.Top+FPointRec.RightButton.Top) div 2;
end;
//底中点
procedure TDragClass.MoveBottomMidPoint;
var offsetY:Integer;
begin
GetCursorPos(FPointRec.ButtonMid.NextP);
offSetY:=FPointRec.ButtonMid.NextP.Y-FPointRec.ButtonMid.PrevP.Y;
if not FisMoveStep then
begin
FPointRec.ButtonMid.Top:=FPointRec.ButtonMid.Top+offsetY;
end
else begin
MoveY:=MoveY+offsetY;
if Abs(moveY)>=FMoveStep then
begin
FPointRec.ButtonMid.Top:=FPointRec.ButtonMid.Top+moveY;
moveY:=0;
end;
end;
FPointRec.ButtonMid.PrevP:=FPointRec.ButtonMid.NextP;
AlignBottomMid;
end;
//重定位控件的尽寸
procedure TDragClass.reSizeCon;
var Con:TControl;
begin
Con:=TControl(FConList.Items[FCurActiveCon]);
Con.Left:=FPointRec.LeftTop.Left+FPointRec.LeftTop.Width;
Con.Top:=FPointRec.LeftTop.Top+FPointRec.LeftTop.Height;
Con.Width:=FPointRec.RightTop.Left-Con.Left;
Con.Height:=FPointRec.LeftBottom.Top-Con.Top;
end;
//-----------------------------------------------
//设置控件移动时是否用跳跃式的移动
procedure TDragClass.SetisMoveStep(value: Boolean);
begin
if FisMoveStep<>value then
FisMoveStep:=Value;
end;
//设置控件移动跳跃的距离
procedure TDragClass.SetMoveStep(value: integer);
begin
if Value<5 then
FMoveStep:=5
else if Value>20 then
FMoveStep:=20
else
FMoveStep:=Value;
end;
end.
到第三部分,用一个例子来说明这个类的用法
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com