上一页 1 2 3 4 5 6 下一页 类似地,我们再来处理打开文件的工作。首先,在表单中放置一个OpenDialog组件,DefaultExt和Filter属性同SaveDialog1,将Options属性中的ofFileMustExist(文件必须存在)设为true。然后在表单编辑区中的菜单中选菜单项“打开(O)...”,在代码编辑区中输入如下语句。 if(!if_saved)if(Application ->MessageBox("文件还未保存,是否要保存?","我的记事本", MB_OKCANCEL+MB_DEFBUTTON1+MB_ICONWARNING)==ID_OK) S1Click(NULL); / * 如果文件没有保存,我们得先征求用户是否要保存文件。s1Click()是“保存(s)”菜单项的处理函数(就是接下来处理的菜单项),“保存(S) ”菜单项的工作就是将文件存盘,所以我们没有必要写重复的代码,而只要直接调用该函数就可以了。注意,如果你的“保存(S)”菜单项的名字属性不是S1而是其他,那么这个函数的名字也会有所不同,但总是“名字”+Click() */
if(!OpenDialog1->Execute())return; UserFileName=OpenDialog1->FileName.c_str(); Memo1->Lines->LoadFromFile(UserFileName); sprintf(title_buf,"% s - 我的记事本", UserFileName); Caption = title_buf; (为节省篇幅,以下凡是重复的操作描述省略) 处理“保存(S)”菜单项,输入: Memo1->Lines->SaveToFile(UserFileName); If_saved=TRUE; sprintf(title_buf,"% s - 我的记事本", UserFileName)"; Caption = title_buf; 处理“新建(N)”菜单项,输入如下语句: lf(!If_saved) if(Application ->MessageBox ("文件还未保存,是否要保存?","我的记事本", MB_OKCANCEL+MB_DEFBUTTON1+MB_ICONWARNING)==ID_OK)S1Click(NULL); sprintf(UserFileName,"Untitled.txt"); sprintf(title_buf, "% s - 我的记事本-未存盘",UserFileName); Caption=title_buf; Memo1->Lines->Clear(); //将编辑控制中的内容清空 |
随后,我们要处理Memo1的OnChange事件(Events)。一旦编辑控制中的内容有改变,Memo1就将产生OnChange事件,这时需要将If_saved置为FALSE,表示文件已经改动过了,并在标题上显示“未存盘”。在对象观察器中选Memo1,再单击下面的Events,将列出许多事件,第一个就是OnChange,双击后面的编辑框,后面的操作和处理菜单项是一样的(其实前面处理的菜单项就是处理菜单的OnClick事件),输入:
If_saved=FALSE; sprintf(title_buf,"% s -我的记事本-未存盘", UserFileName); Caption=title_buf;
随后处理MainForm的OnClose事件,输入: //OnClose事件在关闭窗口时产生,需要做一些收尾工作 if(!If_saved) if(application->MessageBox("文件还未保存,是否要保存?","我的记事本", MB_OKCANCEL+MB_DEFBUTTON1+MB_ICONWARNING)==ID_OK)S1Click(NULL);
最后,处理“退出(X)”菜单项,输入如下语句: if(!If_saved) if(application->MessageBox("文件还未保存,是否要保存?","我的记事本", MB_OKCANCEL+MB_DEFBUTTON1+MB_ICONWARNING)==ID_OK)S1Click(NULL); Application->Terminate(); //程序结束
|
到此为止,终于小功告成了,快把项目保存下来吧。在File菜单中选Save Project As…,首先弹出的对话框要求输入表单的文件名(不能和表单的名字属性相同),我们就输入Main。随后弹出的对话框才是要求输入项目(Project)的文件名,该文件名也就是exe文件的名字,我们输入NotePad。保存后再选Project菜单里的Make NotePad,或按Ctrl+F9,就会产生一个NOtePad.exe,这就是我们自己做的记事本,目前它已经能打开文件、编辑并保存。你一定发现菜单中还有许多功能尚未实现,这就是我只说小功告成的原因,不过下次我们会完成它。
上一页 1 2 3 4 5 6 下一页 |