发信人: fbilo() 
整理人: hunter__fox(2002-03-16 22:15:50), 站内信件
 | 
 
 
2.有关判断字段的数据类型并相应设置值的格式的问题。
 
 	根据选择的字段的数据类型相应的动态设置输入值的格式是复合查询中常见的一 个问题。在本示例中,Visual Foxpro为我们提供了一个有效的解决方案。
 	在本方案中使用的有关方法有:表单的自定义方法settextboxformat、vaildat etype。
 
 	Settextboxformat方法:
 用来在向放置值的文本框txtvalue1、txtvalue2中输入查询的值前设置文本框的 格式(inputmask、format)。比如,在字段组合框中选择了字符型字段或日期型 字段,则文本框中就必须设置不同的输入格式以保证用户正确操作。
 
 LPARAMETERS oSource, oTxt
 LOCAL lcType
 oTxt.Value = ""
 lcType = TYPE(oSource.Value)   **用type()函数来判断字段的数据类型
 DO CASE
 		CASE lcType = "D"	      **日期型
 			oTxt.Format = "D"
 		CASE lcType = "L"        **逻辑型
 			oTxt.Inputmask = ".T.,.F."
 			oTxt.Format = "M"     
 		CASE lcType = "T"       **日期时间型
 			oTxt.Inputmask = "99/99/99 99:99:99"
 ENDCASE
 这个自定义方法需要接收两个参数:oSource和oTxt。通过在组合框的interacti vechange事件中调用该方法并向之传递这两个参数:
 THISFORM.SetTextboxFormat(THIS, THISFORM.txtValue1)
 因为这个方法是表单上的两个组合框cboField1、cboField2共用来设置两个文本 框txtValue1、txtValue2的值的,所以把它建立为一个表单的自定义方法,通过 向该方法传递两个参数来指定使用的复合框和文本框。在本示例中,oSource的值 this用来指定使用的复合框,oTxt的值thisform.TxtValue1用来指定使用的文本 框。
 需要注意的是:这是一种在visual foxpro中常用的编程技巧。通过把表单上几个 控件通用的方法设置为表单的一个自定义方法,可以减少编写代码段的工作量, 并且便于修改。
 初学者可能不理解visual foxpro中为什么要使用自定义方法,这就是个典型的例 子。
 在上面的程序段中,inputmask属性大家可能比较熟悉,而文本框的format属性就 比较少见了。其实这个属性还是很有用的。具体的可设置值大家可以查询帮助, 在这里我简单解释一下D和M值的用法:
 	format="D"            使用当前设置的日期格式
    fromat="M"            提供包括向后兼容的格式
  -- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.101.254]
  | 
 
 
 |