模拟delphi编辑窗体操作控件。。。
2006-02-04 14:14:20 来源:WEB开发网unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg;
const LMouseDown=False;
type
TForm1 = class(TForm)
Edit1: TEdit;
Panel2: TPanel;
Panel1: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Panel11: TPanel;
Panel22: TPanel;
Panel33: TPanel;
Panel44: TPanel;
Panel55: TPanel;
Panel66: TPanel;
Panel77: TPanel;
Panel88: TPanel;
Button1: TButton;
PRocedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s,a:boolean;
implementation
{$R *.dfm}
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;
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ManipulateControl((Sender as TControl), Shift, X, Y, 9);
edit1.Hint:='Edit1:TEdit'+chr(13)+'Origin:'+IntToStr(edit1.Top)+','
+IntToStr(edit1.Left)+';'+'Size:'+IntToStr(edit1.Width)+IntToStr(edit1.Height)+chr(13)+'Tab Stop:Ture;Order:0';
if s=true then
begin
a:=false;
panel1.Visible:=true; panel2.Visible:=true; panel3.Visible:=true;
panel4.Visible:=true; panel5.Visible:=true;
panel6.Visible:=true; panel7.Visible:=true; panel8.Visible:=true;
panel1.top:=edit1.Top-6;
panel1.Left:=edit1.Left-6;
panel2.Top:=edit1.Top+(edit1.Height div 2)-3;
panel2.Left:=edit1.Left-6;
panel3.Top:=edit1.Top+edit1.Height;
panel3.Left:=edit1.Left-6;
panel4.Top:=edit1.top-6;
panel4.Left:=edit1.Left+(edit1.Width div 2);
panel5.Top:=edit1.Top+edit1.Height;
panel5.Left:=edit1.Left+(edit1.Width div 2);
panel6.Top:=edit1.Top-6;
panel6.Left:=edit1.Left+edit1.Width;
panel7.Top:=edit1.Top+(edit1.Height div 2)-3;
panel7.Left:=edit1.Left+edit1.Width;
panel8.top:=edit1.Top+edit1.Height;
panel8.Left:=edit1.Left+edit1.Width;
end;
end;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
panel11.Visible:=false; panel22.Visible:=false; panel33.Visible:=false;
panel44.Visible:=false; panel55.Visible:=false;
panel66.Visible:=false; panel77.Visible:=false; panel88.Visible:=false;
s:=true;
a:=false;
panel1.Visible:=true; panel2.Visible:=true; panel3.Visible:=true;
panel4.Visible:=true; panel5.Visible:=true;
panel6.Visible:=true; panel7.Visible:=true; panel8.Visible:=true;
panel1.top:=edit1.Top-6;
panel1.Left:=edit1.Left-6;
panel2.Top:=edit1.Top+(edit1.Height div 2)-3;
panel2.Left:=edit1.Left-6;
panel3.Top:=edit1.Top+edit1.Height;
panel3.Left:=edit1.Left-6;
panel4.Top:=edit1.top-6;
panel4.Left:=edit1.Left+(edit1.Width div 2);
panel5.Top:=edit1.Top+edit1.Height;
panel5.Left:=edit1.Left+(edit1.Width div 2);
panel6.Top:=edit1.Top-6;
panel6.Left:=edit1.Left+edit1.Width;
panel7.Top:=edit1.Top+(edit1.Height div 2)-3;
panel7.Left:=edit1.Left+edit1.Width;
panel8.top:=edit1.Top+edit1.Height;
panel8.Left:=edit1.Left+edit1.Width;
end;
procedure TForm1.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if s=true then
begin
a:=false;
s:=false;
panel1.Visible:=true; panel2.Visible:=true; panel3.Visible:=true;
panel4.Visible:=true; panel5.Visible:=true;
panel6.Visible:=true; panel7.Visible:=true; panel8.Visible:=true;
panel1.top:=edit1.Top-6;
panel1.Left:=edit1.Left-6;
panel2.Top:=edit1.Top+(edit1.Height div 2)-3;
panel2.Left:=edit1.Left-6;
panel3.Top:=edit1.Top+edit1.Height;
panel3.Left:=edit1.Left-6;
panel4.Top:=edit1.top-6;
panel4.Left:=edit1.Left+(edit1.Width div 2);
panel5.Top:=edit1.Top+edit1.Height;
panel5.Left:=edit1.Left+(edit1.Width div 2);
panel6.Top:=edit1.Top-6;
panel6.Left:=edit1.Left+edit1.Width;
panel7.Top:=edit1.Top+(edit1.Height div 2)-3;
panel7.Left:=edit1.Left+edit1.Width;
panel8.top:=edit1.Top+edit1.Height;
panel8.Left:=edit1.Left+edit1.Width;
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
a:=false;
s:=false;
panel1.Visible:=false; panel2.Visible:=false; panel3.Visible:=false;
panel4.Visible:=false; panel5.Visible:=false;
panel6.Visible:=false; panel7.Visible:=false; panel8.Visible:=false;
//**********
panel11.Visible:=false; panel22.Visible:=false; panel33.Visible:=false;
panel44.Visible:=false; panel55.Visible:=false;
panel66.Visible:=false; panel77.Visible:=false; panel88.Visible:=false;
end;
procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin if a=true then
begin
a:=false;
s:=false;
panel1.Visible:=false; panel2.Visible:=false; panel3.Visible:=false;
panel4.Visible:=false; panel5.Visible:=false;
panel6.Visible:=false; panel7.Visible:=false; panel8.Visible:=false;
panel11.Visible:=true;
panel22.Visible:=true;
panel33.Visible:=true;
panel44.Visible:=true;
panel55.Visible:=true;
panel66.Visible:=true;
panel77.Visible:=true;
panel88.Visible:=true;
panel11.top:=Button1.Top-6;
panel11.Left:=Button1.Left-6;
panel22.Top:=Button1.Top+(Button1.Height div 2)-3;
panel22.Left:=Button1.Left-6;
panel33.Top:=Button1.Top+Button1.Height;
panel33.Left:=Button1.Left-6;
panel44.Top:=Button1.top-6;
panel44.Left:=Button1.Left+(Button1.Width div 2);
panel55.Top:=Button1.Top+Button1.Height;
panel55.Left:=Button1.Left+(Button1.Width div 2);
panel66.Top:=Button1.Top-6;
panel66.Left:=Button1.Left+Button1.Width;
panel77.Top:=Button1.Top+(Button1.Height div 2)-3;
panel77.Left:=Button1.Left+Button1.Width;
panel88.top:=Button1.Top+Button1.Height;
panel88.Left:=Button1.Left+Button1.Width;
end;
end;
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
a:=true;
s:=false;
panel1.Visible:=false; panel2.Visible:=false; panel3.Visible:=false;
panel4.Visible:=false; panel5.Visible:=false;
panel6.Visible:=false; panel7.Visible:=false; panel8.Visible:=false;
panel11.Visible:=true; panel22.Visible:=true; panel33.Visible:=true;
panel44.Visible:=true; panel55.Visible:=true;
panel66.Visible:=true; panel77.Visible:=true; panel88.Visible:=true;
panel11.top:=Button1.Top-6;
panel11.Left:=Button1.Left-6;
panel22.Top:=Button1.Top+(Button1.Height div 2)-3;
panel22.Left:=Button1.Left-6;
panel33.Top:=Button1.Top+Button1.Height;
panel33.Left:=Button1.Left-6;
panel44.Top:=Button1.top-6;
panel44.Left:=Button1.Left+(Button1.Width div 2);
panel55.Top:=Button1.Top+Button1.Height;
panel55.Left:=Button1.Left+(Button1.Width div 2);
panel66.Top:=Button1.Top-6;
panel66.Left:=Button1.Left+Button1.Width;
panel77.Top:=Button1.Top+(Button1.Height div 2)-3;
panel77.Left:=Button1.Left+Button1.Width;
panel88.top:=Button1.Top+Button1.Height;
panel88.Left:=Button1.Left+Button1.Width;
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
ManipulateControl((Sender as TControl), Shift, X, Y, 9);
edit1.Hint:='Button1:TButton'+chr(13)+'Origin:'+IntToStr(Button1.Top)+','
+IntToStr(Button1.Left)+';'+'Size:'+IntToStr(Button1.Width)+IntToStr(Button1.Height)+chr(13)+'Tab Stop:Ture;Order:0';
if a=true then
begin
s:=false;
panel1.Visible:=false; panel2.Visible:=false; panel3.Visible:=false;
panel4.Visible:=false; panel5.Visible:=false;
panel6.Visible:=false; panel7.Visible:=false; panel8.Visible:=false;
panel11.Visible:=true; panel22.Visible:=true; panel33.Visible:=true;
panel44.Visible:=true; panel55.Visible:=true;
panel66.Visible:=true; panel77.Visible:=true; panel88.Visible:=true;
panel11.top:=Button1.Top-6;
panel11.Left:=Button1.Left-6;
panel22.Top:=Button1.Top+(Button1.Height div 2)-3;
panel22.Left:=Button1.Left-6;
panel33.Top:=Button1.Top+Button1.Height;
panel33.Left:=Button1.Left-6;
panel44.Top:=Button1.top-6;
panel44.Left:=Button1.Left+(Button1.Width div 2);
panel55.Top:=Button1.Top+Button1.Height;
panel55.Left:=Button1.Left+(Button1.Width div 2);
panel66.Top:=Button1.Top-6;
panel66.Left:=Button1.Left+Button1.Width;
panel77.Top:=Button1.Top+(Button1.Height div 2)-3;
panel77.Left:=Button1.Left+Button1.Width;
panel88.top:=Button1.Top+Button1.Height;
panel88.Left:=Button1.Left+Button1.Width;
end;
end;
end.
- ››Delphi实现把10进制转换成16进制的函数进制转化
- ››Delphi中将字符串按给定字符分隔(似split函数功能...
- ››Delphi 动态创建窗体,锁定窗口赋值
- ››Delphi 与 VC 共享接口和对象
- ››Delphi图像处理 -- 表面模糊
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
- ››Delphi接口详述
- ››delphi 远程调试
- ››Delphi与DirectX之DelphiX(34): TDIB.Lightness()...
- ››Delphi Application.MessageBox详解
- ››Delphi只能运行一个程序实例的两种方法
更多精彩
赞助商链接