CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

关于在MSHFlexGrid控件中动态增加行和删除行的疑问?

楼主hlding(淋东)2003-08-02 00:46:30 在 VB / 控件 提问

一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

相关问题

  • 怎么彻底删除MSHFLEXGRID控件中的内容啊?
  • 如何在MSHFlexGrid控件中删除数据库中的记录?
  • 控件的删除
  • QUERY控件疑问!!!
  • ActiveX 控件疑问
  • Winsock控件疑问……
  • MSHFlexGrid 控件
  • 怎么样删除控件
  • 删除控件数组
  • 删除treeview 控件节点

关键词

  • 控件
  • mshflexgrid
  • combo
  • selectrow
  • 增加
  • rows
  • 下拉框

得分解答快速导航

  • 帖主:hlding
  • myhot
  • jjkk168

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo