使用DGUI制作一下正则查找工具

DGUI总体来说还是很不错,在使用过程中,据需求做了一部分修改。今天用它来做了一个小工具。

很是不错,哈哈….

缩小一点看看:

对DGUI做了以下修改:

一、给Event做了+=与-=操作符重载

     二、做了anchor布局

     三、给ListBox添加了removeAll方法

来看看小工具的实现代码

写起来很像在使用.net From ,哈哈,不错的东西,主要是想怎么改,就能怎么改。

module MainForm;
import dgui.all;
import dgui.layout.splitpanel;
import std.conv;
import StringExtend;

class MainForm : Form
{
    TextBox _regexpBox;
    TextBox _textBox;
    Button  _findBtn;
    Button  _findsBtn;
    Button  _helpBtn;
    SplitPanel _splitPanel;
    ListBox _listView;

    this()
    {
        init();
        layout();
        bindEvent();
    }

    ~this()
    {
        uninit();
    }

    void init()
    {
        _regexpBox =  new TextBox();
        _textBox   =  new TextBox();
        _findBtn   =  new Button();
        _findsBtn  =  new Button();
        _splitPanel = new SplitPanel();
        _helpBtn   =  new Button();
        _listView  =  new ListBox();

        _findBtn.text  = "查找";
        _findsBtn.text = "多个查找";
        _helpBtn.text  = "帮助";
    }

    void uninit()
    {
        delete _regexpBox;
        delete _textBox;
        delete _findBtn;
        delete _findsBtn;
        delete _splitPanel;
        delete _helpBtn;
        delete _listView;
    }

    void layout()
    {
        _splitPanel.parent = this;
        _splitPanel.splitOrientation = SplitOrientation.horizontal;
        _splitPanel.splitPosition = 180;

        _textBox.parent = _splitPanel.panel1;
        _regexpBox.parent = _splitPanel.panel2;
        _findBtn.parent = _splitPanel.panel2;
        _findsBtn.parent = _splitPanel.panel2;
        _helpBtn.parent = _splitPanel.panel2;
        _listView.parent = _splitPanel.panel2;

        _textBox.scrollBars = true;
        _textBox.multiline = true;
        _textBox.anchor = AnchorStyles.right | AnchorStyles.top | AnchorStyles.left | AnchorStyles.bottom;

        _regexpBox.anchor = AnchorStyles.right | AnchorStyles.top | AnchorStyles.left;
        _regexpBox.right = 85;
        _regexpBox.left = 1;
        _regexpBox.top = 2;

        _listView.anchor = AnchorStyles.right | AnchorStyles.top | AnchorStyles.left | AnchorStyles.bottom;
        _listView.right = 85;
        _listView.left = 1;
        _listView.top = 35;
        _listView.bottom = 2;

        _findBtn.anchor = AnchorStyles.right | AnchorStyles.top;
        _findBtn.right = 1;
        _findBtn.top = 1;

        _findsBtn.anchor = AnchorStyles.right | AnchorStyles.top;
        _findsBtn.right = 1;
        _findsBtn.top = 35;

        _helpBtn.anchor = AnchorStyles.right | AnchorStyles.top;
        _helpBtn.right = 1;
        _helpBtn.top = 70;

    }

    void bindEvent()
    {
        _findBtn.click += &findBtn_Proc;
        _findsBtn.click += &findsBtn_Proc;
    }

    void unBindEvent()
    {
        _findBtn.click -= &findBtn_Proc;
        _findsBtn.click -= &findsBtn_Proc;
    }

    void findBtn_Proc(Control control,EventArgs args)
    {
        auto text = _textBox.text.to!wstring();
        auto rgx = _regexpBox.text.to!wstring();
        auto item = text.Find(rgx);
        _listView.removeAll();
        _listView.addItem(item.to!string());
    }

    void findsBtn_Proc(Control control,EventArgs args)
    {
        auto text = _textBox.text.to!wstring();
        auto rgx = _regexpBox.text.to!wstring();
        auto items = text.Finds(rgx);
        _listView.removeAll();
        foreach(item;items)
        {
            _listView.addItem(item.to!string());
        }
    }
}
时间: 2025-01-06 11:57:19

使用DGUI制作一下正则查找工具的相关文章

grep 文本查找工具

