摘要: 窗口、控件以及字体大小均随分辨率而变化,让界面适应各种不同的分辨率。var FWidth: Integer;begin inherited; if (Screen.width <> 1024) then begin FWidth := Self.width; Scaled := True; Font.Size := (Self.width DIV FWidth) * Font.Size; // 字体大小调整 ScaleBy(Screen.width, 1024); // 控件大小调整 Self.Height := longint(Height) * lon... 阅读全文
posted @ 2013-01-30 15:03 delphi中间件 阅读(1104) 评论(0) 推荐(0) 编辑
摘要: OleVariant的本质OleVariant,COM的一种数据类型。MIDAS基于COM之上构建的,自然使用OleVariant作为数据序列格式。延续到现在最新的DATASNAP仍然支持它。TClientDataset.data,TClientDataset.delta,这俩个属性的类型都是OleVariant。OleVariant可以是string,integer,float...这个大家都知道,但它也可以是array of OleVariant,这个可能有人不知道了。明白了这点就是datasnap中间件主从表数据同步的关键。var a: TServerMethods1Client; .. 阅读全文
posted @ 2013-01-30 11:49 delphi中间件 阅读(7912) 评论(0) 推荐(0) 编辑
摘要: DATASNAP中间件使用巢状对象提交数据非常方便,巢状对象会自动生成更新的SQL语句,无需我们手工拼写,只需类似如下的一行代码即可搞定。dm.dspQuery.ApplyUpdates(v, 0, ErrCount);但是,有时候却会报错。一种原因是数据表结构设计时使用了数据库保留的字段名引起的。比如SQL SERVER数据库如果某表结构使用status的字段名,因为status是SQL SERVER的保留字。而巢状对象自动生成的SQL语句不会用[status]把status包起来,导致sql server保留字错误。如何解决?设计数据表结构的时候,字段名要避免使用数据库的保留字。二种原因是 阅读全文
posted @ 2013-01-30 11:40 delphi中间件 阅读(805) 评论(0) 推荐(0) 编辑
摘要: 如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(Sender: TObject);varsDate: string;begininherited;// 默认查当天的销售数据sDate := FormatDateTime('yyyy-mm-dd', Now);DateTimePicker1.DateTime := StrToDateTime(sDate + ' 00:00:00');DateTimePicker2.D 阅读全文
posted @ 2013-01-30 11:26 delphi中间件 阅读(10570) 评论(0) 推荐(1) 编辑
摘要: 最近做了个断网收银的项目,服务端使用SQL SERVER数据库,收银机使用ACCESS数据库。做了个中间件来同步数据。哪些数据需要同步?新增的数据修改过的数据删除的数据(删除只是置删除标志位,可以视为修改过的数据进行处理)需要同步的数据表统一预留俩个用于数据同步的字段:字段名:CreateDate,数据类型:TDateTime,新增数据的时间戳;字段名:ModifyDate,数据类型:TDateTime,修改过的数据的时间戳。倘若需要同步的数据表内的数据小,可以不使用时间戳,而在每次同步数据之前,先删除表内的所有数据,然后再插入同步的数据。如此编程最为简单,但必须是同步数据较小的情况下。数据同 阅读全文
posted @ 2013-01-30 11:17 delphi中间件 阅读(2191) 评论(1) 推荐(0) 编辑