火
火龙真人
Unregistered / Unconfirmed
GUEST, unregistred user!
现在已经把VB语法忘记一干二净<br> 我发过去后编辑告诉我,一个月后肯定会给我消息,但后来竟然没法,虽说是个小问题<br>但作为全国也算是权威性的报纸,这样做是误人子弟,看来编辑没有审过发表的程序(当写到这句话时候,突然想起电脑<br>报主页会有论坛么?)<br>大家请看,(以前主页已经被取消了,要收费了,主题不是编程的,是道教内容)<br><br>贵报2001年1月1日第一期软体世界编<br>程乐园中重庆杜伟先生所投稿的“公用对话框控件的应用”一<br>文中存在一个小问题。杜先生在范例中将vb通用对话框的 name<br>属性设置为cd。用 if cd.filename="" then来判断用户单击<br>“取消”按钮。此法存在一个bug。就是再次点击“打开文件”<br>按钮,出现打开文件通用对话框,用户如果点击“取消”,程<br>序仍然认为用户点击了“确定”。怎么消除这个bug?<br> cd.filename="" 在通用对话框打开前强制文件名为空 <br> cd.showopen <br> 在通用对话框打开前强制文件名为空, 问题好象是解决了,<br>但是如果用户选中一个文件,点击“取消”的话,程序还是<br>要执行点击了“确定”的过程。怎么才能真正判断用户在通用<br>对话框立点击了“取消”呢?贫道将程序修改如下:<br> Private Sub Command1_Click() ' 设置“CancelError”为 True,用户点击取消时就会发生错误<br> CD.CancelError = True '一出错就跳到行 errhandler<br> On Error GoTo ErrHandler '设置标志<br> CD.Flags = cdlOFNHideReadOnly '隐藏对话框中“以只读方式打开”复选框<br> CD.Filter = "文本文件|*.txt|所有文件|*.*" '设置过滤器<br> CD.FilterIndex = 1 '指定缺省的过滤器<br> CD.ShowOpen ' 显示打开文件对话框<br> MsgBox "你选择打开的文件是:"&cd.filename' '显示选定文件的名字<br> Exit Sub<br> ErrHandler:<br> '用户按了“取消”按钮,退出过程<br> Exit Sub<br> End Sub<br><br> 杜先生肯定也注意到了CancelError这个属性,而<br>且将这个属性在属性框设置为false。因为CancelError<br>为true的话,无论何时选取“取消”按钮,均产生 32755<br> (cdlCancel) 号错误。对于所有公共对话框调用时都是以<br>在显示对话框时捕获错误,以此检测是否按了“取消”按钮。<br>不过话说回来,这还是微软设计的不周。谁会想到这么来检<br>测按了“取消”按钮呢?贫道也是看vb5所带的联机手册才知<br>道的。贫道现在改用delphi了,在delphi中调通用对话框很方<br>便,就拿上面那个例子来说。在窗体上放一个打开文件的对话<br>框控件,默认名为opendialog1<br><br>if opendialog1.Execute then<br>showmessage('你所打开的文件是'+opendialog1.filename);<br>end;<br><br> 就这么简单一切都是自动的。当然vb的好处也不少,上手快,<br>编程速度快,现在很多多媒体演示软件都是vb编的。乘此机会打<br>个广告 : 欢迎来和贫道辩论vb很delphi的优缺点,贫道的主页是http://fdo.126.com 邮箱firemonk@sina.com,oicq 306665 留<br>言,来信,聊天都欢迎。<br> <br> 2001-1-14 <br> 火龙子于李白故里