百思不得其解--VB开发时的选择集相关问题
本帖最后由 作者 于 2007-8-13 17:42:45 编辑 <br /><br /> <p>下载了<AutoCAD2004的二次开发(VB版)及在海工模型试验数据中的应用>书中的例子学习,</p><p>发现其中选择集都用到了timer控件,代码附在下面。其实不用timer控件其实也可以进行选择和处理的啊。</p><p>问题是,为什么要用timer控件?有什么优点?请懂的兄弟帮忙解答!</p><p></p><p>我曾经写过一个处理块的程序,当块对象很多的时候,有时候会有个别块没有被处理。</p><p>再运行一次程序就处理完了,<font color="#ff0000">timer是否为了保证对所有对象的充分完全处理</font>?</p><p>///////////////////////////////////////////</p><p></p><p>Private Sub Command3_Click()<br/>Dim newstr As String<br/>If Not boo Then<br/> MsgBox "请先生成autocad程序对象", vbOKOnly, "autocad程序对象?"<br/> Exit Sub<br/> End If<br/>newstr = "测量控制点图层上的对象查询" + Chr(13) + Chr(10)<br/>newstr = newstr + "编号 对象名称 对象句柄" + Chr(13) + Chr(10)<br/>Text1.Text = newstr<br/>Text1.SelStart = Len(Text1.Text)<br/>If obj_ModelSpace.Count <> 0 Then<br/> total = 0<br/> num = 0 '计数从0开始<br/> sum = obj_ModelSpace.Count '获得模型空间上的图形对象的数量<br/> Text2.Text = Str(sum)<br/> <font color="#ff0000">Timer2.Enabled = True</font> '利用时间控件的事件开始获取图形对象<br/> Else<br/> MsgBox "当前模型空间上没有对象存在!", vbOKOnly, "工程1!"<br/> End If<br/>End Sub</p><p>////////////////////////////////////////////////////////////////<br/>Private Sub Timer2_Timer()<br/>Dim obj_entity As Object<br/><font color="#ff0000">Timer2.Enabled = False</font><br/>Set obj_entity = obj_ModelSpace.Item(num)<br/>If obj_entity.layer = "测量控制点" Then '判断,只列出在"测量控制点"图层上的对象<br/> total = total + 1<br/> Text1.SelText = Str(num) + " " + obj_entity.EntityName + " " + obj_entity.Handle + Chr(13) + Chr(10)<br/> End If<br/>num = num + 1 '每运行一次,编号加1<br/>Text2.Text = Str(sum - num)<br/>If num = sum Then '如果计数等于对象总数即停止<br/> Text2.Text = Str(total)<br/> Exit Sub<br/> End If<br/><font color="#ff0000">Timer2.Enabled = True</font> '如果前面计数不等于对象总数,则时间控件再启动。这样就能获得下一个图形对象<br/>End Sub</p> 那是例子,可能是为了让用户看到一步一步的过程,所以才用了计时器。 谢明总解答。
页:
[1]