panel2移动后如何讲panel2的left值写进edit1里?
时间:2011-11-18
来源:互联网
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel2EndDrag(Sender, Target: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{======================================================
任意摆布一个控件(拖动、放大、缩小)
=======================================================}
procedure ManipulateControl(WinControl: TWinControl; Shift: TShiftState; X, Y,
Precision: integer);//Precision:精度,该方法可以在onmousemove中调用
var
SC_MANIPULATE: Word;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最左侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
if (X <=Precision) and (Y> Precision) and (Y <WinControl.Height-Precision)then
begin
SC_MANIPULATE := $F001;
WinControl.Cursor := crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最右侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y> Precision) and
(Y <WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F002;
WinControl.Cursor := crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最上侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> Precision) and (X <WinControl.Width-Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F003;
WinControl.Cursor := crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的左上角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X <=Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F004;
WinControl.Cursor := crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的右上角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F005;
WinControl.Cursor := crSizeNESW;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最下侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> Precision) and (X <WinControl.Width-Precision) and
(Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F006;
WinControl.Cursor := crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的左下角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X <=Precision) and (Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F007;
WinControl.Cursor := crSizeNESW;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的右下角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F008;
WinControl.Cursor := crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的客户区(移动整个控件)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> 5) and (Y> 5) and (X <WinControl.Width-5) and (Y <WinControl.Height-5) then
begin
SC_MANIPULATE := $F009;
WinControl.Cursor := crSizeAll;
end
else
begin
SC_MANIPULATE := $F000;
WinControl.Cursor := crDefault;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
if Shift=[ssLeft] then
begin
ReleaseCapture;
WinControl.Perform(WM_SYSCOMMAND, SC_MANIPULATE, 0);
end;
end;
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ManipulateControl((Sender as TPanel), Shift, X, Y, 10);
end;
procedure TForm1.Panel2EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
edit1.text := inttostr(panel2.Left);
end;
end.
问题是如何实现panel2拖动后讲panel2的left值写进edit1里?
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
procedure Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel2EndDrag(Sender, Target: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{======================================================
任意摆布一个控件(拖动、放大、缩小)
=======================================================}
procedure ManipulateControl(WinControl: TWinControl; Shift: TShiftState; X, Y,
Precision: integer);//Precision:精度,该方法可以在onmousemove中调用
var
SC_MANIPULATE: Word;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最左侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
if (X <=Precision) and (Y> Precision) and (Y <WinControl.Height-Precision)then
begin
SC_MANIPULATE := $F001;
WinControl.Cursor := crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最右侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y> Precision) and
(Y <WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F002;
WinControl.Cursor := crSizeWE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最上侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> Precision) and (X <WinControl.Width-Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F003;
WinControl.Cursor := crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的左上角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X <=Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F004;
WinControl.Cursor := crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的右上角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y <=Precision) then
begin
SC_MANIPULATE := $F005;
WinControl.Cursor := crSizeNESW;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的最下侧
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> Precision) and (X <WinControl.Width-Precision) and
(Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F006;
WinControl.Cursor := crSizeNS;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的左下角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X <=Precision) and (Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F007;
WinControl.Cursor := crSizeNESW;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的右下角
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X >=WinControl.Width-Precision) and (Y >=WinControl.Height-Precision) then
begin
SC_MANIPULATE := $F008;
WinControl.Cursor := crSizeNWSE;
end
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//光标在控件的客户区(移动整个控件)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
else if (X> 5) and (Y> 5) and (X <WinControl.Width-5) and (Y <WinControl.Height-5) then
begin
SC_MANIPULATE := $F009;
WinControl.Cursor := crSizeAll;
end
else
begin
SC_MANIPULATE := $F000;
WinControl.Cursor := crDefault;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
if Shift=[ssLeft] then
begin
ReleaseCapture;
WinControl.Perform(WM_SYSCOMMAND, SC_MANIPULATE, 0);
end;
end;
procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ManipulateControl((Sender as TPanel), Shift, X, Y, 10);
end;
procedure TForm1.Panel2EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
edit1.text := inttostr(panel2.Left);
end;
end.
问题是如何实现panel2拖动后讲panel2的left值写进edit1里?
作者: aomiks 发布时间: 2011-11-18
edit1.text := inttostr(panel2.Left); ---> Panel2MouseMove
作者: sailxia 发布时间: 2011-11-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28