Delphi7 窗口停靠效果

[delphi教程]delphi开发教程全攻略(1) 如何在Image上提示字符? 怎样加入tb2k FastReport4.0安装后中文的问题。 怎样单独得到现在的年和月?? [考题]这两种字符串赋值语句有什么区别 TXmlDocument控件使用问题 急急急!!!网络数据通讯问题(多线程如何解决???) 关于保存一个Record类型到文件中的问题 如何使窗体在用户按下显示桌面之后不会隐藏(不是将它始终置前)谢谢各位 大家好,请D 阅读详情

 

实现目的:

       实现MainForm中对DockForm的停靠,相当于VC中的工具栏停靠。

      

结果先让大家看看:

 (靠!看不到!)

说明:

       在开始停靠的时候我们先了解一下下停靠在Delphi7,在Delphi7中原来就有对Form等有依靠功能,分别是以下属性:

属性

值

说明

DrawMode

dmAutomatic

是否是拖放

DrawKind

dkDock

拖拽,停靠方法

DockSite

true

是否允许被停靠

 

 

 

了解了以上属性我们再来了解一下下停靠的几个过程:

1.OnDockOver(Sender: TObject;                   

Source: TDragDockObject;

      X, Y: Integer;

State: TDragState; var Accept: Boolean);//当你把要停放的对象划过停放区时会有的效果

你一定希望会有一个框可以让你看到停放后会有什么效果吧

2.OnDockDrop(Sender: TObject; Source: TDragDockObject;

      X, Y: Integer);//当你放手让你要把停放的东西停放下来时也就是最后时出现的效果

       你一定会希望他可以停放出一个你希望的效果吧

3.OnGetSiteInfo(Sender: TObject; DockClient: TControl;

      var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);//这是在移动时触发的

4.OnStartDock(Sender: TObject;

      var DragObject: TDragDockObject);//开始放工具栏时你希望出现的效果

5.OnEndDock(Sender, Target: TObject; X, Y: Integer);//放好工具栏时你希望出现的效果

6.OnUnDock(Sender: TObject; Client: TControl;

      NewTarget: TWinControl; var Allow: Boolean);//当你移走你的工具栏时希望有的效果

在以上上面的几个函数最重要的是onDockOver,onDockDrop和OnUnDock这是必要的东西的几个过程

OnDockOver(Sender: TObject;                 

Source: TDragDockObject;//这是你要停靠的信息信息,其停靠效果全由他来定

      X, Y: Integer; //这是鼠标所在的地方

State: TDragState;//这里可以判断你当前的动作是进入还是移出

 var Accept: Boolean);//Accept这是为false就是不可以停靠,为true就是可以停靠。

 

介绍上了面大家应该还是不很理解吧!那我在进一步解说我说的程序,你可以在我上传的代码中找到你想要的程序(“停靠窗口”)。

我在这里说明我是如何处理的:

       第一步:在MainForm(我的MainForm就是你们的form1)中加入一个LeftDockPanel(是你们的Panel1)再加入一个LeftSplitter(是你们的Splitter)除了MainForm外其他的Align都设置为alLeft全是靠左边的,LeftDockPanel的width设置为0不要让别人看到他,我们主要是让dockForm(这是你们的form2)放置在LeftDockPanel上,做到一个假的停靠效果。对了属性还没有设置把LeftDockPanel的dockSite设置为true让别人可以依靠。DockForm的Drawkind设置为dkDock,还有DrawMode设置为dmAutomatic。好累完事了第一步。

       第二步:现在是代码啦

procedure TMainForm.LeftDockPanelDockOver(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer; State: TDragState;

  var Accept: Boolean);

  var

  ARect:TRect;

begin

  Accept:=true;

  ARect.TopLeft:=LeftDockPanel.ClientToScreen(Point(0,0));

  ARect.BottomRight:=LeftDockPanel.ClientToScreen(

  Point(Self.ClientWidth div 3, LeftDockPanel.Height));

  Source.DockRect:=ARect;