简介 grep一种文本字符查找工具,会以行为单位查找可以匹配字符的行,并且默认情况下显示整行. 我们所要做的就是:书写特定的字符,来匹配我们想要的内容. 字符分为两类: 一就是普通的字符,二是一种我们称之为'元字符'的具有特殊意义的高上大字符. 而这种由普通字符或元字符所组合起来的,用于表达.匹配特定字符的字符串, 我们就称之为 "正则表达式""正则表示法"等等...  正则表达有很多规范,这里只说grep用的, 因为别的也不会. 对了要注意一点: 元字符跟通配符是

linux文件查找工具 -- find

简述: linux中find命令是一种强大的实时查找工具,它通过用户给出的路径,在该路径下的文件系统中进行文件查找.因此在遍历一个较大的文件系统时会比较花费时间,而且find命令占用资源也是比较大的,所以它的工作特点是,查找的速度略慢,但是可以实现精确查找和实时查找.由于用户权限的问题,可能只搜索用户具备读取和执行权限的目录.由于find命令能力很强大所以它的选项也有很多. find命令用法: find命令格式: find [选项] [查找起始路径] [查找条件] [处理动作] find [-H

SublimeText 正则查找

### 正则查找 CTRL + H 开启替换查找功能 ### 正则表达式 ``` get(.*)Model ``` 以 get 开始 以 Model结束 中间以  (.*) 通配 ### 效果 来自为知笔记(Wiz)

用Canvas制作简单的画图工具

今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1像素的线段? 如果在像素边界处绘制一条1像素宽的垂直线段,那么canvas的绘图环境对象会试着将半个像素画在边界中线的右边,将另外半个像素画在边界中线的左边.然而,在一个整像素的范围内绘制半个像素宽的线段是不可能的,,所以左右两个方向上的半像素都被扩展为1像素.如图所示 本来我们想要将线段绘制在深灰

Linux文件查找工具之find(详解)

find详解 一.find命令是什么? 实时查找工具,遍历指定目录中的所有文件完成查找. 二.find的工作特性: 实时查找 精确查找.支持众多查找标准 查找速度略慢 三.find的用法: find [OPTIONS][查找路径][查找条件][处理动作] (1)查找路径:指定具体的搜索目标的起始路径:默认为当前目录: (2)查找条件:指定的查找标准,可根据文件名.大小.类型.从属关系.权限等标准进行. 根据文件名查找: -name 'FILENAME':对文件名进行精确匹配: 支持支持glob风

Linux 系统之文件查找工具--- locate、 find详解

一.学习Linux为什么要学习文件查找工具? 作为Linux爱好者,或者Linux运维人员经常会遇到要查找某个或者某一类文件的问题,但对于"一切皆文件"的Linux系统来说,如何能够在成千上万的文件中快速精确的定位到我们所需的文件,对我们来说是至关重要的.因此,熟练掌握并运用Linux系统下的文件查找命令是我们快速定位的关键. 本文着重介绍Linux环境下的locate.find文件查找工具 二.文件查找工具locate使用详解 2.1.locate - find files by n

文本查找工具find命令

在Linux系统上操作时,有时会忘记一个文件放在哪个目录下,这是可以用到文件查找工具去查找到相应的文件,文件查找工具有locate.find两个工具 文件查找: 1.locate:   locate命令是通过linux上构建的一个索引数据库来查询的,遍历整个数据库去搜索所匹配的文件,而且这个索索引数据库是Linux系统自己维护和更新的,索引的构建是在系统比较空闲的时候自动进行的周期性任务. 虽然数据库的更新是系统自动更新的,但也可以通过手动updatedb更新,但是更新的时候需要遍历整个根目录(

Linux文件查找工具之find “大宝剑”

一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. find:     find命令用来在指定目录下查找文件,通过遍历指定的

Linux查找工具之Find

Find是linux中一个非常实用的查找工具.它能通过用户给出的文件路径查找到目标文件.由于它在查找过程中会搜索整个文件路径下所有与之相匹配的目标文件,查找速度会略慢,我们也可以根据文件名.大小.类型.从属关系及权限等等标准精确的查找到目标文件.还可以将查找到的文件进行删除或显示详细信息等操作. Find的语法格式 Find  [-H]  [-L]  [-P] [-D debugopts]  [-Olevel]  [path...]  [expression] 查找/etc下文件名中以"netw