Delphi实现控件的移动、改变大小

Delphi仿IDE的窗体控件拖动及改变大小 内容索引:Delphi源码,界面编程,控件,拖动  Delphi仿IDE的窗体控件拖动及改变大小,也就是说这是个用Delphi写的程序,模拟Delphi7编辑器的控件元素放置、拖动、改变大小的功能,在本程序的运行界面上,你只需单击鼠标就可以动态添加一个按钮元素,并在按钮的四周显示拖拉线,拖动这些线就可以改变元素大小,就像是在使用Delphi的编辑器功能一样。 立即下载
关键词:实现控件的移动、改变大小

实现控件的移动,改变大小(DELPHI实现)

主要使用Perform方法
  function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
  
只要能够使用类似于win32API的函数SendMessage(),本方法同样可在其他环境里应用。

用Delphi实现
首先,建立一个应用程序,在一个窗体里加入一个Panel1,保存为main.pas;
然后,分别在Panel1的鼠标移动、鼠标按下事件里添加代码;
鼠标移动:控制光标的形状
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (x>=0)and(x<=3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNWSE;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crSizeWE;
    if (y>=Panel1.Height-3)and(y<=Panel1.Height) then Panel1.Cursor:=crSizeNESW;
  end
  else if (x>3)and(x<Panel1.Width-3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNS;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crArrow;
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Cursor:=crSizeNS;
  end
  else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNESW;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crSizeWE;
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Cursor:=crSizeNWSE;
  end;
end;

鼠标按下:控制Panel的大小或位置
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  if (x>=0)and(x<=3) then
  begin
    file://左上角方向改变大小
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F004,0);
    file://左侧
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F001,0);
    file://左下角
    if (y>=Panel1.Height-3)and(y<=Panel1.Height) then Panel1.Perform(WM_SysCommand,$F007,0);
  end
  else if (x>3)and(x<Panel1.Width-3) then
  begin
    file://上侧
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F003,0);
    file://移动控件
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F012,0);
    file://下侧
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F006,0);
  end
  else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
  begin
    file://右上角
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F005,0);
    file://右侧
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F002,0);
    file://右下角
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F008,0);
  end;
end;
主要使用 Perform 方法为

附录1.全部代码如下:

unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  if (x>=0)and(x<=3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F004,0);
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F001,0);
    if (y>=Panel1.Height-3)and(y<=Panel1.Height) then Panel1.Perform(WM_SysCommand,$F007,0);
  end
  else if (x>3)and(x<Panel1.Width-3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F003,0);
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F012,0);
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F006,0);
  end
  else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
  begin
    if (y>=0)and(y<=3) then Panel1.Perform(WM_SysCommand,$F005,0);
    if (y>3)and(y<Panel1.Height-3) then Panel1.Perform(WM_SysCommand,$F002,0);
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Perform(WM_SysCommand,$F008,0);
  end;
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (x>=0)and(x<=3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNWSE;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crSizeWE;
    if (y>=Panel1.Height-3)and(y<=Panel1.Height) then Panel1.Cursor:=crSizeNESW;
  end
  else if (x>3)and(x<Panel1.Width-3) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNS;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crArrow;
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Cursor:=crSizeNS;
  end
  else if (x>=Panel1.Width-3)and(x<=Panel1.Width) then
  begin
    if (y>=0)and(y<=3) then Panel1.Cursor:=crSizeNESW;
    if (y>3)and(y<Panel1.Height-3) then Panel1.Cursor:=crSizeWE;
    if (y>=Panel1.Height-3)and(y<=Panel1.Width) then Panel1.Cursor:=crSizeNWSE;
  end;
end;

附录2.API SendMessage()介绍
SendMessage === user32.lib
LRESULT SendMessage(

    HWND hWnd, // handle of destination window
    UINT Msg, // message to send
    WPARAM wParam, // first message parameter
    LPARAM lParam  // second message parameter
   );

 

delphi 程序运行 动态创建控件可以拖放 delphi 程序运行 动态创建控件可以拖放 打家可以参考下 立即下载

相关推荐

move panel (可移动panel ) delphi 控件

可移动panel 效果 控件 move panel (可移动panel ) delphi 控件

Delphi 拖动、拖放控件

拖动时,控件跟随光标拖动。

smkf225的博客 1419

Delphi实现控件拖动及改变大小

自己根据别人总结出来的三种控件的拖动及更改控件大小的方法.

控件移动类的实现

Delphi的IDE是本身就是一个非常精彩的软件,其中涵含了许多非常宝贵的软件知识。IDE中有一个窗体设计器,控件放在里面,就可以随意移动,以及调整大小,如果能够自己实现一个类似于这样的窗体设计器,那真是一件非常美妙事情。本文实现的就是窗体设计器中最重要的部分,一个移动控件的类,控件要求从TControl继承下来,在介绍如何实现之前,先说说这个类的用法:其中有两个类:TDragClass就是实现拉

xzmyzy的专栏 669

Delphi实现窗体元素拖动改变大小的实例.rar

Delphi实现窗体元素拖动改变大小的实例,也就是可以把窗体中的元素控件按照一定需求拉大或缩小,在本程序实现的窗口中单击鼠标就可以动态添加一个按钮元素,并在按钮四周显示拖放控制线,拖动控制线就可以改变元素大小,就像在Delphi中编辑控制的功能。

Delphi实现拖动按钮移动无标题栏窗口

摘要:Delphi源码,界面编程,窗体拖动,无标题栏 无标题栏的窗体的拖动功能实现,Delphi添加一个可拖动窗体的按钮,通过对此按钮的控制可移动窗体,实现按住标题栏移动窗口的功能,无标题栏也就不能显示最大化、最小化和关闭窗口的功能,因此本程序自定义了一个关闭窗口的方法,那就是长按ESC键可关闭本窗口。 运行环境:Windows/Delphi7

实现控件的移动、改变大小(DELPHI实现)

 实现控件的移动,改变大小(DELPHI实现)主要使用Perform方法  function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;  只要能够使用类似于win32API的函数SendMessage(),本方法同样可在其他环境里应用。用Delphi实现首先,建立一个应用程序,在一个窗体里加入一个Panel1,保

yandong_mars的专栏 1237

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了STM32硬件SPI驱动W5500以太网模块的全流程,包括硬件架构设计、SPI接口选型、官方驱动移植、网络协议栈配置与优化等关键步骤。通过实战案例和性能对比数据,帮助开发者快速实现稳定高效的网络连接,特别提供了常见问题排查指南和性能调优技巧。

weixin_29194693的博客 268

实现控件的移动、改变大小(DELPHI实现) (转)

实现控件的移动、改变大小(DELPHI实现) (转)[@more@] 实现控件的移动,改变大小(Delphi实现) 主要使用Perform方法 function Perform(Msg: Cardinal; WParam...

cuiji1279的博客 209

嵌入式电机控制实战:手把手教你实现I/F强拖启动(附仿真代码)

本文详细介绍了嵌入式电机控制中的I/F强拖启动技术,通过参数配置、代码实现和仿真验证的完整流程,帮助开发者掌握永磁同步电机(PMSM)的高效启动方法。文章包含硬件平台搭建、参数整定黄金法则及MATLAB/Simulink仿真验证,适合工业自动化和智能设备领域的工程师参考。

rust6ferris的博客 911

手把手教你用C#和LibUsbDotNet实现USB设备通信(含完整代码示例)

本文详细介绍了如何使用C#和LibUsbDotNet库实现USB设备通信,包括设备识别、连接建立、同步/异步数据读写等核心操作。通过完整的代码示例,开发者可以快速掌握USB通信的关键技术,适用于工业自动化、医疗设备等多种场景。重点讲解了数据读写优化和错误处理技巧,帮助提升通信效率和可靠性。

a3b4c5的博客 706

实现控件的移动,改变大小(DELPHI实现)

实现控件的移动,改变大小(DELPHI实现)主要使用Perform方法  function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;  只要能够使用类似于win32API的函数SendMessage(),本方法同样可在其他环境里应用。用Delphi实现首先,建立一个应用程序,在一个窗体里加入一个Panel1,保存为m

jinzhili的专栏 4166

从SolidWorks到Simulink:手把手教你用URDF文件搭建六轴机械臂仿真模型(含STL文件配置避坑)

本文详细介绍了从SolidWorks到Simulink的六轴机械臂URDF仿真全流程,包括URDF文件导出、Simscape模型生成与调试、动力学参数获取与验证等关键步骤。重点解决了STL文件配置、关节接口设置等工程化难题,帮助开发者高效构建可控制的数字孪生体。通过实战案例和优化技巧,提升机械臂仿真效率与准确性。

weixin_26812607的博客 266

控件的移动、改变大小(DELPHI实现)

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Panel1: TPanel; proc...

weixin_30546189的博客 289

ANSYS命令流黑箱揭秘:流体渗透压力载荷的七种收敛优化策略

本文深入解析ANSYS Workbench中流体渗透压力载荷的七种收敛优化策略,重点探讨接触探测点迭代逻辑、PPCN阈值动态调整及FPAT参数优化等关键技术。通过命令流示例和实战技巧,帮助工程师有效解决流体与结构相互作用仿真中的收敛难题,提升计算效率和精度。

weixin_29274337的博客 523

【unity小技巧】新输入系统InputSystem游戏运行中改键重新绑定控制按键(最全最完美解决方案)

在游戏开发中,控制输入是至关重要的一环。Unity的新输入系统(Input System)为开发者提供了强大的工具来管理和处理用户输入,不仅支持各种平台上的多种输入设备,还能轻松处理复杂的输入操作和映射。本文将深入探讨如何使用Unity的新输入系统重新绑定控制按键,为开发者提供一套全面且完善的解决方案。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7359

实现移动和改变控件大小的代码

(Demo只演示了在四个角进行拖放控制大小和移动控件的操作) unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; typeTForm1 = class(TForm)CheckBox1: TCheckBox;...

44

DICOM图像知识:深入详解DICOM的层级关系

解析DICOM的四个主要层级:Patient(患者)、Study(检查)、Series(序列)和SOP(服务-对象对),探讨它们之间的关系、各自的唯一标识符以及在实际应用中的用途

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3305

Delphi 运行时 可拖动控件

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) btn1: TButton; Main1: TIm

solosu00的专栏 1442

Xinference新手指南(一个命令直接安装成功)

对于新手,必须得学会使用docker部署,这是基本功!这里就不过多去介绍了,如果评论要出教程的话,以后再出了。

Ven%的博客 819

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TControl自由移动变化大小 assigned(Panel1.onMouseMoe)判断修改移动事件

procedure ManipulateControl(Control: TControl; Shift: TShiftState; X, Y, Precision: integer);var Form1: TForm1;implementation{$R *.dfm}// 任意改变一个控件 ( 拖动、放大、缩小 )procedure ManipulateControl(Control: T...

weixin_30287169的博客 125

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

delphi 运行时拖动控件

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) btn1: TButton; Main1: TIm...

