当前位置:首页 > 思想汇报 > [Mshflexgrid行标记、选定、锁定的实现方法] 剑网三快速选定已标记目标
 

[Mshflexgrid行标记、选定、锁定的实现方法] 剑网三快速选定已标记目标

发布时间:2019-07-06 03:53:41 影响了:

  摘要:通过实例介绍VB利用Mshflexgrid控件进行行标记、行选定和行锁定的实现,列出了Mshflexgrid控件的使用技巧;给出关于Mshflexgrid的研究方法。
  关键词:Mshflexgrid;行标记;行选定;行锁定;实现方法
  中图分类号:TP301文献标识码:A文章编号:16727800(2012)008001902
  作者简介:许涛(1975-),男,武昌理工文法与外语学院实验师,研究方向为数据库开发。
  0引言
  Mshflexgrid控件是一个非常好用的表格控件,拥有强大的功能、众多的属性。但控件不允许用户直接修改数据,所以一般用Mshflexgrid浏览数据,常用控件堆砌于frame容器形成编辑数据区的设计界面。程序员发现这个网格控件没有行标志的功能。如果程序员忽略行标记,势必会照成终端用户不知道自己在处理哪一条记录的现象发生。本文主要研究如何使用Mshflexgrid添加行标志、行选定和行锁定问题。
  Cellpicture属性,即设置当前单元中显示的图像。例如:
  Set Mshflexgrid1.CellPicture = LoadPicture("Icons\Computer\Trash02a.ico")
  注意:①CellPicture属性是需要制定行列值;②前面Set是关键字,缺少了会导致程序运行错误。
  1添加行标记解决方案
  Private Sub clear_biaoji() ‘自定义函数清除所有数据标记
  For j = 1 To (Mshflexgrid1.Rows - 1)
  Mshflexgrid1.Row = j
  Mshflexgrid1.Col = 0
  photo_info_path1 = "" 需要定于全局变量,
  Set Mshflexgrid1.CellPicture = LoadPicture(photo_info_path1)
  Next
  End Sub
  自定义函数一次迭代完成清除所有关键字(即所有行、0列)数据标志。
  Private Sub biaoji() 自定义函数标记当前行数据标志
  photo_info_path1 = app.path &" \images\work.ico"
  Mshflexgrid1.Row = rowno ‘全局变量,原型rowno= Mshflexgrid1.Row
  Mshflexgrid1.Col = 0
  Set Mshflexgrid1.CellPicture = LoadPicture(photo_info_path1)
  End Sub
  自定义函数为当前行(即当前行、0列)数据标记。
  通过二次迭代,完成其功能,其用处于Mshflexgrid _click事件
  Private Sub Mshflexgrid1_Click()
  …
  For j = 0 To Mshflexgrid1.Rows - 1
  clear_biaoji
  If j = rowno Then
  Biaoji
  Exit For
  End If
  Next
  这种方法也符合表格关键字设置背景色提示用户是否为当前标志设计思路。
  2行选定解决方案
  选定行,即在Mshflexgrid点击某记录,整行被选定,提醒终端用户当前记录将被删除或者修改。 此属性能应用到块的选定,只不过在mousedown 和mouseup事件中设置属性而已。
  Private Sub Mshflexgrid1_Click()
  …
  With Mshflexgrid1
  .Row = .MouseRow
  CURRENTROW = .Row‘设置当前行
  .Col = 0‘从0列开始
  .ColSel = .Cols  1‘至表格所有列结束的位置选定
  End With
  …
  End if{
  3行锁定解决方案
  行锁定,即行记录被赋值到frame编辑区修改时,Mshflexgrid锁定正在编辑的行。如果不锁定,终端用户再次点击Mshflexgrid,数据被更新到编辑区,导致终端用户编辑的数据工作前功尽弃。相关代码结构如下:
  If rowno = 0 Then判断是否为表头
  点击表头 只允许添加记录,禁止添加记录 通过按钮组。
  Else
  不是表头 浏览数据行未锁定,将行数据赋值给编辑区各常用控件
  一次迭代清除标记,二次迭代标记当前行,最后行选定
  If read_write_mode = "修改" And oldrow <> rowno Then
  MsgBox "数据在修改时,您点击其它记录,系统将锁定行"
  rowno = oldrow
  text1.text=txt1‘frame_mousemove 事件收集所有编辑区的值
  一次迭代清除标记,二次迭代标记当前行,最后行选定
  End if
  End if
  需要注意是oldrow 也是全局变量,第一次赋值在“修改”按钮转换到“保存”按钮的过程中;在Mshflexgrid_click有大量重复的语句,为了简化程序代码,尽量将相同的代码段作为函数使用。
  参考文献:
  \[1\]张宏,李彦林.30天学通VB项目案例开发\[M\].北京:电子工业出版社,2009.
  (责任编辑:杜能钢)

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3