问题标签 [delphi-2007]

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 投票
3 回答
378 浏览

delphi - 在 Delphi 中为表单上的许多控件切换控件类型(但不是名称)

我需要将窗体上特定类型的每个控件切换到不同的类型,同时保持与每个控件关联的名称和代码。

例如,假设我需要将十几个或更多 TEdit 字段切换到 TSpinEdits。我怎样才能在 Delphi 2007 中以最小的努力做到这一点?

0 投票
2 回答
5354 浏览

delphi - 在弹出菜单的禁用菜单项上显示工具提示提示

所以我有一个 TMenuItem 附加到 TDBGrid 的 TPopupMenu 上的 TAction (实际上是第 3 方,但你明白了)。根据网格中选定的行,启用或禁用 TAction。我想要的是能够向用户显示一个提示,解释为什么该项目被禁用。

至于为什么我想要一个禁用菜单项的提示,可以说我同意 Joel

所有 TMenuItem 都有一个提示属性,但尽我所能告诉他们,它们仅使用 TApplicationEvent.OnHint 事件处理程序将提示粘贴在 TStatusBar 或其他一些特殊处理中。我找到了一篇关于如何为 TMainMenu 的 TMenuItems 创建自己的偶数窗口的文章,但它不适用于 TPopupMenu 的 TMenuItem。它通过处理 WM_MENUSELECT 消息来工作,据我所知,该消息不是在 TPopupMenu 上发送的。

0 投票
2 回答
5064 浏览

delphi - Delphi - 如何在 TStringGrid 中设置垂直滚动条,始终可见

我在 Win32 上使用 Delphi 2007,需要将 TstringGrid 中的垂直滚动条设置为始终可见。你是怎样做的?

0 投票
4 回答
1410 浏览

multithreading - 从 OnTimer 事件访问父表单中的变量 - 获取异常

我在 OnTimer 事件处理程序 (TTimer) 中遇到异常,该异常在执行时会增加父表单中的整数变量。计时器需要能够访问用作 id 的递增整数。

我的第一个问题是:如何在 Delphi 2007 中判断哪些代码在哪个线程中运行?有没有办法在调试模式下检查这个,所以我可以确定?

其次,如果我需要从另一个线程访问和修改父表单中的变量,那么最好的方法是什么?似乎有时 Delphi 允许我“错误地”访问这些变量而不给出异常,而其他时候它确实给出了异常。

0 投票
5 回答
3221 浏览

multithreading - Delphi 中更好的多线程调试

从另一个关于 Delphi IDE 中的错误的问题的答案开始,有谁知道是否有办法改进 IDE 的多线程调试功能,或者如果没有,至少为什么有时它会如此糟糕?

当您在一个程序中有多个线程时,使用 F7 或 F8 单步执行代码通常会导致很长时间的停顿,或者整个 IDE 只是锁定。当您离开或进入方法或程序时,这一点尤其明显。调试器似乎总是适合单线程应用程序。

PS。我使用的版本是2007

0 投票
5 回答
2384 浏览

delphi - Delphi 接口是否在子类中继承

如果我在基类上实现一个接口,它将被它的子类继承,我知道函数/过程将是,但我更感兴趣的是我是否能够将子类转换为接口,然后再转换回它的接口原班。

我希望我能做的是将不同基类的对象传递给一个函数,然后在函数中确定类型并酌情使用它们。

这可能吗?这是正确的方法吗?

更新

为了帮助消除任何混乱(或创造更多),这是我想做的(精简到其核心)。

界面

基类

子类

另一个班级

然后使用

更新 2

我已经更新了代码,所以更好地展示我所追求的。

//这里的代码部分与传递给它的对象几乎没有关系,例如,如果这个类是 TAccounts 并且它被传递了一个 TEmployee 对象,它可能会在那里支付每周工资,但如果它是一个 TInvoice 那么它会检查看看是否需要付款,并且仅在截止日期前 2 天付款。

TEmployee/TInvoice 甚至可能来自要求付款的外部班级。

这只是一个例子。

0 投票
16 回答
9965 浏览

delphi - 如何在 MS Access 表中插入 800000 条记录?

我需要在 MS Access 表中插入 800000 条记录。我正在使用 Delphi 2007 和TAdoXxxx组件。该表包含一些整数字段、一个浮点字段和一个只有一个字符的文本字段。其中一个整数字段(不是 autoinc)有一个主键,另一个整数和浮点字段有两个索引。

使用插入数据AdoTable.AppendRecord(...)需要> 10 分钟,这是不可接受的,因为每次用户开始使用带有程序的新数据库时都会这样做。我无法预填充表格,因为数据来自另一个数据库(无法通过 访问ADO)。

tAdoCommand通过将记录写入制表符分隔的文本文件并使用对象执行,我设法缩短到大约 1 分钟

但我不喜欢这样的开销。

我认为必须有更好的方法。

编辑:

一些附加信息:

  • 选择 MS Access 是因为它不需要在目标机器上进行任何额外的安装,并且整个数据库都包含在一个可以轻松复制的文件中。
  • 这是一个单用户应用程序。
  • 数据将仅插入一次,并且在数据库的生命周期内不会更改。但是,该表包含一个附加字段,该字段用作标志以指示另一个数据库中的相应记录已由用户处理。
  • 一分钟可以接受的(最多 3 分钟也可以),我的解决方案有效,但对我来说似乎太复杂了,所以我认为应该有一种更简单的方法来做到这一点。
  • 插入数据后,表的性能相当不错。
  • 当我开始计划/实现与 Access 数据库一起使用的程序功能时,不需要该表。直到后来,当客户要求另一个功能时,它才变得必要。(不总是这样吗?)

编辑:

从到目前为止我得到的所有答案来看,似乎我已经获得了将这么多数据插入 Access 表的最快方法。感谢大家,感谢您的帮助。

0 投票
3 回答
16752 浏览

delphi - Delphi MSBuild 从命令行构建配置

Delphi 2009 使用构建配置。当您创建一个新项目时,您有两个默认构建配置“调试”和“发布”。

现在我问自己如何使用 MSBuild(自 2007 版以来由 Delphi 支持)自动化构建。

您可以在某些 Delphi 项目目录的“RAD Studio 命令提示符”中启动“msbuild”命令,它将构建默认构建配置(Delphi IDE 中最后激活的构建配置)。

现在,我想通过命令行参数指定某个(非默认)构建配置。

Delphi帮助断言参数是[/p:configuration= <configuration name>],这是错误的(Delphi 2009,Help Update 1)!

什么是正确的方法?

0 投票
1 回答
1450 浏览

delphi - Delphi 2007 没有生成我想发送到我的 Java-WS Web 服务的 XML

我有一个 Java Web 服务,我使用 WSDL 导入器从 Delphi 2007 应用程序链接到该服务。设置它是一条崎岖的道路,但我快到了!

我现在遇到的情况是我的数组没有以我的 Java Web 服务可以使用的方式进行序列化。我在 .Net 中编写了相同的应用程序来测试它(它工作正常),我希望生成的 XML 看起来像这样:-

但是,Delphi 生成的 XML 如下:-

基本上,我需要 Delphi 停止在活动元素中创建活动元素而只需将每个 ID 和名称放在活动元素中(正如 .Net 所做的那样,Java 似乎也期望如此)。

我对 InvRegistry.RegisterInvokeOptions 和 RemClassRegistry.RegisterSerializeOptions 感到厌烦,但似乎没有一种组合有效。老实说,我即将为此编写自己的 XML 解析器,因为它需要很长时间才能弄清楚。但是,如果有人对这应该如何工作有任何建议,我将不胜感激。

肯定有人之前通过 Delphi 2007 使用过 Java-WS Web 服务:)

TIA

0 投票
5 回答
5502 浏览

delphi - 如何在 Delphi 2007 上显示透明的 PNG?

TImage 控件不支持 PNG。是否有一些第三方组件会?