模拟delphi编辑窗体操作控件。。。

翻译|其它|编辑:郝浩|2005-04-28 09:27:00.000|阅读 1315 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


程序代码如下所示:

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.

程序运行结果:


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP