鱼C论坛

 找回密码
 立即注册
查看: 3783|回复: 5

[学习笔记] 鱼C记事本V1.0 - 阶段性上机实践(小结)04 - 零基础入门学习Delphi027~028

[复制链接]
发表于 2017-8-19 18:57:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
花了几天的时间终于把这个作业完成了,不仅对memo、对话框和菜单的功能有了更深入的认识,且掌握了编写一个完整程序所需的思路和知识。
其实设计菜单还是很容易的,只要记住&字母是热键,ShortCut是快捷键,-是分隔就行了。另外用到的是对话框控件,delphi已经为我们准备好了很多的对话框,只要直接调用就行了。
1.jpg
以打开文件为例:
  1. OpenDialog1.Execute;
  2. FileName:= OpenDialog1.FileName;
复制代码

这样就把文件名读取进来了。

但是如果选取消就会出错,为此,稍作修改就完善了:
  1. if OpenDialog1.Execute then
  2. FileName:= OpenDialog1.FileName;
复制代码
剪切复制粘贴等功能非常简单,只用一句代码就行了。
“关于”的弹出窗口需调用API函数,具体的代码如下,每个参数的作用还不是很清楚。
  1. ShellAbout(self.Handle,
  2. pChar('冬雪雪冬的记事本 V1.0'),
  3. pChar('此版本已具备初步功能,可以编辑文本文件。'+ #13 + '由冬雪雪冬创建于2017/08/19。'),
  4. HICON(nil));
复制代码
3.JPG
查找和替换的编写比较复杂,至今查找只能实现一次查找,无法完成查找下一个的操作。
另外退出程序会引发FormClose时间,可以在其中加入需要的代码,这里实现了提示保存文件的功能,但不保存如何终止退出还没学会。

附件是源程序和可运行的exe文件。
2.jpg


027.ZIP

224.39 KB, 下载次数: 124

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-28 15:14:01 | 显示全部楼层
请问查找 和 替换 这一部分的代码理解了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 10:47:06 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-19 15:08:04 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-25 17:07:10 | 显示全部楼层
显示行数和列数,还有获取当前光标在哪一行 要怎么实现呢?鱼C记事本v1.2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-23 15:07:51 | 显示全部楼层
本帖最后由 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[j])+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.

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 11:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表