问题标签 [delphi-xe2]
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 - 带有 Firemonkey 和 Delphi XE2 的 DB Lookup 字段
我找不到将 TCombobox 与 Firemonkey 中的查找字段绑定的方法。在 VCL 中,您有一个 TDBLookupComboBox,它只需要一个 TDatasource 组件和查找字段名称来填充组合框列表。通过这种方式,您可以在运行时轻松编辑 FK 字段。
在 Firemonkey 中,你所拥有的只是 Livebindings,我不知道如何设置相同的行为。到目前为止,我所做的最好的事情是使用 TBindList 填充组合框列表,并使用连接到查找字段的 TBindDBListLink。通过这种方式,它似乎可以工作,但组合框不允许我更改所选项目。
这是数据库应用程序应该具备的最基本的东西之一,但我不明白为什么还没有人谈论它。
delphi - Firemonkey和大量数据
我刚刚看了一下 Firemonkey 的网格实现,结果发现它是一个非常简单的实现(只有 1800 行,对于网格实现来说似乎并不多)。它几乎没有自定义绘画,而是聚合了许多其他控件——这似乎是 Firemonkey 的处事风格。
例如,每一列都有一个控件数组——每个单元格一个。对于具有 1,000,000 行的普通文本列,网格将在内存中保留 1,000,000 个编辑控件 - 这对我来说似乎有点疯狂。(编辑:现在不太确定这个假设是否正确。它似乎考虑了单元格的可见性,这可能意味着它确实提供了类似虚拟模式的东西,但我不太确定......)
我的问题:毫无疑问,Firemonkey 的这种组件聚合设计看起来简单而优雅,但它真的可以很好地适应必须在网格中显示的数据量吗?我无法想象它在大量行中表现良好。Firemonkey 处理大量数据的方式是什么?
感谢您的任何意见。
delphi - 需要控件和对象之间的双向 LiveBindings
在 Delphi XE2 LiveBindings 中,我需要将任何类型的 VCL 控件绑定到任意(非组件)对象上的任何类型的属性。我可以单向地做到这一点。但我需要双向进行。
假设我想将 TPerson.PersonName: 字符串绑定到 TEdit.Text。
我现在拥有的很简单。
- 新建一个VCL应用,添加一个TBindScope、TBindingsList、TEdit。
- 创建一个名为 person1 的 TPerson 实例。
- 使用 BindingList,添加 TBindExpression 属性。
- 使用 BindExpression
- 将 ControlComponent 设置为 Edit1
- 将 ControlExpression 设置为“文本”
- 将 SourceComponent 设置为 BindScope1
- 将 SourceExpression 设置为 PersonName
- 添加一个按钮;到我添加的 Click 事件:BindScope1.DataObject := person1;
- 添加一个按钮;到我添加的 Click 事件(只需要一个,但在它起作用之前我会尝试它们)。
- TBindings.Notify(sender, '');
- BindingsList1.Notify(sender, '');
第一个按钮绑定在第一个方向。第二个按钮似乎永远不会将值写回 person1.PersonName 属性。
我已经尝试过通知代码、绑定方向、绑定类型、表达式、SourceMember 等。有时我在 bindexpression 配置中遇到运行时错误,其余时间绑定只是单向的。
我希望单击第二个按钮并查看写入 person1.PersonName 的 Edit1.Text 的内容。
如果我必须从代码中完成这一切,我会考虑它并且欢迎这样的示例,但如果可能的话,我真的想通过设计器来完成。
请注意,我对两个控件之间的绑定不感兴趣。
还要注意,我已经下载并检查了 LiveBinding 示例项目,但没有找到任何这样做的。如果有错误,请在指出时具体说明。我也读过 DocWiki。它不包括双向绑定,除非使用DB LiveBinding 控件。我没有使用DB LiveBinding 控件,也没有使用 DataSet。因此,除非您能向我解释为什么我应该使用它们,否则我将不需要有关这些控件的任何信息。
delphi - Delphi XE2 和 Char/Byte 类型
我有这个问题,看看这个例子的代码:
其中 src 是字符串类型, iindex 是整数类型,作为输出,我应该具有以下内容:
在 delphi 的所有最新版本中也是如此,直到 delphi xe;现在使用delphi xe2,我有这个输出:
现在我问,需要使用不同类型的字符串吗?我当然找到了解决它的解决方法,将 byte(src[iindex]) 更新为 byte(src[succ(iindex)]) 但是当 iIndex = 255 时,我有 byte(src[256]) 引发异常所以需要改变字中的字节。当然,我不认为这是最好的解决方案,所以我问你是否有更好的解决方案。非常感谢。
delphi - Firemonkey ScrollBox 错误
我们在 Firemonkey 的 ScrollBox 组件中遇到了一个奇怪的错误(因为TGrid
从它继承TScrollBox
也会影响所有网格)。在我们的一些开发机器上,一切正常,而在其他机器上出现错误。我们未能检测到系统之间的任何模式(我们检查了操作系统、图形硬件、DirectX 版本)。
再生产:
- 创建一个新的 FireMonkey 应用程序。
TScrollBox
在表格上放置一个。 - 向滚动框添加一个按钮,并将其垂直位置设置为 500000。
- 启动应用程序并检查滚动到滚动框末尾时是否显示按钮。
如果发生错误,则按钮不可见。
使用网格时,这会导致 1-19047 行正确显示,而 19047 及以上的所有行都不会显示。
有人知道是什么原因造成的吗?或者知道如何更详细地识别问题?
delphi - 如何在 Delphi XE2 中安装 TMS Component Pack 6.0?
为了在 DelphiXE2 中成功安装它们必须进行哪些更改
xml - Delphi 跨平台应用程序中的 XML 文件库是什么?
我正在编写一个必须在 Windows 以及 OSX 中运行的 FireMonkey 应用程序。到目前为止,我一直将 MSXML 用于我的 Windows 应用程序,但当然这个库与 OSX 不兼容。那么问题来了,Delphi XE2 是否包含任何与 OSX 兼容的 XML 库,或者是否有与 OSX 兼容的第三方 XML 库?
delphi - Firemonkey 和 TDownloadUrl
我有一个 (Delphi XE2) VCL 应用程序,其中包含一个对象 TDownloadUrl (VCL.ExtActns) 来检查多个网页,所以我想知道 FireMonkey 中是否有等效对象,因为我想利用这个新平台的丰富功能。
使用线程的 Firemonkey 应用程序演示将不胜感激。提前致谢。
delphi - 使用带有 TDownloadUrl (Delphi) 的会话/cookie 下载网页
我一直在测试一些示例来使用 TDownloadUrl 保存网页,这真的很棒,但是我发现某些网页存在一些问题,这些网页无法访问真实内容,因为它们需要启动会话或设置 cookie,所以我有两种情况,TDownloadUrl 确实...
- 不创建/保存包含据称已下载网页内容的文件(状态代码:5 --> dsEndDownloadData),这是因为没有 cookie(状态代码:41 --> dsCookieStateDowngrade)
- 不保存内容的权利,而不是保存请求点击链接以访问所需内容的网页
有没有办法使用Delphi的原生组件绕过这些问题,即不用第三方组件(比如TEmbeddedWB)?
提前致谢。
注意:我在 WinXP 下使用 Delphi XE2 和 Firefox 6.0 和 IE 9.0
delphi - 如何添加在 OSX 上按预期工作的菜单项分隔符?
在Windows平台上,使用VCL时,当我们想在菜单中添加分隔符时,我们添加 aTMenuItem
和 a Caption := '-'
;
使用FireMonkey,我们添加 aTMenuItem
和 a Text := '-'
;
它在 Windows 平台上按预期工作,带有 Text='-' 的项目显示为分隔符。
但是,当我在OSX上运行相同的应用程序时,减号可见...
我还没有找到任何属性TMenuItem
来指定它是一个分隔符......
我已经尝试使用 aTMainMenu
和TMenuBar
( UseOSMenu := True|False;
) ,但我仍然有这个问题。
任何想法来创建一个真正的分隔符?(否则,我将检查操作系统并在 OSX 时将其删除......)