用delphi编写一个和windows自带的记事本一样的记事本,如何实现?

beij_2012 2012-08-01 01:13:01
本人是初学者,已经将控件添加进去了,但是如何去实现事件,没有头绪,求高手指点,比如如何实现新建和保存这两个功能?最好能说清楚思路。谢谢各位大神了。
...全文
256 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wstart_lion 2012-08-03
  • 打赏
  • 举报
回复
首先把设计做好:打开,新建,退出这些都会涉及到保存的判断与提示,如果涉及没做好可能会导致代码很乱。
做了一个简单的 你可以看一下
unit txtbook;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,Dialogs, Menus, StdCtrls, ExtDlgs,ComCtrls;

type
TForm3 = class(TForm)
memDesc: TMemo;
mmFile: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
OpenDialogChoice: TOpenDialog;
SaveDialogDesc: TSaveDialog;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FrmClose(Sender: TObject; var Action: TCloseAction);
procedure MemDescChange(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
private
{ Private declarations }
public
procedure OutSave();
end;

var
Form3: TForm3;
FileName:string;
TxtFileName:string;
NewFile:Boolean;
MemDescDif:Boolean;
NullOperateAll:Boolean;
StrType:string;
type
OperateCheck=(OpNull,OpCreat,OpOpen,OpSave,OpSaveAs);
var
MyOperate:OperateCheck;

implementation

{$R *.dfm}
procedure TForm3.OutSave;
begin
if MemDescDif then
begin
StrType:='文件 '+Form3.Caption+' 的文字以改变,是否保存?';
case MyOperate of
OpCreat:
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
OpNull:
begin
if NullOperateAll then
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end;
OpOpen:
begin
ShowMessage(StrType);
SaveDialogDesc.FileName:=Form3.Caption;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end
end;

procedure TForm3.FormCreate(Sender: TObject);
//创建窗体过程
begin
Form3.Caption:='无标题.txt';
memDesc.Text:='';
MemDescDif:=False;
NullOperateAll:=False;
end;

procedure TForm3.FrmClose(Sender: TObject; var Action: TCloseAction);
begin
OutSave();
Form3.Free;
end;

procedure TForm3.MemDescChange(Sender: TObject);
//memdesc内容变化
begin
MemDescDif:=True;
NullOperateAll:=True;
end;

procedure TForm3.N2Click(Sender: TObject);
//新建
begin
OutSave();
NewFile:=True;
MyOperate:=OpCreat;
memDesc.Text:='';
MemDescDif:=False;
Form3.Caption:='无标题.txt';
end;

procedure TForm3.N3Click(Sender: TObject);
//打开
begin
OutSave();
if OpenDialogChoice.Execute then
begin
MyOperate:=OpOpen;
NewFile:=False;
FileName:=OpenDialogChoice.FileName;
memDesc.Lines.LoadFromFile(FileName);
Form3.Caption:=ExtractFileName(FileName);
Application.Title:=ExtractFileName(FileName);
MemDescDif:=False;
end;

end;

procedure TForm3.N4Click(Sender: TObject);
//保存
begin
if MyOperate=OpCreat then
begin
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
MyOperate:=OpSave;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end
else begin
if MyOperate=OpNull then
begin
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
MyOperate:=OpSave;
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end
else begin
MyOperate:=OpSave;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;
end;

procedure TForm3.N5Click(Sender: TObject);
//另存为
begin
MyOperate:=OpSaveAs;
SaveDialogDesc.FileName:=Form3.Caption;
if SaveDialogDesc.Execute then
begin
FileName:=SaveDialogDesc.FileName;
memDesc.Lines.SaveToFile(FileName);
MemDescDif:=False;
end;
end;

procedure TForm3.N6Click(Sender: TObject);
begin
OutSave();
Form3.Free;
end;
end.
有什么问题 可以随时找我 呵呵 顺便求粉一个 哈
kaikai_kk 2012-08-01
  • 打赏
  • 举报
回复
用Memo控件 + MainMenu + 一些Dialog控件

就是这些控件的基本应用; 对比记事本,看它有那些功能,自己摸索实现
LastAvengers 2012-08-01
  • 打赏
  • 举报
回复
LastAvengers 2012-08-01
  • 打赏
  • 举报
回复
Windows 自带的新建只是将Memo清空罢了 eg: Memo1.lines.clear;//在当前没有打开文件的时候
保存便是调用SaveDialog 将Memo已有的内容写到磁盘
eg: if SaveDialog1.Excute then Memo1.lines.SaveToFile(SaveDialog1.FileName);
大概就这样 应该不会打错
JPEXE 2012-08-01
  • 打赏
  • 举报
回复
1.学习TMemo控件的使用
2.学习Delphi(或直接Win32API)的文件读写操作
以上具体请Google

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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