动态数据交换(DDX)的另类用法

类别:编程语言 点击:0 评论:0 推荐:
        还是在写那个数据库应用的输入界面,在为对话框中的控件绑定变量时发现。如果给EDIT绑定CString的话虽然能使用MFC的动态数据效换,但是没办法去控制EDIT的行为。例如,我一开要让这些EDIT全被Disabled掉,只有在开打编辑状态后才能Enabled让操作者对EDIT的内容进行编辑。所以,如果给EDIT绑定CEDIT虽然能控制编辑框的行为但不能使用MFC的动态数据交换了。这样要自己写数据交换的功能会很麻烦。不过,可以采取给EDIT绑定一个CString又绑定一个CEDIT的办法来实现又能使用MFC的数据交换又可以控制EDIT的行为的目的。只是这样一来,每一个EDIT就会有两个成员变量与之对应。本来对话框中的EDIT就有很多,如此一来成员变量的数据更是翻倍。虽然这也没有什么,但我看着总是觉得不舒服。所以把主意打到了MFC的动态数据交换上来,我可不想重写新的DDX也不想写新的类。所以试着把DDX_Text()绑定的成员变量指向数据库类的中的RDX动态数据交换中由类向导生成的对应数据库字段的成员变量。这样一来,直接就与数据库类联系上了,在对话框中UpdateData()之后EDIT中的内容就直接传到数据库对应的字段变量中,再执行数据库类的UpData()就可以直接写入数据库。而不用像以前那样,先在对话框UpdateData()将更新内容交换到绑定的成员变量,再把这个成员变量的值赋给数据库类的字段变量。中间省去了很烦琐的东西。
        示列代码如下: DDX_Text(pDX, IDC_EDIT6, m_set->m_yxsj);
        要注意一点,如果数据库中有日期字段。绑定字段变量后要把对应这个日期字段的成员变量类型由CTime改为CString,不然这个字段不能在对话框的数据交换正确传送到EDIT中。 
        乱七八糟写了一堆,不知道有几个人能看明白。有时间再修改吧

本文地址:http://com.8s8s.com/it/it26391.htm