鱼C记事本V1.0 - 阶段性上机实践(小结)04 - 零基础入门学习Delphi027~028
花了几天的时间终于把这个作业完成了,不仅对memo、对话框和菜单的功能有了更深入的认识,且掌握了编写一个完整程序所需的思路和知识。其实设计菜单还是很容易的,只要记住&字母是热键,ShortCut是快捷键,-是分隔就行了。另外用到的是对话框控件,delphi已经为我们准备好了很多的对话框,只要直接调用就行了。以打开文件为例:OpenDialog1.Execute;
FileName:= OpenDialog1.FileName;
这样就把文件名读取进来了。
但是如果选取消就会出错,为此,稍作修改就完善了:if OpenDialog1.Execute then
FileName:= OpenDialog1.FileName;
剪切复制粘贴等功能非常简单,只用一句代码就行了。“关于”的弹出窗口需调用API函数,具体的代码如下,每个参数的作用还不是很清楚。ShellAbout(self.Handle,
pChar('冬雪雪冬的记事本 V1.0'),
pChar('此版本已具备初步功能,可以编辑文本文件。'+ #13 + '由冬雪雪冬创建于2017/08/19。'),
HICON(nil));
查找和替换的编写比较复杂,至今查找只能实现一次查找,无法完成查找下一个的操作。另外退出程序会引发FormClose时间,可以在其中加入需要的代码,这里实现了提示保存文件的功能,但不保存如何终止退出还没学会。
附件是源程序和可运行的exe文件。
请问查找 和 替换 这一部分的代码理解了吗? 学习 学习
显示行数和列数,还有获取当前光标在哪一行 要怎么实现呢?鱼C记事本v1.2 本帖最后由 smallred 于 2020-4-23 15:34 编辑
多次查找功能實現
用到"PosEX" "GoTo"指令
代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls,SHELLAPI,StrUtils;
type
TForm1 = class(TForm)
Memo1: TMemo;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
FindDialog1: TFindDialog;
ReplaceDialog1: TReplaceDialog;
procedure N7Click(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
temp:string;
nfclick,i:integer;//nfclick :查找次數
procedure TForm1.N7Click(Sender: TObject);
begin
nfclick:=0;
i:=0;
finddialog1.FindText:=memo1.SelText;
finddialog1.Execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
j,k,PosReturn,skc:integer;
label GoAgain;
begin
temp:=finddialog1.FindText;
GoAgain://每行搜尋完換行,
nfclick:=nfclick+1;
for k:=nfclick to length(memo1.Lines) do
begin
PosReturn:=PosEx(temp,memo1.Lines,k);
if PosReturn<>0 then
begin
skc:=0;
skc:=PosReturn;
for j:=0 to i-1 do
begin
skc:=skc+length(memo1.lines)+2;
end;
memo1.setfocus;
memo1.SelStart:=skc-1;
memo1.SelLength:=length(temp);
nfclick:= PosReturn;
break;
end
else
begin
i:=i+1;
nfclick:=0;
goto GoAgain;
end;
end;
end;
end.
页:
[1]