如何使用引脚和选项卡像 Delphi IDE 一样进行拖动和停靠?

2024-04-20

我想让“拖放”和“停靠”在我的应用程序中像在 Delphi IDE 中一样工作(即能够在对象检查器/结构视图周围拖动并将它们停靠在合适的位置)。我在将表单对接到 PageControl 方面取得了相当大的成功,但想知道是否有人知道如何让它与小关闭按钮和引脚等一起使用。

我还想知道 Delphi IDE 使用哪些组件来实现这一目标。

我的问题的原因是我想制作更多关于如何做到这一点的高级视频,我之前做过的两个是 and .


您可以使用JVCL Jv对接 http://jvcl.delphi-jedi.org/几乎在任何版本的 Delphi 中都可以拖放组件。它是免费且开源的。具有引脚和关闭按钮的样式可使用 JvDocking 附带的称为 VID(视觉交互开发)样式的对接样式来实现。

已经有很多商业替代品,并且 Delphi 内置了一些支持,我发现这不足以满足我的需求。虽然 Delphi IDE 有自己的内部对接库,但选项卡支持非常有限、缓慢,并且在我看来,是损坏的。

然而,即使在古老的 Delphi 版本(Delphi 7 及更高版本)上,JvDocking 也提供了 VCL 对接提供的所有功能,甚至更多,因此忽略内置的 VCL 功能是没有问题的,就像 TStringGrid 对接真正的网格一样。

JvDocking 的步骤:

  1. 将停靠服务器和停靠样式对象放在主(主机窗体)上并连接它们。
  2. 将停靠客户端组件放在客户端(要停靠的表单)上并将其连接到停靠样式。
  3. 配置 Dock 服务器的属性。
  4. 运行应用程序。让它创建一个表单。现在将客户端窗体拖到可通过停靠服务器停靠的区域。观察它是否良好地对接。

有关代码演示中的对接,请参阅 JVCL Examples 文件夹中的 JvDocking 演示。

Update

或者您可以使用自 XE 和 XE2 以来 Delphi VCL 中内置的内容。 XE和XE2包含一个对接演示项目,名为dockex.dpr.

在 Win7/Vista 上,演示位于:

C:\Users\Public\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

请在此处查看 Win XP 上的演示:

C:\Documents and Settings\All Users\Documents\RAD Studio\9.0\Samples\Delphi\VCL\Docking

您还应该查看以下文档:TDockTabSet在VCL中,以及电子报文章 http://edn.embarcadero.com/article/33446评论里有链接,有源码可以下载here http://cc.embarcadero.com/item/23929。以我的拙见,Jedi JvDocking 的东西比 Delphi 附带的 Docking Demo 更专业、更灵活,但内置的东西具有无需安装任何额外东西即可工作的优点。我刚刚尝试了 DockTabSet 演示和内置的对接演示,它们很慢,而且画得很丑而且闪烁。 JvDocking 看起来很专业。这是你的决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用引脚和选项卡像 Delphi IDE 一样进行拖动和停靠? 的相关文章

  • 在运行时拖动窗体上的控件

    我刚刚开始使用 WPF 但我正在尝试添加我的代码 来自 Winforms 使用户能够在运行时将任何控件拖动到他们想要的任何位置 但我似乎无法获取鼠标当前的位置 呃 没有鼠标位置 在 Mouse 事件中 您可以使用 e GetPosition
  • Delphi XE2 中的 TDataModule.ClassGroup 伪属性到底有什么作用?

    我尝试将一个组件从一个数据模块复制并粘贴到 Delphi XE2 中的另一个数据模块中 该组件是一个 Fast Report 数据源链接组件 数据模块是全新的 刚刚在 XE2 中创建 其他人也遇到了同样的问题并报告了质量中心为106369
  • 使用 Qt 进行拖放:悬停时了解目标应用程序 - 这可能吗?

    我目前正在探索从 Qt 应用程序拖放到未知目标应用程序的可能性 问题是 Qt 应用程序是否可以接收有关即将接收 drop 的应用程序的信息 例如进程名称或标题 一个 虚构的 示例可以是将绘图从 Qt 窗口拖动到文本编辑器或电子表格编辑器 在
  • Move() 从动态字符串数组中插入/删除项目

    使用 System Move 从字符串数组中插入 删除项目并不像从其他简单数据类型数组中插入 删除项目那么容易 问题是 字符串在 Delphi 中是引用计数的 在引用计数数据类型上使用 Move 需要对内部编译器行为有更深入的了解 这里有人
  • Delphi LZMA减压样本

    我发现在this https stackoverflow com questions 4344976 lzma or 7zip in delphi的线程链接delphi压缩包 https github com ccy delphi zip具
  • WPF 的拖放列表框

    我正在寻找一个简单的ListBox具有内置的拖放功能 我认为 Silverlight 4 工具包有 The BoxList应该可以 通过拖放项目重新排序 从一个项目中拖动项目BoxList到另一个 显示拖动项目的预览 幽灵版本 显示放置位置
  • Firemonkey - 更新视觉组件

    我们从版本 1 开始就使用 Firemonkey 但仍然发现更新当前在屏幕上可见的组件很困难 在 Firemonkey 中请求重画的 方式 有很多 也许太多了 应用样式 ApplyStyle 事件 主要是当它在屏幕上可见时 请求 repai
  • 无法在 Android Studio 中向 Activity_main.xml 添加任何项目

    在 Android Studio 中 我无法在设计视图中将调色板中的任何项目添加到 Activity main xml 中 它只是不允许我拖放它们 知道为什么会发生这种情况吗 这是打印屏幕 根据android studio中用于androi
  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • Delphi 2010:如何将 UTF8 编码的 PAnsiChar 转换为 UnicodeString?

    情况 我有一个外部 DLL 它使用 UTF 8 作为其内部字符串格式 接口函数都使用 PAnsiChar 来传递字符串 我的应用程序的其余部分使用 Delphi 的本机string类型 由于我正在使用 Delphi 2010 这将映射到Un
  • 在主表单之前显示登录表单

    我在表单之间导航时遇到问题 我使用 Delphi XE5 创建了一个 Android Firemonkey 移动应用程序 我目前有一个登录表单和主表单 现在我想要有关如何处理登录表单以显示在主表单之前的建议 在 项目选项 中的表单下 选择要
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • 使用 GdiPlus 卸载 DLL 时程序挂起

    我有一个加载 DLL 的应用程序 它使用德尔福 GDI 库 http sourceforge net projects delphigdiplus 该应用程序在卸载 DLL 时挂起 调用免费图书馆 https msdn microsoft
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 如何允许表单接受文件删除而不处理 Windows 消息?

    在 Delphi XE 中 我可以允许我的表单接受文件 拖放 但不必处理裸窗口消息吗 您不需要处理消息来实现这一点 你只需要实施IDropTarget并打电话RegisterDragDrop RevokeDragDrop 这真的非常非常简单
  • 使用 PyQt5 拖放 QLabels

    我正在尝试使用 PyQt5 将 Qlabel 拖放到另一个 Qlabel 上 from PyQt5 QtWidgets import QApplication QWidget QToolTip QPushButton QMessageBox
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • 防止拖动不可拖动元素时出现重影?

    我正在创建一个利用 HTML5 拖放 API 的网站 但是 为了增加用户体验 我想在用户拖动不可拖动元素时防止出现重影 这可能吗 此外 几乎每个元素似乎 可拖动的 默认情况下 人们可以单击然后快速拖动浏览器中的几乎任何元素 这会创建一个重影

随机推荐