end;

 

procedure TMainForm.LeftDockPanelDockDrop(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer);

begin

  LeftDockPanel.Width:=ClientWidth div 3;

  LeftSplitter.Left:=LeftDockPanel.Width+LeftSplitter.Width;

end;

以上代码是在LeftDockPanel中的event找到的DockOver和DockDrop两个方法。加上以上代码试一试,MainForm和DockForm我就不介绍怎么动态创建了在我上传的代码里面有!

 

 

第三步:不是还有很onunDock没做么!?你自己看着办吧!我的代码里面有!嘻嘻!

 

在这里感谢http://www.host01.com/article/software/Delphi/20060917183659893.htm是他让我知道停靠是多么神奇的!那里面有更细的说明我这里主要是提供一个完整代码供大家参考!

 
DevExpress ExpressBars v6.37完全指南:Delphi VCL工具栏与菜单组件源码解析与实战 在VCL桌面应用开发中,工具栏与菜单的布局管理一直是界面设计的核心痛点。DevExpress ExpressBars套件通过TdxBarManager统一管理工具栏、菜单项和停靠区域,将复杂的Windows消息处理封装成可配置对象,帮助开发者快速构建专业级企业界面。其运行时自定义布局与持久化能力,特别适合进销存、ERP等需要灵活交互的客户端系统。本文以实际项目经验为基础,聚焦v6.37版本,结合完整源代码讲解组件架构、安装依赖顺序、常见编译与运行期问题,并分享如何通过修改源码实现深度定制。对于需要维护老系统 阅读详情

相关推荐

Delphi DevExpress VCL 25.2.7 安装部署与TcxGrid实战指南

第三方控件库是提升桌面应用开发效率与界面现代化水平的关键技术组件。其核心原理在于扩展原生框架功能,通过封装复杂UI逻辑与交互模式,为开发者提供可复用的高性能可视化模块。在Delphi生态中,DevExpress VCL Controls作为业界标杆,其技术价值体现在大幅缩短数据密集型应用(如ERP、CRM系统)的开发周期,并提供媲美Office的现代交互体验。典型应用场景包括企业级数据管理后台、仪表盘和复杂表单系统。本文聚焦于DevExpress VCL 25.2.7版本的安装部署全流程,深入解析TcxGr

weixin_34160277的博客 354

Delphi老项目利器:DevExpress ExpressBars v6.37含源码解析

在桌面业务系统长期演进中,界面组件的可维护性与可定制性往往决定了一个项目的生命力。基于Delphi VCL体系的组件化开发,通过将菜单、工具栏、快捷键等命令统一抽象,实现了界面表现与业务逻辑的分离,这种设计不仅提升了开发效率,也为后续功能扩展提供了清晰架构。当商业组件内置完整源代码时,开发者得以深入内核,直接修复Bug、修改默认行为甚至裁剪冗余功能,这在长期维护的老项目中价值极高。对于仍运行在Delphi 7或2007环境、依赖稳定UI框架的制造、医疗等行业系统,选择一款成熟且开放的组件套件至关重要。本文聚

weixin_33845881的博客 285

Windows Form线程同步

.Net多线程开发中,经常需要启动工作线程Worker thread处理某些事情,而工作线程中又需要更新主线程UI thread的界面状态。我们只能在主线程中操作界面控件,否则.Net会抛出异常。 那么如何才能在Worker thread中将界面更新操作同步到主线程中去完成呢?【How synchonize the UI update task back to UI thread from...

weixin_30394251的博客 170

停靠窗口(DockWindow,DockForm)的实现示例

原网站大部分是英文,根据英文说明弄出来的代码,停靠功能不错,有些地方的实现可能要用户自己修改,跟DelphiIDE的停靠窗口基本一致,有些细节可能需要自己完善,不过这份代码已经够了

可以停靠的WinForm窗体,Dock Form

可以停靠的窗体,就像千千静听的窗体停靠效果一样。

.net Form 中的DOCK

在form中先放入的控件的dock有较高的优先级。 如果你先放入一个toolbarControl,设成dock top,那整个top就px 占了,别的控件再设dock top,也只能dock在它下面。...

Key 274

DockForm停靠窗体仿VS界面控件

DockForm停靠窗体仿VS界面控件

在Delphi7中实现停靠功能

在Delphi7中实现停靠功能我们在使用Delphi7开发应用系统过程中经常需要使用子窗口在主窗口上停靠的功能,如果对这一部分不熟练时,通常会到优快云等网站寻找各种相关的控件,或者参考Delphi自带的例程Docking,下面我给大家介绍一种能够凑乎用的简便方法。1、在主窗口中添加四个Panel和四个Splitter,设置对齐上下左右四边。2、设定四个Panel的属性DockSite属性为Tru

最爱白菜 1223

DockForm停靠窗体源码

DockForm停靠窗体源码~~vDockForm停靠窗体源码~~DockForm停靠窗体源码

DockForm停靠窗体仿VS界面控件(源码)

DockForm停靠窗体仿VS界面控件(源码)

停靠技术

随着软件技术的不断进步,软件界面也越来越美观,操作也越来越方便。综观市面上比较专业的各种软件,我们会发现大部分都提供窗体停靠的功能,特别象工具软件,基本上都或多或少有停靠功能。自然,Delphi也支持停靠,而且她和VCL紧密结合,对于广大的Delphi程式员来说更是一大福音。让我们省去枯燥的编码时间。把注意力集中在核心程式的构思上。         先让我们来复习一下VCL的结构,在T

nextop88的专栏 3113

STM32F4三重ADC+DMA双缓冲实战:用CubeMX搞定同步采样,告别数据覆盖烦恼

本文详细介绍了STM32F4三重ADC与DMA双缓冲技术的实战应用,通过CubeMX配置实现同步采样,解决数据覆盖问题。内容涵盖硬件架构解析、CubeMX工程配置、双缓冲实现技巧及调试优化方法,适用于电机控制、电力监测等需要高精度多通道信号采集的场景。

weixin_30627341的博客 357

Delphi中停靠技术的实现[转]

 先让我们来复习一下VCL的结构,在TWinControl类中有一个DockSite属性(boolean),他的作用是是否允许别的控件停靠在他的上面,在TControl类中有一个DragKind属性,如果要这个控件能停靠在别的控件上,就把DragKind属性设成dkDock。就这么简单,只要设置一下属性,一个支持停靠的程式就完成了。         当然,上面说的只是最最基本的步骤

ksrsoft的专栏 1106

DDR March系列算法整理

一

不吃鱼的猫的博客 1万+

协方差矩阵

对两个类内协方差矩阵进行对角化,可以将它们变换为对角矩阵。这个过程可以通过对每个协方差矩阵进行特征值分解来实现,从而得到它们的特征向量和特征值,进而得到它们的对角矩阵形式。这个过程的意义在于,它可以帮助我们找到一个新的坐标系,使得在这个坐标系下,每个特征之间都是独立的,从而简化了计算。具体来说,当我们使用对角协方差矩阵作为特征向量的坐标系时,它意味着每个特征之间都是相互独立的,从而方便了进一步的分析和处理。在实际应用中,对角化协方差矩阵可以用于降维、特征选择和分类等任务。

m0_55196097的博客 1万+

高级停靠(Dock)技术的实现

高级停靠(Dock)技术的实现 介绍 所谓停靠就是可以用鼠标拖动窗体或者控件,并将其从一个父窗体移出或者移动到另一个父窗体上,可以按水平,垂直方向整齐排列, 并且可以停靠在分页控制组件上。下面的示意图是一个Delphi IDE的窗口停靠示意图: 考察一些常用的软件如Office等大型软件,会发现大多提供窗体停靠的功能。微软的MFC很早就引入了工具条的拖放功能,可以将工具条上窗口...

