VB新手,做练习遇到几个小问题,希望大家能帮帮忙,小弟感激不尽

ninansky 2004-12-18 05:05:48
我在练习做一个多文档的MDI文本编辑器,遇到下面几问题,望大家能帮帮忙:

1、请问Windows自带的记事本中“自动换行”菜单是怎么实现的啊?
我本来以为是用文本框的ScollBars属性在程序运行中可以实现,但是不行

2、在MDI窗体中,我需要记算其中一共是有几个文档窗口,新建一个时子窗体计数器加1,
关闭一个时计数器减1,但减1的代码我不知道应该写在哪一个事件里面,是不是有窗口的
关闭事件呢?,不会是_Queryunload()吧

3、“打开”通用对话框中点击“取消”后就会出现错误:path/file access error
请问这个该怎么处理

4、在“_queryunload”事件里面弹出一个和记事本一样的对话框,但是每次我点“取消”
都会把一个子窗体(或都整个应用程序)关掉,请问该怎么办才能不关掉窗体

5、在开始运行程序的时候,MDI窗体中都会有一个子窗体,请问我该怎么办才能使开始运行时
没有子窗体存在

6、请问在一个事件执行过程里面能不能禁止其它事件过程的执行

7、请问如何获得已打开文件的路径,我想要在对一个打开的文本文件进行修改后进行保存
但不要打开保存对话框,是直接覆盖掉原来的文件内容

8、在光标选中文本后,菜单中的“剪切”、“复制”、“删除”才变以可用的,该怎么处理,
是不是要写在一个Timer的Timer事件里面,我做了,在选取的时候可行,但是一旦关闭窗口就会
出现:object variable or with block variable not set 的错误,请问这个对象变量或模块
变量是指什么啊,或者是应该怎么处理呢??

上面几个小问题请大家帮帮忙,小弟在此先谢了,谢谢!!
...全文
227 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninansky 2005-01-04
  • 打赏
  • 举报
回复
很久上不去网了,今天跑出来给大家结一下账
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第五个 在项目的属性设置中,startup object, 你设置成了那个mdi child 窗口了吧?

应当设置成那个mdi 窗口, 不过一个很好的习惯是写一个Main函数,从那边启动
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第四个 在QueryUnload中,如果用户选择取消退出,把 Cancel 这个变量设置成 true
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第三个,可以不使用错误截取的,通用对话框里有个CancelError属性可以控制这个
sdgzhk 2004-12-22
  • 打赏
  • 举报
回复
第三个更简单,对取消息按钮做个单击事件。
如果没什么想做的。就用me.close()吧
sdgzhk 2004-12-22
  • 打赏
  • 举报
回复
第二个问题windows的类库内有个专门的函数用来解决这个问题的。写过太久了,忘记名字,回去后一会再贴出来。
sdgzhk 2004-12-22
  • 打赏
  • 举报
回复
第一个问题只有用个文件框,设成多行文本框即解决,
wwqna 2004-12-22
  • 打赏
  • 举报
回复
你的问题还真不少呀,帮你UP一下
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第八个 如果你用RichText那就没问题了,SelChange事件,

如果用普通文本框,你可以接受所有Key事件,每接受一个Key

都更新一下决定是否要改变菜单状态(当然也要处理Change事件的)

因为用户打键盘很慢的,所以不用担心检测速度
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第六个 首先能不能告诉我你为什么要这么做?

你可以试试把触发事件的控件Disable掉,如果不行,

那么可以用一个模块级的变量来标记当前正在做什么

在其它事件中检测这个变量来决定是否要跳过事件中的代码
tiaoci 2004-12-22
  • 打赏
  • 举报
回复
第一个问题很难吗,我还以为解决了呢,我试试

首先取得缩放后窗口的大小,用Form.TextWidth

计算出一行可以显示多少内容,然后分行就可以了
hwyqy 2004-12-22
  • 打赏
  • 举报
