问题标签 [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 投票
5 回答
3262 浏览

delphi - Delphi:透明控件在上网本上变得不透明

出于某种原因,表单上的透明控件在某些计算机上变得不透明。我在“Acer Netbook”和“Thinkpad x600”上收到了有关它的报告。该应用程序是使用 Delphi 2007 构建的。

这是它的样子: 链接

虽然它应该看起来像这样: 链接

窗体上的不透明控件是 TLabels 和 TStaticTexts。

(我使用 TStaticText 控件来定义可点击区域,因为无句柄控件(如标签)的鼠标消息转到 WM_NCHITTEST 处理程序。底部的“按钮”是黑色的,因为我不小心将其颜色设置为 clNone,尽管它不应该完全可见。)

为什么会发生这种情况以及如何防止这种情况(除了将文本渲染到背景图像等变通方法)?

编辑:我设法在我的笔记本电脑上重现了这个问题,它运行的是 32 位颜色的 Windows XP,并使用经过认证的 ATI 驱动程序。

0 投票
3 回答
2170 浏览

delphi - 如何“扫描”当前安装的 VCL 组件的完整列表

对于这个问题,我仍然没有找到真正令人满意的答案,现在正在考虑推出自己的答案。我有 ModelMaker 和 GExperts,似乎都没有加载我正在寻找的综合类层次结构。同样,我不认为 DevExpress 的人会分叉 CDK 代码,该代码编译完整的类列表以继承... ;-)

所以...

如果我只想为所有注册的组件类(或者甚至包括非组件的所有类,如果这同样容易/可能的话)构建一个自引用表,那么最好的方法是什么?

注意:我真的不需要属性/方法细节;只是一个完整的类名(和父名)列表,我可以将其存储到表中并放入树视图中。但是,除此之外的任何内容都非常受欢迎作为奖励信息。:-)


稍后更新:

一个答案出现在我关于 SO 的“最近”部分,但不是这里的问题(也许他们删除了它?),是这样的:

“你可能想看看组件搜索的代码,它可能会帮助你枚举所有已安装的组件。”

该代码可用吗?是这样,它藏在哪里?学习会很有趣。

0 投票
3 回答
3212 浏览

delphi - 在 Delphi 中对运行时和设计时包大惊小怪

我已经看到 Delphi 中的大多数组件 (VCL) 都分为两部分。
1) DesignTime 包
2) RunTime 包

为什么要大惊小怪。如果将 RunTime 和 DesignTime 包合并到一个包中,会有什么区别?

我从来没有真正理解过这种分离逻辑。

那么这背后的逻辑是什么?

曾经有人提到,这种区别只是为了避免采用和遵循 Microsoft 制定的组件标准。这背后真的没有逻辑。

这是真的?

0 投票
6 回答
6470 浏览

c++ - 一个好的(和免费的)VCL GUI 替代品

我有一个项目,其 VCL 代码库建立在 Borland C++ Builder 6 之上。我打算重写它的大部分内容,因为它在当前状态下几乎无法维护。我正在寻找一个好的和免费的 VCL 替代品。这是一个仅限 Windows 的闭源商业项目。

所以主要要求是:

  1. 商业闭源项目免费
  2. 管理 Windows GUI。不需要其他组件(数据库链接和东西)
  3. 可扩展(因此可以基于现有的 GUI 组件编写我自己的 GUI 组件)
  4. 对 STL 友好。

请发表您的建议,如果可能的话,请说明优点和缺点。

编辑

感谢所有的答案。我决定使用 Qt,因为它还有一些其他不错的功能,例如 Qt Linguist 翻译套件。

0 投票
6 回答
8820 浏览

delphi - 访问 TClientDataSet 的 TDateField 的 OldValue 时,'0.0' 不是有效的时间戳

当我在 TClientDataSet 中新插入的记录中使用以下代码时:

我得到一个 EConvertError:

查看 Delphi 的 VCL 代码,它尝试将值转换为导致此异常的 TDateTime,因为值 (Null) 是无效的 DateTime,但是当我比较 Variants 时,我认为它会返回一个变体,即 Null在这种情况下,但这并没有发生,而是我得到了这个异常。

我知道我可以在比较值之前检查 DataSet.State = dsInsert 是否,好像 State = dsInsert 每个 OldValue 都是 Null,但我想了解为什么 OldValue 尝试转换值而不是全部返回 Null State = dsInsert 时的字段。

任何人都可以给我一些光吗?

0 投票
6 回答
5291 浏览

delphi - 我可以使 TTreeNode 不可见吗?

TTreeNode 没有 Visible 属性,因此不存在明显的选项。有没有其他方法可以使 TTreeNode 及其所有子节点不可见?当然,我希望以后能够让它再次可见。

这是德尔福2007。

注意#1:我知道替代的 TVirtualTreeView,如果没有简单的方法可以使用 TTreeView 完成此操作,我会检查它。

注意#2:我只需要顶级节点的选项。我想隐藏的那些通常甚至没有孩子。

0 投票
6 回答
5314 浏览

clipboard - 如何在 TEdit 中禁用复制/粘贴

我想防止在我的TEdit. 我怎样才能做到这一点?

我尝试在按下控件时设置Key=NULLonKeyDown事件CTRL+V,但它不起作用。

0 投票
5 回答
5896 浏览

delphi - 数据网格导出为 pdf

如何将 DBgrid 上显示的数据导出为 pdf 文件?

0 投票
3 回答
1805 浏览

delphi - 如何仅使用 TLabel 而不是 TProgressBar 在 Turbo Delphi 中制作进度条

所以这里的逻辑

为 1%="|" 在 TLabel 和一个“|” 我们需要循环 10 次

所以要达到 100%= 100 次 "|" 我们需要循环 1000 次

你能帮我写代码吗?

0 投票
5 回答
5289 浏览

delphi - 如何在 Turbo Delphi 上制作带有进度条的启动画面?

(Unit1.pas)

(Unit2.pas)

(*.dpr)