我是靠谱客的博主 彩色黑夜,最近开发中收集的这篇文章主要介绍缩放 移动控件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//缩放 移动控件
//任意摆布一个控件
(
拖动、放大、缩小
) (2008-07-24 23:42:11) [编辑][删除]
//标签:杂谈
分类:编程
//
第一步,
先写出下面的函数
//==============================================================================
procedure
ManipulateControl(Control:
TControl;
Shift:
TShiftState;
X,
Y,
Precision:
integer);
var
SC_MANIPULATE:
Word;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的最左侧
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if
(X<=Precision)
and
(Y>Precision)
and
(Y<Control.Height-Precision)
then
begin
SC_MANIPULATE
:=
$F001;
Control.Cursor
:=
crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的最右侧
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>=Control.Width-Precision)
and
(Y>Precision)
and
(Y<Control.Height-Precision)
then
begin
SC_MANIPULATE
:=
$F002;
Control.Cursor
:=
crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的最上侧
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>Precision)
and
(X<Control.Width-Precision)
and
(Y<=Precision)
then
begin
SC_MANIPULATE
:=
$F003;
Control.Cursor
:=
crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的左上角
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X<=Precision)
and
(Y<=Precision)
then
begin
SC_MANIPULATE
:=
$F004;
Control.Cursor
:=
crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的右上角
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>=Control.Width-Precision)
and
(Y<=Precision)
then
begin
SC_MANIPULATE
:=
$F005;
Control.Cursor
:=
crSizeNESW
;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的最下侧
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>Precision)
and
(X<Control.Width-Precision)
and
(Y>=Control.Height-Precision)
then
begin
SC_MANIPULATE
:=
$F006;
Control.Cursor
:=
crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的左下角
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X<=Precision)
and
(Y>=Control.Height-Precision)
then
begin
SC_MANIPULATE
:=
$F007;
Control.Cursor
:=
crSizeNESW;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的右下角
**********************************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>=Control.Width-Precision)
and
(Y>=Control.Height-Precision)
then
begin
SC_MANIPULATE
:=
$F008;
Control.Cursor
:=
crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
光标在控件的客户区
(
移动整个控件
)******************************************
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
else
if
(X>5)
and
(Y>5)
and
(X<Control.Width-5)
and
(Y<Control.Height-5)
then
begin
SC_MANIPULATE
:=
$F009;
Control.Cursor
:=
crSizeAll;
end
else
begin
SC_MANIPULATE
:=
$F000;
Control.Cursor
:=
crDefault;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if
Shift=[ssLeft]
then
begin
ReleaseCapture;
Control.Perform(WM_SYSCOMMAND,
SC_MANIPULATE,
0);
end;
end;
//第二步,在mouseMove事件中调用上述函数
procedure TFormBing_Li.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
//
(Sender
as
TControl).Parent
ManipulateControl( self.Panel_Image,Shift, X, Y, 10);//10为精度
end;

最后

以上就是彩色黑夜为你收集整理的缩放 移动控件的全部内容,希望文章能够帮你解决缩放 移动控件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部