标签: delphi-xe

ClientDataset.RefreshRecord在Delphi XE中不再适用于连接表 - 任何解决方法?

尝试刷新连接到SQL语句中具有联接表的数据集的ClientDataset上的记录时,TClientDataset.RefreshRecord不再生成SQL的表连接部分.

因此,调用此方法会导致SQL错误"无效列名称"为不在主表中的每个字段.

这在Delphi 2010及更早版本中不是问题.

连接到TClientDataset的DBX4或BDE组件都会发生错误,因此很可能是TClientDataset代码更改出现问题.

要复制此问题:

在Delphi XE中创建一个只有一个表单的新应用程序,并在其上删除所需的数据库组件(TSQLMonitor,TSQLConnection,TSQLQuery,TDatasetProvider,TClientDataset,TDatasource和TDBGrid)并将它们相互绑定.

使用表连接创建一个简单的SQL语句,并将其放在TSQLDataset.SQL属性中.

SQL语句只包含两个字段 - 主表的键字段和连接表中的字段 - 例如伪代码:

Select 
  MainTable.IntegerKeyField
  , JoinedTable.JoinField
FROM MainTable
LEFT OUTER JOIN JoinedTable ON MainTable.LookupFieldID = JoinedTable.JoinKeyField
Run Code Online (Sandbox Code Playgroud)

将这两个字段添加为TSQLQuery和TClientDataset中的持久字段,其中包含pfInKey的关键字段的Provider Flag(如果不知道哪个字段是密钥,则RefreshRecord将不起作用,因此必须使用持久字段).

在表单上添加两个按钮 - 一个只打开Clientdataset,第二个按钮调用clientdataset.refreshrecord;

运行应用程序,按下按钮打开网格中的数据集和数据显示.

按"刷新记录"按钮,您将收到连接字段的SQL错误"无效列名称".

关闭应用程序,打开SQLMonitor日志并在Delphi生成的刷新记录SQL语句中,您将看到它没有包含表连接语句.

====

我真的很感激有关如何解决这个问题的任何想法.

sql delphi tclientdataset delphi-xe

15
推荐指数
1
解决办法
2151
查看次数

我应该转移到新的Delphi XE Starter吗?

自1987年以来,我是Turbo pascal/Borland pascal/Delphi开发人员.我目前只使用Delphi来维护我(以及我的一些朋友)私下使用的旧工具.不幸的是,我的所有专业代码已被移植,有些甚至是我直接参与其他开发语言和环境,很遗憾.好的,抱歉这个渐远的介绍.让我谈谈我的问题.

我目前拥有Delphi 7专业版.这是一个昂贵的举动,永远不值得它的成本,只是为了我的业余爱好者使用.

现在,这个XE Starter版本已经出现.149欧元,看起来很划算.它似乎与我现在使用的几乎所有东西一起出现,并且有一些我想念的东西; unicode和泛型,特别是.

你知道这个优惠中是否有任何隐藏(坏)惊喜吗?那么,我应该留下还是应该去?

您认为此举的利弊是什么?

谢谢.

delphi delphi-7 delphi-xe

14
推荐指数
5
解决办法
3891
查看次数

如何使用Delphi作为大型Web应用程序的后端来创建REST Web服务器?

我读了这个问题,但不知何故对答案不满意.

我也很快阅读(正如那个问题中的建议)MarcoCantù2010手册的最后一章,我从中引用以下内容(我想我可以引用这么简短的文字):

我[MarcoCantù]在Delphi编写的服务器端Web和REST应用程序方面投入了大量资金,近年来我开始在会议上使用Delphi Web应用程序REST Framework119(即DWARF),目前还没有公开发表......仅仅因为它太粗略而未完成发表.我已经看到其他正在努力克隆Delphi中的Rails并提供其他REST服务器架构.我认为,如果您想构建一个非常大的REST应用程序架构,您应该推出自己的技术或使用这些原型架构之一.

考虑到我拥有Delphi XE Professional和DataSnap不在那里,我想根据上面的评论考虑编写大型应用程序,似乎DataSnap不是一个选项.

甚至有商业解决方案吗?我不想考虑"我自己的REST实现",我想创建一个使用我的数据模块的网络服务器,我使用我选择的DAC(在本例中为Devart).

最后说明:我的目标是为大型Web应用程序编写后端,在客户端我想使用Ext JS 4.0,但我想用javascript完成所有客户端工作,充分利用EXT JS,所以基本上我需要一个仅用于数据和跟踪状态的网络服务器,而不是用于提供网页.

delphi rest delphi-xe

14
推荐指数
2
解决办法
2万
查看次数

需要多线程内存管理器

我将不得不创建一个多线程项目很快我看到实验(delphitools.info/2011/10/13/memory-manager-investigations)显示默认的Delphi内存管理器存在多线程问题.

