关于在MSHFlexGrid控件中动态增加行和删除行的疑问?
一MSHFlexGrid从属于一Frame控件中,单击一个Button,则在该MSHFlexGrid中新增加一空白行,并将一下拉框放置于空白行的第一列中,但从下拉框重选择值后,此下拉框隐藏,在第二列中出现一个文本框,如何实现? 问题点数:20、回复次数:4Top
1 楼myhot(大头河马)回复于 2003-08-02 01:54:05 得分 5
1.增加一行..
mshflexgrid1.rows=mshflexgrid1.rows+1
2.移动下拉框到你的控件位置处不就可以了..
但最好把它放在一个容器上面..
另外位置和大小需要你自已编程来控制了..Top
2 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2003-08-02 16:58:02 得分 15
dim selectrow as integer
dim selectcol as integer
private sub command1_click()
mshflexgrid1.rows=mshflexgrid1.rows+1
'对combo进行处理
mshflexgrid1.row=mshflexgri1.rows-1
mshflexgrid1.col=0
selectrow=mshflexgrid1.row
selectcol=mshflexgrid1.col
combo1.left=mshflexgrid1.cellleft+mshflexgrid1.left-30 '这个减30是一个处理好定位的值
combo1.top=mshflexgrid1.celltop+mshflexgrid1.top-30
combo1.width=mshflexgrid1.cellwidth+30
'不能对combo的高进行编辑,如果要编辑,则需要API
combo1.visible=true
combo1.zorder
end sub
private sub combo1_lostfocus()
mshflexgrid1.textmatrix(selectrow,selectcol)=combo1.text
combo1.visible=false
'对textbox进行处理
mshflexgrid1.row=selectrow
mshflexgrid1.col=1
selectcol=mshflexgrid1.col
text1.left=mshflexgrid1.cellleft+mshflexgrid1.left-30
text1.top=mshflexgrid1.celltop+mshflexgrid1.top-30
text1.width=mshflexgrid1.cellwidth
text1.height=mshflexgrid1.cellheight
text1.text=mshflexgrid1.textmatrix(selectrow,selectcol)
text1.visible=true
text1.zorder
end sub
'处理text的值的方式与combo相同
private sub combo1_keypress(keyascii as integer)
if keyascii=13 then
call combo1_lostfocus()
end if
if keyascii=27 then '好像是ESC的ASCIId码吧
combo1.text=mshflexgrid1.textmatrix(selectrow,selectcol)
call combo1_lostfocus()
end if
end sub
还有一些什么的自己处理去Top
3 楼hlding(淋东)回复于 2003-08-03 14:58:26 得分 0
jjkk168(醉言烟语),按照你的做法基本上可以实现,但top的值在很多情况下出现非常怪异的问题:因为我的MSHFlexGrid控件是放在一个Frame控件中的,所以应该为:
combo1.left=frame1.left+mshflexgrid1.cellleft+mshflexgrid1.left-30
combo1.top=frame1.top+mshflexgrid1.celltop+mshflexgrid1.top-30
而mshflexgrid1中的数据是通过别的地方传递过来的,所以当传递不同的值时刷新该MSHFlexGrid,之后的combo1.top就变得乱七八糟的,难道VB中的MSHFlexGrid功能真的这么弱?Top
4 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2003-08-04 14:57:28 得分 0
你在进行刷新的时候可以使combo的visible属性设为false啊,只有当编辑的时候才显示,不是进行编辑的时候就不进行显示。
另外还在mshflexgrid的scroll(好像是这个事件)中也写入代码,使combo及textbox的visible属性为false。
Top




