文本文件操作(一)
今天学习文本文件操作的内容,最简单的就是 记事本的功能了,比如新建,打开文件,保存文件,另存为文件,复制文本,剪切文本,粘贴文本,撤销等操作。这些都是比较常用的操作。
新建一个Windows窗口,然后在窗口中添加一个 编辑框 ,设置编辑框大小与窗口客户端大小同等,顺便进去菜单编辑器里面添加菜单。
首先设置 编辑框 的属性,
是否允许多行:真
滚动条:纵向滚动条
对齐方式:左对齐
如下图:
菜单内容如下图:
菜单添加完毕之后,我们首先设置一下窗口的属性,把选中窗口,把窗口属性的 最大化按钮 设置为:真
然后给窗口添加一个 创建完毕 事件。
窗口创建完毕之后,我们要做什么事情呢?窗口创建完毕之后我们首先要做的就是设置编辑框的位置和大小。
首先在代码窗口里面添加一个子程序,这个好像是新的知识?为什么要添加子程序?什么时候添加子程序?添加子程序有什么好处?下面会提到。
鼠标右键弹出菜单,选择 新子程序
然后修改子程序的函数名为:初始化,然后在 _启动窗口_创建完毕 这个函数里面调用这个子程序。函数的调用 好像也是新的知识点?初始化这个函数里面,要做的事情就是 设置编辑框的位置和大小和窗口的客户端一致,代码
如下图:
至于编辑框的宽度和高度 为什么是 窗口的宽度 -6 和 窗口的高度 – 48,这两个数?这两个值我也是试出来的, -6是因为窗口左右两边都有边框,每个边框占用了3个像素,-48是因为要出去窗口的标题栏和下面的边框啦。
写完这个,点击运行就可以看到编辑框的大小刚好嵌入到窗口里面。
但是这个还没算完成,因为你点击最大化的时候,窗口里面的编辑框的大小没有跟着修改,所以,我们要添加一个__启动窗口_尺寸被改变()函数,然后,在这个函数里面也是调用 初始化() 这个函数,这就是为什么我们要添加子程序的原因了,添加一个子程序,我们可以在其他不同的函数里面调用这部分的代码,因为都是做同样的功能操作,不用我们在重新写一份相同的代码。所以就可以直接调用原来的代码了。这样就可以省略了很多不比较的代码,同样也比较直观,方便,减少代码的冗余。同样如果要修改代码的时候,我们就只需要修改一处代码就可以,没有每个地方都查看有没有这部分的代码。
做完这部分的功能之后,再次运行,点击最大化和还原按钮 编辑框的大小都会跟着窗口的大小改变。
好像还差点什么?那就是 窗口应该是可以自由缩放大小,不是固定大小的,我们要添加添加这个功能:
这个就不需要编写代码了,修改一下窗口的属性就可以。修改 边框:普通可调边框,如下图
修改了窗口的属性之后,窗口的边框的大小就改变了,重新运行之后,发现鼠标在窗口的四个边,角出现双向箭头,可以自由缩放了,但是里面的编辑框的位置和大小好像变了,所以我们需要重新修改代码:
这个时候子程序的优点来了。因为我们之前这部分的功能是写在子程序里面的,所以我们修改代码的时候,只需要修改子程序里面的代码就可以了;
修改完毕之后,再次运行,就可以正常显示完整的编辑框了。
下面开始编写菜单的功能。
首先分别为菜单:新建,打开,保存,另存为,退出,生成函数。
1.新建 功能
新建功能的主要就是,编辑空里面的内容被修改过之后,点击新建菜单,就要弹出信息框提示用户是否要保存数据,如果用户选择:是 就保存数据,保存完毕之后就执行新建功能,否 则不保存数据,同时执行新建的功能,取消 则不做任何操作。
首先我们要添加一个全局变量,不知道如何添加全局变量的,请参考初级的内容,添加的代码如下图:
然后,我们要在初始化函数这个地方,初始化这个全局变量,该变量初始化的时候它的值应该是:假
同时我们要添加一个 编辑框的内容被修改 的函数,每次编辑框的内容被修改了,都会触发到这个函数,所以我们在该函数里面编写代码 数据是否修改 = 真
接下来,编写新建的功能:
由于我们的 保存的功能还没做好,所以功能还不算是完整,但是我们可以先调用 _保存_被选择() 这个函数,来执行数据的保存功能。
2.打开 功能
打开功能,就是打开一个文本文件,获取文本文件的路径,然后通过路径读取文本文件的内容显示在编辑框中。
当然,在读取数据之前,我们也要检测数据是否已经被修改过了,如果数据被修改过,我们就要弹出信息框来提示用户是否需要保存数据,然后在做下一步的操作。
首先,我们在窗口中,添加一个 通用对话框 的控件,然后设置它数据,设置过滤器内容为:
txt文件 (*.txt)|*.txt|
所有文件 (*.*)|*.*
接下来就是开始编写代码:
3.保存 功能
保存功能就是保存编辑框的内容到文本文件中,如果是通过打开文本文件的方式的,我们要保存这个打开的文件路径,用来下次的数据的保存。如果用户不是没有打开文本文件而是直接在空的编辑框上面编写内容的,点击保存菜单的时候,我们要弹出保存的对话框,否则,我们直接保存到原来的路径就可以了,不需要用户再次输入文件的文件名称。
首先,在全局变量里面添加一个 读取的文本路径:逻辑型
然后编写如下代码
如果文件的路径是空的,我们弹出保存对话框的这部分代码可以直接写在 另存为 这个菜单的功能里面,因为这段代码是可以重复使用的,我们直接调用这段代码就可以了。
4.另存为 功能
另存为这个功能,就是无论数据是否被修改过,我们都要弹出保存数据的对话框,让用户另存为不同的文件名称。
代码如下图:
到此处,功能基本上是完善了,但是,运行了之后,保存出来的文件你发现是没有后缀名称的。所以我们还需要修改一下 通用对话框 的属性
把 通用对话框的属性的 过滤器里面的内容 复制一份到 默认文件后缀 的编辑框里面去,这样再次运行,保存出来的文件就会有后缀名称了。
5.退出 功能
剩下一个退出功能呢,就比较简单了,就是关闭程序,虽然是关闭程序,但是在关闭程序之前我们还是要做检测的,如果数据被修改过了,我们就要弹出信息框提示用户是否要保存数据。
代码写到此处,好像已经完成了,但是还有一个地方的没有处理,那就是窗口右上角的关闭按钮也是要处理的,功能和 退出 的功能是一样的,所以我们可以直接调用这个函数就可以了。
这部分的功能,留给下一篇文章详说 。 。 。 。 。 。
来看看,因为,总能学到东西!
Ye ! This Is A Good Blog!
Hello There! Have A Good Day!
一如既往的表示支持!
送你一片大海,让你一帆风顺;送你一个太阳,让你热情奔放;送你一份真诚,祝你开心快乐;送你一份祝福,让你快乐天天!
活到老,学到老,认真拜读咯!
真心不错,不得不支持一下先!
蚂溪村路板桥斜,
蚁间第一耽离别。
乐飞萤度愁难歇,
居士尔时缘护戒。
祝融峰下一回首,
你烟芳草旧迷楼。
万卷经书一叶舟,
事应无悔复无尤。
如彼筑室于道谋,
意气娇奢不自由。
来了一次又一次,总是情不自已!
不赖!真的不赖!
天气越来越冷了,躲在家里刷刷博客也挺好!
已加入收藏夹,时不时的来看看有没有更新博文!