在此输入图像描述

所以,我找到了这个SynScaleMM.有人可以给它或类似的内存管理器提供一些反馈吗?

谢谢

delphi delphi-xe

14
推荐指数
2
解决办法
7100
查看次数

在1.000表单中将多个标签设置为透明?

我用Devexpress为我的软件设置了皮肤,我发现标签是不透明的,导致它们具有灰色背景.

只有无穷无尽的形式,所以我想知道是否有办法自动完成这项任务(将标签设置为透明).

我之前做了类似的事情,表单上的Devexpress控件有LookAndFeel.NativeStyle = True,我在所有dfm表单上使用Grep Search将其替换为False.但是,在标签的情况下,透明属性不存在.

谢谢.

delphi delphi-7 delphi-2010 delphi-xe

14
推荐指数
4
解决办法
1783
查看次数

Delphi XE是否比Delphi 2007生成更快的代码?

我一直在使用Delphi 2007来处理不需要Unicode的项目.

最近我一直在想Delphi XE,因为

  • 每个人都赞美它;
  • 内置SVN支持

我想知道,编译器中是否有任何增强功能使Delphi XE生成比Delphi 2007更快的代码,我说的是:

  • 更好地消除死代码(delphi 2007是不错的,但不会消除100%的死代码)
  • 循环展开(ala C的O3优化级别)
  • 自动内联短程序
  • 多线程代码中的开销较少.

编辑

在此页面上:http://www.embarcadero.com/products/delphi/whats-new

它列出:Improved compiler performance 那究竟改进了什么?

delphi optimization delphi-xe

14
推荐指数
3
解决办法
3341
查看次数

TMainMenu中的透明PNG图像(带有TImageList)

我想在TImageList中加载具有透明背景的PNG,并在TMainMenu(通过TAction)中使用它.
但是,在Delphi中,背景只是黑色.PNG支持只有一半在Delphi中实现吗?

家伙说它适合他,但有一个按钮而不是主菜单.

我的设置:

  • 我的图像是每种颜色8位加上8位透明通道(我也尝试过1位透明但仍然不起作用).在任何其他程序中,图像看起来都很好.
  • 德尔福XE.
  • 在TImageList的编辑器中,"透明颜色"和"填充颜色"设置为"默认"并被禁用.

注意意外行为:

当用户更改ColorDepth属性的值时,DELPHI将丢失所有图像(仅在TIMAGELIST中的整个表单中).

该bug可以按需复制.丢失的图像可以从之前的DFM文件中恢复,来自'histoy'文件夹.

delphi delphi-xe

14
推荐指数
3
解决办法
2万
查看次数

Delphi中的游戏开发

我想为个人/学习目的制作一些简单的游戏.简单的游戏我指的是平台,迷宫,街机游戏等游戏.我有一天也想用一个简单的编辑器创建一个平台游戏,让其他人可以编辑和设计他们自己的游戏关卡.

我不确定Delphi是否可行,但我没有看到或听到很多人在Delphi中编写游戏,但是Delphi是我在中级水平上理解的唯一语言.

如果Delphi可以像我提到的那样创建简单的游戏,我是否正确地认为我需要一些可以帮助我做到这一点的库,例如Direct X?

我正在使用Delphi XE,我希望我已经等待并升级到Delphi XE2,因为它似乎包含一些内置的Drawing库.

我期待听到你对此的回应.

谢谢.

delphi directx delphi-xe

14
推荐指数
2
解决办法
5489
查看次数

如何自动调整虚拟模式下列表视图的列宽?

当我使用的TListView(ViewStyle = vsReport)我可以自动调整的列的宽度设置LVSCW_AUTOSIZELVSCW_AUTOSIZE_USEHEADER在每一列中的宽度属性值,现在我开始使用在虚拟模式的列表视图,但列的宽度没有被修改根据这些价值观.所以问题是:当lisvtiew处于虚拟模式时,如何调整列的宽度以适应内容或标题?

delphi tlistview delphi-xe

14
推荐指数
1
解决办法
7186
查看次数

如何在Delphi中重新组织我单位的文件夹结构?

我用Delphi开始了一个原型,所有源文件都在一个目录下.
现在,我想用文件夹重新组织所有内容.

我找到了两种方法来做到这一点.

1 /首先是在Delphi IDE和Save as 新文件夹中打开每个单元.然后删除旧的单元文件.

2 /在Windows资源管理器下,重新组织所有内容,然后在Delphi IDE中打开项目,删除对旧(未知)单元的引用,然后按文件夹添加每个单元文件夹.

因为我有100多个单位,无论我使用什么方法(1或2),它都非常痛苦.
你是如何进行这种重组的? 我错过了一个功能吗?

delphi directory refactoring directory-structure delphi-xe

14
推荐指数
1
解决办法
4305
查看次数