怎么动态创建子数据窗口?
我有一数据窗口,其中一列想用下拉数据窗口。现在的想法是,建立数据窗口时这列是EDIT属性,在程序中动态地把它设置为下拉数据窗口编辑形式。但是,语句dw_1.object.columnname.dddw.name='d_branch' 中需要先建立数据窗口对象d_branch ,请问:数据窗口对象 d_branch 怎么动态建立? 动态建立datastore 的方法已经掌握。急!!!一经验证正确,马上给分!非常感谢!!! 问题点数:21、回复次数:4Top
1 楼bearzjl(老鬼)回复于 2001-11-23 22:36:30 得分 0
不知道为什么,系统提示我最多给21分,所以,请不要嫌弃。谢谢!Top
2 楼lianghua_21cn(PB桂花宝典)回复于 2001-11-24 01:13:01 得分 5
??如果数据窗口需要显示,最好在设计期间完成。如d_branch
然后:
datawindowchild dwc
dw_1.getchild('[字段名]',dwc)
dwc.settransobject(sqlca)
dwc.insertrow(0); //动态修改里面的内容
dwc.setitem(...)....
Top
3 楼Sunny21cn(毛头)回复于 2001-11-24 11:39:26 得分 1
同意Top
4 楼torrent_whf(柔儿)回复于 2001-11-24 20:02:09 得分 15
首先可以用函数librarycreate(libraryname{,comments}) return integer 动态建立一个诸如Dwtemp.pbl的空库,然后用函数LibraryImport(libraryname,objectname,objecttype,syntax,errors{comments}) 动态将一数据窗口对象加入到此库中。其中libraryname就是刚建立的空库名称,objectname是"d_branch",objecttype为"importdatawindow!",syntax为此数据窗口的语法串。最后可以用函数librarydelete(libraryname)将动态建立的库删除。你可以用函数libraryexport(libraryname,ojbectname,objecttype)到出一个现有的数据窗口对象,看看语法串怎么写。string error_syntaxfromSQL
string new_sql, new_syntax
new_sql = "SELECT t_num FROM "+t_name+" WHERE tixing_num='"+tnum+"'";
new_syntax = SQLCA.SyntaxFromSQL(new_sql, 'Style(Type=Form)', error_syntaxfromSQL)
if Len(error_syntaxfromSQL) > 0 then
MessageBox('error', error_syntaxfromSQL)
return
end if
上面一段程序可以动态建立语法串。可以供你参考。
改成DDDW:
dw_1.Object.columnname.dddw.Name = '用做DDDW的DW的名字'
dw_1.Object.columnname.dddw.DisplayColumn = '用做DDDW的显示列的名字'
dw_1.Object.columnname.dddw.DataColumn = '用做DDDW的数据列的名字'
dw_1.Object.columnname.dddw.PercentWidth = 150 //DDDW显示宽度
dw_1.Object.columnname.dddw.Lines = 20 //DDDW显示行数
dw_1.Object.columnname.dddw.Limit = 0 //输入字符限制
dw_1.Object.columnname.dddw.AllowEdit = TRUE //允许输入
dw_1.Object.columnname.dddw.AutoHScroll = TRUE //自动水平滚动
dw_1.Object.columnname.dddw.UseAsBorder = TRUE //是否显示右侧下箭头
dw_1.Object.columnname.dddw.Case = 0 //输入字符类别
dw_1.Object.columnname.dddw.VScrollBar = TRUE //DDDW显示垂直滚动条
然后可以用上面的方法将数据窗口的列的编辑属性由EDIT该为DDDW。
最好你让动态建立的DDDW与一个DATASTORE共享,这样一来,对DDDW的更改可以通过对DATASTORE
的更改来实现。
以上方法仅仅是一个解决你的问题的思路。当然,最简单的方法就象楼上的说的,可以在设计的初期就写死。这样一来,省事了不少。
Top




