起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1174|回复: 0

在表格文档中,如何实现百分比显示数据?

[复制链接]
发表于 2004-12-7 16:23:45 | 显示全部楼层 |阅读模式
表格文档中的预览和编辑走的是不同模式,所以可以实现显示与实际值不同步。即,存储和表现分开。如果直接设置单元格的格式为XX,只有预览才起作用。如果想实现编辑和预览同时起作用,需要通过代码实现。在业务信息中,使用数据集的 OnGetFieldText 和 OnSetFieldText 事件可以实现数据存储和表现的分离。分为输入和表现两个方面,参考如下:

1、输入(从用户输入的数据 -> 数据集 -> 数据库):
   例如:输入的是 1 ,实际数据库存的分为两种情况:一是 1 ,二是 0.01
1.1、将 1 转换为 1 保存, 默认就是这样的。
1.2、将 1 转换为 0.01 保存,在数据集的 OnSetFieldText 中,参考代码如下:

Procedure TYWXXSL.dsDataSetFieldText(DataSet: TDataSet;
Field: TDataField; const Text: String);
begin
  if Field.FieldName = 'SJB0105_ZD2' then
     Field.AsFloat := SysUtils.StrToFloat(StringUtils.Copy(Text, 1, Length(Text)))/100;
end;


2、表现(从数据库中实际保存的数据 -> 表现界面),例如:如果实际的值是 0.1,表现分为两种情况:一是 0.1%,二是 10%
2.1、将 0.1 转换为 0.1%表现,可以在字段的“显示格式”那里设置,例如:#.##%。
2.2、将 0.1 转换为 10%表现,在数据集的 OnGetFieldText 中实现如下代码:

Procedure TYWXXSL.dsDataGetFieldText(DataSet: TDataSet;Field: TDataField;
var
Text: String;
begin
  if Field.FieldName = 'SJB0105_ZD2' then
    Text := SysUtils.Format('%f', [Field.AsFloat*100])+ '%';
end;
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 18:08 , Processed in 0.035550 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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