weixin_30291791的博客 332

Unity 实现动态网格地图生成与交互组件

本文详细介绍了在Unity中实现动态网格地图生成与交互组件的完整方案。从基础网格单元实现到高级交互功能,涵盖网格生成器核心逻辑、事件驱动架构、性能优化技巧以及六边形网格等特殊实现。特别适合游戏开发者学习如何构建战棋、模拟经营类游戏的可交互地图系统,提升开发效率与用户体验。

weixin_29015483的博客 1068

Delphi XE7功能之TMultiView

TMultView,做为一个TPanel来显示控件,可通过属性Mode来控制TMultView的显示效果,如下拉或者以抽屉方式。从屏一侧象抽屉一样显示TMultView,但不会转换主屏,也就是说在主窗口一侧划出TMultView面版,这符合现在Android或ios可从屏边缘划出界面的流行效果;划出的面版停留在屏的左侧或右则不动,这时候,你可以操作面版上的控件;这种效果,可做为一个可停靠的面板显示...

weixin_30338497的博客 443

基于SHIS凝视型短波红外高光谱相机(900-1700nm)区分不同宝石的差异性和可分性(宝石分选)

SHIS系列凝视型高光谱相机基于液晶可调谐滤波器(LCTF),通过电控LCTF进行连续细分窄波段分光,对每个波段进行高分辨率的二维面阵成像,进行图像处理后,获得完整的高光谱高清图像序列。具有低功耗、小型化、使用方便和易于扩展的优势。其工作波段覆盖400nm至1000nm,能够捕捉宝石在不同波长下的光谱特征,为宝石鉴定提供了新的工具。

wayho的博客 709

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 935

Delphi ControlBar Coolbar的使用

1.ControlBar控件的使用 TControlBar作一个工具栏风格的可以自动停靠的菜单。    在窗体中添加一个TMainMenu组件,并且为它添加两个选项——File和Edit。然后向窗体上添加一个TControlBar组件,设置它的Align属性值为alTop。最后选中TControlBar组件,然后在组件工具栏中双击TToolBar组件,这样就会把TToolBar组件添加到T

cddchina的专栏 4191

〖Python接口自动化测试实战篇④〗- 接口自动化测试详解

[接口测试] 是相对来说和我们的功能测试 [最为接近的一种自动化测试手段] ,所以我们首先来学习接口测试的内容。 实现接口的开发与接口的测试,在我们的思维上、想法上、面向的态度上都是不一样的。所以大家要有一个思维上的转换,要认识了解一下 接口测试到底是做什么的、它的功能、意义在哪里。...

易编橙 · 终身成长社群,相遇已是上上签! 5万+

Delphi 8 for .Net印象

1       安装需要安装J2RE的某个较高版本,以及.NetFramework,Visual J#等。       总共386M的安装盘,234M是Delphi 8的,其余是相关组件。2       启动速度第一次启动大约耗费了60秒。我的机器是p4 2GHz,256M内存。后面启动的速度稍快了一些。但是从开始运行到出现启动画面需要15秒左右。然后再经过大约30-35秒

Musicwind的专栏 1574

18、AI在基础设施管理与运维中的应用及未来趋势

本文探讨了人工智能(AI)在基础设施管理和运维中的广泛应用,包括性能优化、成本节约、网络安全等多个场景。文章详细介绍了AI在不同领域的应用工具、实际案例以及面临的挑战,并展望了未来AI在基础设施管理中的发展趋势。此外,还分析了AI与Site Reliability Engineering(SRE)框架的结合优势,展示了AI如何提升运维效率和系统可靠性。

n7o8p的博客 147

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 我的Delphi7里程碑(认识Delphi7的语句过程函数)
下一篇: WindowsAPI WinMain
dingdingko
博客等级 码龄20年 50粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值