问题标签 [delphi-2006]
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.
delphi - 如何使用 Delphi 代码调试 VC++ 中构建的 DLL 文件?
我是一名从事 Delphi 的开发人员。在我的项目中,我添加了一个用 VC++ 构建的 DLL 文件。我需要调试 DLL 文件来解决一些问题。
那么使用 Delphi 代码调试 DLL 文件需要遵循哪些步骤?
delphi - 如何使用 Delphi 的 TSplitter 和面板避免这种不需要的行为?
包括一个展示我的问题的小项目。我TPageControl
与主表格对齐。在两个标签页中的每一个上,我都有面板客户端对齐。在每个面板上,我都有 2 个子面板和一个分离器。左侧面板和分离器左对齐,右侧面板客户端对齐。
基本上问题是两个选项卡之间的交互。展示:
- 运行程序
- 水平拉伸主窗体。面板 3 将增长
- 将分离器尽可能向右移动。面板 2 将增长,面板 3 将缩小到其 10 像素的最小宽度约束。
- 选择标签页 2。面板 5 与设计相同,面板 6 在主窗体被拉伸时增长
- 将主窗体宽度减小到其原始宽度。面板 6 收缩太多(不受欢迎)
- 单击标签页 1. 主窗体的宽度再次增加(不受欢迎)
好的,根据对齐面板的规则,这种行为可能是可以解释的,但是任何人都可以建议改进操作吗?
delphi - 将 AlphaBlendValue 属性添加到 Delphi 的 TImage 的最简单方法是什么
如果有可疑的参数值,我会在对话框中显示“警告”图像。用户并不总是注意到它,所以我想在一秒钟左右的时间内循环淡入和淡出它(是的,我可以切换 Visible 属性,但这看起来有点像我只是切换 Visible 属性)。有没有比将它放在自己的表单上并将其浮动在对话框上(并更改表单的 AlphaBlendValue 属性)更简单的方法?
delphi - 为什么这个 D2006 代码不能淡化 PNG 图像?
这个问题源于一个较早的问题。大多数代码来自建议的答案,这些答案可能在更高版本的 Delphi 中有效。在 D2006 中,我没有得到全范围的不透明度,图像的透明部分显示为白色。
图片来自http://upload.wikimedia.org/wikipedia/commons/6/61/Icon_attention_s.png。
它在运行时从 PNGImageCollection 加载到 TImage 中,因为我发现您必须这样做,因为在保存 DFM 后图像不会保持完整。为了演示该行为,您可能不需要 PNGImageCollection,只需在设计时将 PNG 图像加载到 TImage 中,然后从 IDE 运行它。
表单上有四个按钮 - 每个按钮设置不同的不透明度值。Opacity=0 工作正常(paintbox 图像不可见, opacity=16 看起来不错,除了白色背景, opacity=64, 255 类似 - 不透明度似乎在 10% 左右饱和。
关于发生了什么的任何想法?
** 这段代码(使用 graphics32 TImage32)几乎可以工作 **
**(更新)此代码(使用 graphics32 TImage32)确实有效 **
以下代码在运行时成功地将 PNG 图像分配给 Graphics32.TImage32。带有 alpha 通道的 PNG 图像在设计时被加载到 TPNGImageCollection(非常有用的组件,因为它允许混合任意大小的图像)。在创建表单时,它被写入流,然后使用LoadPNGintoBitmap32从流中读取到 Image32 中。完成此操作后,我可以通过分配给 TImage32.Bitmap.MasterAlpha 来控制不透明度。不用担心 OnPaint 处理程序。
delphi - 我如何找出调整主窗体大小时长时间延迟的原因?
我有一个 D2006 应用程序,它在选项卡上包含页面控件和各种网格等。当我调整主表单的大小时(它会波及并调整表单上与某物对齐的几乎所有内容),我会遇到很长的延迟,比如几秒钟。应用程序冻结,未调用空闲处理程序,并且正在运行的线程似乎也暂停。
我尝试在发生这种情况时暂停 IDE 中的执行,以尝试在麻烦的代码中中断执行,但 IDE 不接收消息。
显然,我不希望有人指出一些错误的代码,但我正在调试可能对我有帮助的方法。我在整个应用程序中都有大量的执行时间代码,并且长时间的延迟不会出现在任何数据中。例如,主窗体 OnResize 处理程序的执行时间最短。
delphi - 是否有任何简单的自动化方法可以找出与 Delphi 项目相关的所有源文件?
我喜欢在发布版本时备份项目的源代码集。我使用 GExperts 项目备份,它似乎将项目管理器中的所有文件收集到 ZIP 文件中。您也可以将任意文件添加到此文件集中,但我始终意识到我不一定获得所有文件这一事实。除非我专门通过使用子句并将我拥有的所有单元添加到项目中,否则我永远无法确定存储重新创建可安装/可执行文件所需的所有文件。
我考虑过滚动一个应用程序来遍历一个项目,跟踪所有使用的单元并查看所有搜索路径并查看是否有该单元可用的源文件,并构建一个文件列表以这种方式备份,但是,嘿-也许有人已经完成了这项工作?
delphi - Delphi - 如何找到重复出现的“幽灵”托盘气球弹出窗口的来源?
我有一个 D2006 应用程序,它通过托盘气球提示通知各种事件。每隔一段时间,但不是很频繁——比如应用程序的 10 次调用中有 1 次——其中一个提示决定它会一次又一次地弹出……永远。唯一阻止它的是关闭应用程序。
如果应用程序发出另一个气球 int,它会替换幻影提示,但在新提示超时后,幻影提示会返回。同样,如果我关闭幻影提示,它会立即返回。
我已经验证不会重复调用创建提示的代码。暗示源自内心深处的某个地方。
sql-server - 将 RTF 图像数据转换为纯文本(SQL Server 和 Dephi BDS 2006)
一直在为这个苦苦挣扎。我们有一个包含图像类型数据的旧表(SQL Server)。我想得到文本。
到目前为止,这就是我所做的。
- 尝试转换或转换它(不允许)
- 尝试通过调用 SP 将数据引入 delphi(我已经到了将数据分配给变体的地步)
- 查看了 RTF 到文本函数(如果我可以将图像数据转换为字符串,请在 SO 上找到一些东西)。
这是我到目前为止的代码。它现在附加到单击按钮(将在服务中运行)。我认为对报告变量的分配是不对的,而且 SetString 也可能不对。我什至不确定我是否以正确的方式去做这件事。
delphi - Delphi 2006:PNG 到 TImage 的运行时分配失去了 alpha 透明度
Delphi 2006 的 TImage 不太支持 PNG。为了在我的表单上显示具有 alpha 透明度的图像,我必须在运行时加载它们。我可以在设计时加载它们,但它们无法生存,我认为是因为 PNG 没有保存在 DFM 文件中。我确信这在最新的 Delphi 中都是笨拙的,但我目前无法升级。
无论如何,我在运行时加载它们:
PNGImageCollection 组件包含我所有的各种大小的 PNG(这些是在设计时创建和加载的),我将它们分配给 FormCreate 事件中的相应 TImage。
这工作正常,直到我遇到问题,在表格上使用这些图像后,我试图在其他地方重用这些图像。我发现分配 TPicture 的行为已将其设置为空图像作为分配的结果。这发生在例程 TPicture.ForceType 中,AFAICT 检查 FGraphic 的类型,如果它不是所需的类型,它会释放 FGraphic 并创建所请求类型的新实例。
好的。因此,经过一番摸索,我发现也许我真的应该这样做:
这起到了作用,因为分配没有破坏图像,但图像现在显示为不透明的半透明位,即:
代替:
如何让此图像正确显示 alpha 透明位?(和补充问题:Image1.Picture.Bitmap.Assign 是正确的方法吗?)。
这是更详细的代码:
在我遇到“重用”TImage 问题的代码中,顺序是:
在表单创建上:
(PNGIMage 是公司标志,LogoImage1 在主窗体上)。
在打印报告标题上:
第一次调用打印徽标的例程时,它会正常执行,但在调用 PrintBitmapRect 后,LogoImage .Picture 会被清除。下次调用打印头例程时,对 CalcGraphicHeight 的调用将失败,因为图像的宽度和高度为零。
将 Picture.Assign 更改为 Picture.Bitmap.Assign 修复了标题打印例程中的 RTE,但是当我将相同的“修复”移植到从 PNG 分配的其他静态图像(如上面的齿轮)时,我失去了 aplha 通道。
delphi - DBGrid 组件如何确定要显示的初始列宽?
我很难在 DBGrid(实际上是 TMS 的 DBGrid)中保存/重新加载 col 宽度。TMS 包括保存/重新加载 col 宽度的内置方法,这些方法工作正常(我可以读取 ini 文件中的值)。但是,我的代码中某处的某些东西正在覆盖存储的值。我对如何确定 col 宽度以能够调试问题知之甚少。
网格最终连接到一个 ClientDataSet 文件。