起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1792|回复: 3

如何控制字段的表现

[复制链接]
发表于 2004-12-8 09:13:34 | 显示全部楼层 |阅读模式
字段可以将实际存储的数据类型和表现类型分开,使一个字段可以根据其数据类型有多种表现形式,从而实现更加友好的界面风格。

字段的表现可以在许多地方设置,例如:“金额”字段,有些地方需要实现人民币大写;有些地方需要小写;有的地方需要将0显示出来(编辑时);有的地方不需要显示(打印时),可以通过以下方法来设置其表现类型。
回复

使用道具 举报

 楼主| 发表于 2004-12-8 09:15:47 | 显示全部楼层

数据字典层

1、在“字段”的“表现类型”中设置。例如:人民币的大小写转换;整数型字段表现为:CheckBox 。

2、如果想实现输出时,例如金额为0时不要打印出来,编辑时显示0,可以在“编辑属性|OutputText”中设置表达式就可以。例如,设置:IIf(self=0,null,self)  。

3、字段的事件中还可以实现一些表现和实际存储不一样。 例如:如果字段本身的类型是字符型,而表现为日期时间字符型,参考如下:

3.1、在字段的 OnGetAsTimeStamp 事件中写
Value := Business.Data.SqlTimSt.StrToSQLTimeStamp(Field.AsString);

3.2、在字段的 OnSetAsTimeStamp 事件中写
Field.AsString := Business.Data.SqlTimSt.SQLTimeStampToStr('yyyy-mm-dd',Value);
如果是字符型的字段,那么首先触发的是OnGetAsString 和 OnSetAsString ,这是字段的基础事件。例如:

Procedure TSJB1.FieldZD3GetAsString(Field: TDataField; var Value: String);
begin
  Value := SysUtils.Format('%s0101', [Field.AsString]);
end;.

Procedure TSJB1.FieldZD3SetAsString(Field: TDataField;const Value: String);
begin
  Field.AsString := StringUtils.Copy(Value, 1, 4);
  //那么结果肯定是只替换前面四位,后四位为:0101
end;

3.3、如果整数型字段,那么 OnGetAsInteger 和 OnSetAsInteger 是最基础的。

3.4、如果浮点型字段,那么OnGetAsFloat 和 OnSetAsFloat 是最基础的。

3.5、如果数字型字段,那么OnGetAsBCD 和 OnSetAsBCD 是最基础的。

3.6、如果日期时间型,那么OnGetAsTimeStampe 和 OnSetAsTimeStampe 是最基础的 。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 09:17:52 | 显示全部楼层

业务信息层

1、数据集,步骤如下:

1.1、选中需要定义的数据集。

1.2、选中数据集的右键菜单的“字段编辑器”选项,可以设置,参考数据字典层的设置。

1.3、只有“用户数据字段”和“临时字段”才可以设置,其他的都不可以。


2、文档(目前只有“表格文档(JustCell)”可以设置),步骤如下:

2.1、选中需要设置的单元格。

2.2、选中该单元格的右键菜单“设置单元格格式” 。

2.3、在对话框的“格式”页面中,设置“分类”等选项即可。

2.4、如果在表格文档(JustCell)中,需要设置特殊的表现,例如对齐方式等,那么需要将“设置单元格格式”的“格式”页面中选中非“常规”那个类,否则不起作用(因为常规,系统就默认是数据字段层的定义)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-8 09:18:28 | 显示全部楼层

提示:

这些特性是一层一层受影响的,底层的设置肯定对上层是有影响的,但如果上层重新定义,那么以上层为准。例如在“数据字典”层定义这些特性,那么由它生成数据集都会有影响;在“数据集”上定义这些特性,会影响所有由该数据集生成的文档;在“文档”上定义这些特性,会影响所有由该文档存在功能。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-23 00:46 , Processed in 0.038140 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表