首先建立一个exteranl类型的freeform,并在窗体中dw控件引用它。
这里用一个自定义的长字符串作为它的数据源。
freeform中各列的列名情况如图:
赋值代码:
string rtnStr //注意pb中不能声明的同时赋值
rtnStr = '0123456789012012345678901234567于学波 01234567890123456711970-01-01孙子关系 01234567890123456789012345678901234567王忠诚 01234567890123456711970-01-01孙子关系 01234567890123456789012345678901234567王圣武 01234567890123456711970-01-01孙子关系 01234567890123456789012345678901234567武保栋 01234567890123456711970-01-01孙子关系 01234567890123456789'
int strlen, n
strlen = Len(rtnStr)
n = strlen/117 //117为每一行各列的长度综合 得出总行数
//必须先插入空行,否则会赋值失败,差一行赋一行似乎也不可行,必须一次性插入足够的空行,再赋值
for i = 1 to n
famdw.insertrow(0)
end for
string personNo, name, id, sex, bir, relation, personType
for i=1 to n
personInfo = mid(rtnStr , (i - 1)*117+1, 117)
//从个人信息字符串中截取各类信息并为各对应变量赋值
personNo = mid(rtnStr , 1, 18)
name = mid(rtnStr , 19, 30)
id = mid(rtnStr , 49, 18)
sex = mid(rtnStr , 67, 1)
bir = mid(personInfo, 68, 10)
relation = mid(personInfo, 78, 20)
personType = mid(personInfo, 98, 20)
//在famdw中对应的列中赋值。
famdw.setitem(i, 1, personNo)
famdw.setitem(i, 2, name)
famdw.setitem(i, 3, id)
famdw.setitem(i, 4, sex)
famdw.setitem(i, 5, bir)
famdw.setitem(i, 6, relation)
famdw.setitem(i, 8, personType)
end for
执行后的效果如图: