⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 060805_05.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<link REL="stylesheet" HREF="/style.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>计算机世界日报:
怎样在TDataset中汉英混用
</title>
<!--***********-->
</head>

<body bgcolor="#FFFFFF" >














<p><br>
<font color="#b904e8"><b><em><a href="class.htm">返回</a></em></b></font>
<center>
<font color="#0000c0"><h2>
怎样在TDataset中汉英混用
</h2></font>
<h3>
云南昆明市江岸三期一组团
<br>吴中卫
</h3>
</center>
<p><font color="#ffffff">----</font>

我们知道,在 TDataset 控件中,字段名是可以用中文的,不过在实际编程时往往中文字段不比英文字段显得方便,相反出错的几率到是很高的。而针对客户或是制成实用(商品化)的软件,没有了中文表达,没有了适合本国国情特色 的界面,该软件又是不成功的。如果 TDataSet 能提供这样一种转换功能,即内部是英文字段,而呈现给用户的是中文界面,不仅查找、搜索对用户来说容易、简单而且大大简化了开发者的编程难度,那么这样的属性(功能)应该是大受欢迎的。 
<p><font color="#ffffff">----</font>
实现这样的转换可以有好几种方法。 
<p><font color="#ffffff">----</font>
一种是静态转换。所谓静态,即是在设计字段或制作表头时,修改其相关Lebel 或 DisplayLabel。无论该字段是否引用或参照别的字段,一旦形成可执行的组件对象,这中形式也就随之固定下来。到了实际运行时,这时的形式也可以满足一般的需求。但是这种形式不具备伸缩性,也不具备可扩充性。
<p><font color="#ffffff">----</font>
另一种是动态修改。我们从 TTable 控件得知,Fields 属性是该 Table 的字段属性,而其每一字段的 DisplayLabel 属性是在运行时可以改动的。利用这一点,我门可以制作一个通用的作用于 TDataSet 的控件,使其具有数据感知功能,在数据库加载时替我们做这个动态转换。至于控件对象选用 TDataset 而不选用 Table(TQuery)是出于移植性的考虑。 
<p><font color="#ffffff">----</font>
下面说一说其工作原理。
<p><font color="#ffffff">----</font>
当一 Delphi 的执行程序加载到内存当中时,它首先是完成各成员对象的初始化即完成 Load 事件,然后才根据需要执行各组件的 Create,对于继承自 TDataSet的TTable、TQuery 等也不例外。我们关心的是 Form 的 Close事件和 TTDataSet 的 Open 和 Close 事件,当我们连结(HOOK)到这些对象的Notify事件,也就具备了被事件驱动(唤醒)的功能。SetEnevts 和 RestoreEvents 这两个过程是起到在Load(装载)时设置主单元 Form和 TDataSet 的OPen和Close 事件,在关闭(主单元或数据库)时,恢复其原来的事件。GetForm 为获取主单元的窗体的过程。IniFileName 为保存有字段中英文对照表的 INI 文件。 
<p><font color="#ffffff">----</font>
其格式如下: 
<pre>
  [DEFAULT]  ; 设置为缺省库 
  RKSJ=入库时间  ;字段名  RKSJ    中文: 入库时间 
  DJ=单价  ;字段名  DJ      中文:单价 
  YS=颜色  ;字段名  YS      中文:颜色 
  BZ=备注  ;字段名  BZ      中文:备注 
  [DEFAULT_SIZE]  ;缺省库字段长度 
  RKSJ=12   ;字段 RKSJ 显示长度为 12 
  DJ=8  ;字段 DJ   显示长度为 8 
  YS=10  ;字段 YS   显示长度为 10 
  BZ=40  ;字段 BZ   显示长度为 40 
</pre>
<p><font color="#ffffff">----</font>
IniSection 指定该库(TTable,TQuery) 位于 IniFileName 的哪一区。我们看到在 Load 这个重载过程中,有一个Loading 的变量,它是为了防止在构建Form或DataMoudle时加载了SetEvents, 而我们的目的是在运行时设置,而不是在 Delphi的集成环境里进行 Form 的设计时。在 Save 的过程中,IniFileName 的存取位置在该执行程序的目录下,Save 过程分为两部分进行。 
<p><font color="#ffffff">----</font>
当用户指定了IniSection 时,对于本  FDataSet 的字段都将放在指定的 IniSection 区中, 期间对以前的任何数据不作保留。
<p><font color="#ffffff">----</font>
当用户没有指定 Inisection 时,FDataSet 的字段都将放在 Default(缺省)区中,此时对保存的 FDataSet 字段做进一步的更新处理。 
<p><font color="#ffffff">----</font>
原程序可<a href="060805-05.zip">下载</a> Zip 2KB
<p><font color="#ffffff">----</font>
该单元在 Delphi 3.1、Delphi 4.1 下编译通过。 


 



<p align="right"><small><em>中国计算机世界出版服务公司版权所有</em></small> 
<br>
</p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -