我的表中有一字段,用于存储爱好,爱好的内容存于数据字典中(动态),要怎么处理才能在数据窗口中可以进行复选多个爱好?查了一天资料了,没查到应该怎么做。不要告诉我要在表里面建多个字段,然后选择EDIT-》STYLE-》CHECKBOX。^_^
------解决方案--------------------
多个爱好在你的表中也应该是一个字段呀,用某种符号分割是吧。可行的做法是对dw中该爱好列 用个按钮 展开,类似于选日历一样,打开一个新的dw,该dw用checkbox,选择好后拼成你需要的字段即可。
即便是多跳记录,也可以用这个方法,最后生成几条记录就是了。
------解决方案--------------------
选择多行?行不行?
------解决方案--------------------
数据窗口中多行选中程序
首先定义窗口实例变量:
long Il_LastRow = 1 //最后一次点击的行。
然后开始编写多行选中程序。程序算法描述如下:
1、如果按下了Control键
如果是在选中行上,取消该行
否则,选中该行
记录当前到窗口实例变量中
2、如果按下了Shift键
取消所有选中行
选中上次点击行和当前行之间的所有数据行
记录当前到窗口实例变量中
3、如果没有按键
如果点击行为选中行,不执行任何操作
否则,取消所有选中行,选中当前行
记录当前到窗口实例变量中
比如,我们在窗口dw_1的Clicked事件中编写该脚本,程序如下:
LONG Ll_CurrentRow , Ll_Circle
IF row <= 0 THEN RETURN
Ll_CurrentRow = row //当前激活的行
IF keydown(keyshift!) THEN
IF Il_LastRow = 0 THEN
THIS.SelectRow(Ll_CurrentRow , True)//高亮当前行
Il_LastRow = Ll_CurrentRow
ELSE
THIS.SelectRow(0 , False)
IF Ll_CurrentRow > Il_LastRow THEN
FOR Ll_Circle = Il_LastRow TO Ll_CurrentRow
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
ELSE
FOR Ll_Circle = Il_LastRow TO ll_CurrentRow STEP -1
THIS.SelectRow(Ll_Circle , TRUE)
NEXT
END IF
END IF
ELSE
Il_LastRow = Ll_CurrentRow
IF keydown(keycontrol!) THEN
THIS.SelectRow(Ll_CurrentRow , Not THIS.IsSelected(Ll_CurrentRow))
ELSE//单选情况
IF THIS.IsSelected(Ll_CurrentRow) = TRUE THEN //如果本身选中
Il_LastRow = Ll_CurrentRow
ELSE//如果没有选中,则选中该行,其他行不选中
THIS.SelectRow(0 , FALSE)
THIS.SelectRow(Ll_CurrentRow , TRUE)
Il_LastRow = Ll_CurrentRow
END IF
END IF
END IF
在DoubleClicked中,写如下代码取消所有已经选择的行:
THIS.SelectRow(0 , FALSE)
Il_LastRow = 0
注意:在PB9中,选中Mouse Selection选项即可。
------解决方案--------------------
可以考虑
添加一个新表
外键关联 爱好字典 和 用户表
实现方便
------解决方案--------------------
符号分割or添加一个新表
是两个不同的方向,
添加一个新表综合的更加经济。