我正在尝试定义重构我正在进行的项目的最佳方法.
由于缺乏良好的设计,几乎所有项目都由以下部分组成:
1)包含业务逻辑的表单
2)巨大的数据模块(每个表单1个+额外的一些)
3)包含公共代码(库)的一些单元
没有OOP(除了一些小区域),代码重用它是最低级别的.
一个问题是使用了数据感知控件,因此在数据模块上删除许多数据集+数据源并以高度耦合的方式直接链接到数据库非常简单.
理想情况下,我想提取类,如TCustomer,TEmployee,以获得os封装的优势,并且可以在将来创建新的UI而无需复制所有代码.
无论如何,我的问题是:如何继续处理数据控件?我应该实现一个返回数据集的函数,并将dataawarecomponent.datasource链接到函数结果吗?
function TCustomer.LoadByID(aCustomerID: integer): TDataset
Run Code Online (Sandbox Code Playgroud)
?
我在Delphi中使用DBGrid组件.我想知道如何设置列的格式.我有真正的价值观,我希望在网格中显示为货币.
有人知道怎么样?
我需要在我的Delphi 2010应用程序中向一个TDataModule发送一条Windows消息.
我想用
PostMessage(???.Handle, UM_LOG_ON_OFF, 0,0);
Run Code Online (Sandbox Code Playgroud)
题:
TDataModule没有Handle.我如何向它发送Windows消息?
我之前一直在使用Delphi(Turbo Pascal)并且一直都是Windows家伙.我的妻子为我的生日买了一台新的iPad,我昨晚第一次使用它.哇!...我不知道上瘾是多么令人上瘾.
所以,现在我需要考虑为这台iPad编写一两个应用程序.我猜我需要从Delphi 2010升级到Delphi XE2,我正在寻找一个很好的Delphi资源来开发和分发iPad应用程序.
我一直认为View是一个存储查询.最近我需要在项目中使用派生表.这让我想到了观点.
是否与派生表视图相同,除了它已被保存为动态构建派生表的逻辑实体?
如果所有业务逻辑都存在于数据模块(TSQLDataSets和TDataSetProviders)中,您将如何重构代码以使应用程序更适合单元测试?
我从Turbo Pascal 3开始,去了TP5,第二天买了TP6,叫做Borland,降级到TP5.5.买Delphi 3,现在有Delphi 5 Enterprise.由于两个原因,我对4-5年前编写代码失去了兴趣;
我在共享软件市场上有一些程序可靠,但需要认真更新.我喜欢Delphi,或者当它是Borland时(在Borland收购DBase和所有其他垃圾之前),我想尽可能多地挽救我的D5E代码,但我怀疑我能做到.我计划升级到Delphi 2010.
我的下一个软件版本需要与数据库进行交互.我非常精通MS Sql,并喜欢将所有数据库代码放在存储过程中.
什么是与Delphi良好交互的最佳数据库选择,允许存储过程并且易于部署,即使是Geico gecko也可以部署它?
我下载了Delphi 2010的试用版并解压缩了安装.我一直在阅读包中包含的安装文档.我从zip包中的install.htm开始.
install.htm明智地告诉你看到以下两篇文章:
发行说明声明如下......
MSSQL驱动程序需要安装SQL Native Client.dbxmss.dll需要SQL Native Client 2008.dbxmss9.dll需要SQL Native Client 2005
我检查了我的机器以查看是否安装了SQL Native Client.不.我没有读完文档所以我做了一个注释来安装SQL Native Client.
我搜索了dbxmss.dll和dbxmss9.dll,并在Embarcadero论坛上找到了一个非常有趣的帖子.在这里读线程.
在阅读了这个帖子并仔细思考后,我认为我不会使用Microsoft SQL Express.我不能依赖安装了正确驱动程序的客户.所以,我回来寻找一个不同的解决方案.
如果我向普通大众销售40美元的产品,我需要有一个防弹解决方案,不需要我的全新客户在我的软件工作之前更新他们的机器.
一些数据库应用程序开发人员更喜欢在主表单之前通过编辑项目源文件来创建数据模块
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TDM, DM);
Application.CreateForm(TMainForm, MainForm);
{...}
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
问题是 - 为什么?什么是利弊?
我正在寻找处理这种情况的最佳方法.我想在数据库表中存储一个摊销计划.每行包含日期,当前余额,付款,市政,利息和新余额.对于典型的30年抵押贷款,这将是360行或数据库插入.
我应该使用Delphi在循环内进行计算并为每个结果执行插入操作,还是应该在存储过程中执行这些计算?
这将是单个用户,本地计算机,桌面应用程序.
我使用的是Delphi 2010 Professional,它没有附带Firebird的dbExpress驱动程序.如果我开始使用Chau Chee Yang编写的Firebird dbExpress驱动程序,然后再升级到XE?企业(Firebird dbExpress驱动程序附带)代码才能运行?
delphi ×9
datamodule ×4
database ×2
currency ×1
data-aware ×1
dbexpress ×1
dbgrid ×1
delphi-2010 ×1
delphi-xe2 ×1
dunit ×1
easy-install ×1
firebird ×1
firemonkey ×1
format ×1
ios ×1
lazarus ×1
loops ×1
refactoring ×1
sql ×1
unit-testing ×1
view ×1