问题标签 [vcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3183 浏览

delphi - 启用 MultiSelect 的 TListBox 拖放问题

我有一个带有多选和 ExtendedSelect 的 TListBox 都设置为 true。我需要能够拖动列表框中的多个项目来重新排列它们。我的问题是当用户单击已选择的项目而不按住 CTRL 或 SHIFT 键时会发生什么。

案例一:DragMode 设置为 dmManual 在鼠标按下之前清除选择。这将不允许拖动多个项目。

情况 2:DragMode 设置为 dmAutomatic MouseDown 事件从不触发。选择未清除,因此可以拖动,但用户无法通过单击所选项目之一来清除选择。如果选择了所有项目或者用户想要选择的下一个项目是当前选择的一部分,这确实会导致问题。

请注意,仅当您在 OnStartDrag 过程中为 DragObject 分配某些内容时,才会出现此问题。我认为如果 OnStartDrag 仅在用户移动鼠标后启动,问题就会消失。我设置了 Mouse.DragImmediate := false ,但是只要单击列表框中的某个项目,我仍然会触发 StartDrag。

我在这个项目中使用了 Delphi 7,但我在 Delphi 2007 中看到了相同的行为。

0 投票
11 回答
29341 浏览

delphi - 如果 Delphi TSpeedButton 是组中唯一的一个,如何使其保持按下状态

我不确定为什么 TSpeedButton 具有此属性,但是当 TSpeedButton 是给定 groupindex 的唯一按钮时,无论是否按下“AllowAllUp”,它都不会保持按下状态。也许绝地控制就足够了,但希望有一些解决办法。任何帮助或轶事表示赞赏。

顺便说一句,我(仍在)使用 Delphi 7,不确定这是否是一个全面的难题。

0 投票
4 回答
886 浏览

c++ - VCL 替代 IStorage

作为序言,我使用的是 Borland C++ 和 VCL。

我需要某种结构化存储对象,它可以作为单个文件保存到磁盘,并且可以包含多个命名的二进制数据 blob,我可以通过编程方式枚举、访问和操作这些 blob。

IStorage接口似乎与我想要的很接近,但我更喜欢 VCL 风格的解决方案,因为将 TStream (VCL) 转换为 IStream 会变得很尴尬,而且它们必须是一个更简单的解决方案,使用已经可用的 VCL 东西,比如 TIniFile 但对于二进制数据。

我不想使用 XML,因为二进制数据 blob 非常大,并且当正确编码以在 XML 中使用时,它是完全无效的。

提前感谢所有建议。

0 投票
2 回答
658 浏览

delphi - 你如何找到一个 Delphi 组件来自的包?

您曾经能够从调色板中获取安装了 Delphi 组件的包。不过,该功能似乎不在最新版本中。如何在 D2007 或 D2009 下找到组件属于哪个包?

0 投票
1 回答
619 浏览

delphi - Delphi 应用程序可以像 Visual Studio 那样有双快捷键吗?(即 Ctrl-k Ctrl-k)

如标题所述,我的应用程序需要双快捷键(即Ctrl-k Ctrl-k是 VS.NET 中的 Toggle Bookmark 键)。我想知道你们中是否有人在 Delphi 中找到了解决方案?我怀疑通过修改 VCL 的核心可以做到,但有没有更简单的方法?

0 投票
5 回答
7797 浏览

delphi - Form.Release + NIL

如果在使用表单后调用 Form.Release,它将释放所有相关内存但不会将表单变量设置为 nil。

为了能够再次调用相同的代码,Form1 必须在某个时候设置为 nil。从 Release 我不能做的描述

在 Release 之后,因为 Release 过程将在被调用之后和实际释放表单之前直接返回。我无法检测到 Form.Release 何时完成将表单 var 设置为 nil。

做这个的最好方式是什么?

0 投票
3 回答
1904 浏览

delphi - 将控制集中在调整大小上的首选方式

当父级更改宽度或高度时,您首选的保持控件以父级为中心的方法是什么?

0 投票
5 回答
6778 浏览

delphi - 在 Vista Aero 上禁用进度条动画

我正在使用 Delphi 2009 VCL TProgressBar 作为一种“空/满”量规。

在 Vista 上,启用 Aero 主题时,它有一个与之相关的动画,这很烦人并且不适合仪表。

有没有办法禁用它(不是通过调整用户的主题设置!)以防止此控件上的动画?

为了澄清,我想要一些与 Windows 资源管理器中的“已用磁盘空间”表基本相同的东西。没有动画,但仍然有漂亮的边框和阴影效果。

更新:

我知道我需要一个“仪表”,而不是一个真正的进度条。如何使用标准 Windows 进度条控件实现主题仪表?

0 投票
1 回答
2072 浏览

delphi - Delphi 菜单合并问题

我正在尝试将两个主菜单合并在一起,但在使用子项获得正确结果时遇到问题。我在 MenuItems 上使用 GroupIndex 属性来控制合并/插入。

Menu1(带有 groupindices)是这样的

  • 文件=10
    • 打开=11
    • 关闭=12
  • 编辑=20
    • 切=21
    • 粘贴=22
  • 帮助=90
    • 关于=91

Menu2是这样的

  • 编辑=20
    • 清除=23
  • 小部件=30
    • 小部件1=31
    • 小部件2=32

我在做

我希望组合菜单在编辑菜单中有一个新的顶部菜单“小部件”和一个新的“清除”命令。“小部件”工作正常,但编辑菜单丢失了剪切和粘贴,这不是我想要的。

如何阻止剪切和粘贴命令消失?

0 投票
6 回答
34182 浏览

delphi - 有什么方法可以获取容器控件上的所有控件?

我有一个带有一堆控件的表单,我想遍历某个面板上的所有控件并启用/禁用它们。

我试过这个:

但这无济于事。原来所有组件都在表单的组件集合中,而不是它们的父对象。那么有谁知道是否有任何方法可以将所有控件放入控件中?(除了像这样丑陋的解决方法,这是我最终不得不做的):

有人请告诉我有更好的方法...