回复
哇,你一下子问这么多,偶回答不了啊。只想说第一个问题:你现在的水平远远达不到能完成这样一个功能的程度,第一个问题先放弃吧。
lidaixiang 2004-12-22
  • 打赏
  • 举报
回复
我看首贴的问题都花了眼了.本来想回答一两个的,又一想回答在这中间也没有看得到.一个问题一个贴最好了.
ninansky 2004-12-21
  • 打赏
  • 举报
回复
晕了,等了一天都没人回了,大家快来帮帮忙啊,分不够再给
laviewpbt 2004-12-19
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3657/3657180.xml?temp=.8356439(应该是一个人提的吧)
ZWB_ZYN 2004-12-19
  • 打赏
  • 举报
回复
1. multiline属性=true
2. 就是在form_Queryunload()过程里实现
3. on error resume next即可

5. MDI加载的时候你一定加载了一个子窗体了
6.
Yaka 2004-12-19
  • 打赏
  • 举报
回复
關註!
ninansky 2004-12-19
  • 打赏
  • 举报
回复
第一道题中,multiline属性也不能在运行时候设置啊,这个问题还没有解决
第六:请问在一个事件执行过程里面能不能禁止其它事件过程的执行,这个也还没有解决
第七:请问如何获得已打开文件的路径,我想要在对一个打开的文本文件进行修改后进行保存
但不要打开保存对话框,是直接覆盖掉原来的文件内容,在不要使用richtextbox这个控件的
情况下要怎么办:

Private Sub save_Click()
On Error GoTo errhandler
Dim temp As Integer
If Left(MDIWrite.ActiveForm.Caption, 3) = "无标题" Then
temp = Right(MDIWrite.ActiveForm.Caption, 1)
commondialog1.Filter = "All files(*.*)|*.*|文本文件|*.txt"
commondialog1.FilterIndex = 2
commondialog1.ShowSave
Open cdg2.FileName For Output As #2
Print #2, MDIWrite.ActiveForm.Text1.Text
Close #2
MDIWrite.ActiveForm.Caption = commondialog1.FileName & " 文档:" & temp

Else
Open MDIWrite.ActiveForm.Caption For Output As #2 '(Bad file name or number)
Print #2, MDIWrite.ActiveForm.Text1.Text
Close #2
End If

errhandler:
End Sub

麻烦大家帮我看一下上面这段代码,在Else后面的这个语句中“MDIWrite.ActiveForm.Caption"
能不能用其它语句来代替啊,而且我也不知道这样写是不是会有语法错误
laviewpbt 2004-12-18
  • 打赏
  • 举报
回复
第三个问题,在打开的代码中加一个on error resuem next 试试
第六个问题,你参考这个:
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=85141

第七个问题,如果用的是richtextbox的话,可以直接调用它的方法,如下:
RichTextBox1.SaveFile "your path"

第八个问题,我重点谈一下,不用timer控件,比如你的剪切、复制、删除等菜单都在编辑菜单下,并且编辑菜单对应的name属性为edit,则可在edit_click事件中添加代码(这个事件在设计时,窗体上双击编辑是调不出来的,要在代码框里调出来):
Private Sub edit_Click()
If RichTextBox1.SelText = "" Then
copy.Enabled = False '根据有没有选中内容判别菜单状态
cut.Enabled = False
Else
copy.Enabled = True '根据有没有选中内容判别菜单状态
cut.Enabled = True
End If
If Clipboard.GetText = "" Then
paste.Enabled = False '根据剪贴板内容判别菜单状态
Else
paste.Enabled = True
End If
End Sub

这样,你在richtextbox中的右键也会智能地改变状态。
Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then
PopupMenu edit
End If
End Sub
qiqi5521 2004-12-18
  • 打赏
  • 举报
回复
3、“打开”通用对话框中点击“取消”后就会出现错误:path/file access error
请问这个该怎么处理
private sub showopen()
on error goto cancel
cmdlg1.showopen
exit sub
cancel:
end sub
加载更多回复(3)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