编码笔记

导航

2012年6月5日 #

XE2做单实例

摘要: 1 unit Unit11; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 8 9 type10 TMyTestClass = class11 private12 //class var n : integer;13 class var MyTestCl... 阅读全文

posted @ 2012-06-05 16:54 封三郎 阅读(695) 评论(2) 推荐(1) 编辑

2012年5月9日 #

业务逻辑与界面元素分离的一次小尝试

摘要: 项目中有一个需求,为单据的表头增加自定义项。受制于现在的架构和表头布局自定义的实现机制,自定义项的内容只能预先在IDE里面创建好,而不能通过代码动态创建,只好在单据基类里面预先放入一组控件。由于自定义项本身需要提供编辑、参照、配置、读取与保存等操作,而基类本身已经臃肿不堪,接这个机会尝试一次界面与业务逻辑分离的尝试。因为架构中本身没有数据访问曾的设计和实现,而这个仅仅是作为一个尝试,因此控制类里面并没有对数据访问这块进行分离。类图如下:因为自定义项目前支持的是3个,所以定义了一个常量来描述自定义项的个数,以后如果有扩充,修改这个常量即可。详细代码如下: 1 { 2 该类用于控制单据表头... 阅读全文

posted @ 2012-05-09 10:52 封三郎 阅读(1041) 评论(1) 推荐(1) 编辑

2012年5月2日 #

Delphi实现静态变量

摘要: C++有静态变量,static关键字描述,其实Delphi也可以做到。以前一般采用的是const方法来实现,现在的Delphi可以用class关键字来实现。附代码如下,两种方式具有示例。 1 unit Unit6; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 8 9 type1... 阅读全文

posted @ 2012-05-02 11:05 封三郎 阅读(3514) 评论(1) 推荐(1) 编辑

2012年4月15日 #

Delphi XE2 IDE Classic Keyboard Shortcuts

摘要: Shortcut Action Alt+[Finds the matching delimiter (forward)Alt+]Finds the matching delimiter (backward)Alt+Page DownGoes to the next tabAlt+Page UpGoes to the previous tabAlt+Shift+Down ArrowMoves the cursor down one line and selects the column from the left of the starting cursor positionAlt+Shift+ 阅读全文

posted @ 2012-04-15 23:37 封三郎 阅读(340) 评论(0) 推荐(0) 编辑

Delphi XE2 Default Keyboard Shortcuts

摘要: Shortcut Action Alt+[Finds the matching delimiter (forward).Alt+]Finds the matching delimiter (backward).Alt+Left ArrowGo back after Alt+Up Arrow or Ctrl+Click (go to declaration) operation.Alt+F7Go to previous error or message in Messages View.Alt+F8Go to next error / message in Messages View.Alt+P 阅读全文

posted @ 2012-04-15 23:34 封三郎 阅读(584) 评论(0) 推荐(0) 编辑

2012年4月9日 #

datasnap传输流/文件问题

摘要: 我在datasnap服务器里面定义了方法:procedure UpdateDoc(ItemID : integer; doc : TStream);客户端AServerMethods_PublicClient := TServerMethods_PublicClient.Create(DM_Client.SQLConnection1.DBXConnection); ItemText := TMemoryStream.Create; try ItemText.LoadFromFile('E:\private\ksxt\Source\Client\Win32\Debug\blank.rt. 阅读全文

posted @ 2012-04-09 11:37 封三郎 阅读(1207) 评论(1) 推荐(0) 编辑

2012年4月6日 #

查询条件的封装(类图)

摘要: 阅读全文

posted @ 2012-04-06 22:29 封三郎 阅读(637) 评论(0) 推荐(1) 编辑

查询条件的封装(小结)

摘要: 截至今天,查询条件的封装第一阶段的工作基本完成了。在之前的基础上做了一些调整,由于D7与XE/XE2的差异,某些思路也做了调整。查询条件项的驱动控制由于是使用TCollection和TCollectionItem来实现的,所以不能作为查询条件项的属性来进行选择(应该是只有继承自TComponent的组件才可以作为属性的选择对象),取而代之的是采用Index的方式来进行绑定,这个我觉得是设计上的一个缺陷,并没有完全符合我最初的设想,在使用上不够简便直观。如果是在XE2下可以有更好的选择,可以用TCustomAttribute加反射机制来实现持久化配置数据的动态绑定。常量单元ConditionCo 阅读全文

posted @ 2012-04-06 21:58 封三郎 阅读(1903) 评论(0) 推荐(2) 编辑

2012年4月4日 #

查询条件的封装(二)

摘要: TConditionItem 1 { TConditionItem } 2 3 procedure TConditionItem.Assign(Source: TPersistent); 4 begin 5 if Source is TConditionItem then 6 begin 7 if Assigned(Collection) then Collection.BeginUpdate; 8 try 9 //RestoreDefaults;10 ConditionName := TConditionItem(Source).Condit... 阅读全文

posted @ 2012-04-04 21:26 封三郎 阅读(589) 评论(0) 推荐(1) 编辑

查询条件的封装(一)

摘要: 因为现行的项目是使用cxGrid作为主要的控件,通用的查询条件模块也是依赖cxGrid来实现的。但是现行的实现方式和设计思路的灵活性和维护性都比较差,存在每次改动代码量较大、修改处多且分散的问题,所以我考虑重构一下,从设计上改变目前的方式。初步的想法是,cxGrid不动,通过一个UI类来控制cxGrid的显示;设计一个条件项类和条件项列表类,用于程序员在设计器可视化设计查询条件;最后有一个业务逻辑控制类,可以控制每一个查询条件项,定义其获取条件值的方式,通过这种设计将界面与逻辑分离。以前有前辈指点过,也有大牛强调过,界面、业务、数据必须分离,但是,我以为对于业务逻辑来讲,它本身就是和数据紧密结 阅读全文

posted @ 2012-04-04 21:04 封三郎 阅读(1510) 评论(0) 推荐(0) 编辑