weixin_30419799的博客 144

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Delphi控制窗体

限制窗体不能移动 1.声明。 procedure WMWindowPosChanging(var Msg: TWMWindowPosMsg); message WM_WINDOWPOSCHANGING; 2.函数实现 procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosMsg); var Wind...

weixin_34248849的博客 157

delphi 控件移动_如何在运行时移动和调整控件大小(在Delphi应用程序中)

delphi 控件移动 Here's how to enable dragging and resizing controls (on a Delphi form) with a mouse, while the application is running. 以下是在应用程序运行时如何使用鼠标启用拖动和调整控件大小(在Delphi窗体上)的方法。 运行时的表单编辑器 ( Form E...

cumao2792的博客 1658

Delphi实现控件拖动及改变大小:提升应用程序交互性的利器

Delphi实现控件拖动及改变大小:提升应用程序交互性的利器 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,用户交互体验一直是评价一个应用程序好坏的重要标准之一。Delphi作为一种经典的编程语言,其强大的控件功能为开发者提供了无限的创作空间。本文将为您详细介绍一个开源项目——Delphi实现控件拖动及改变大小,帮助您提升应用程序的交互性。 项目介绍 Delph...

gitblog_06750的博客 953
上一篇: 记忆Delphi窗体上控件的位置和大小
下一篇: delphi控件使用
delphi308
博客等级 码龄18年 148粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值