`
rocex
  • 浏览: 1299 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

在DFL中如何做一个对话框呢?

 
阅读更多
原本以为做个对话框应该很简单,但是好像并不简单,以下是代码,编译没有问题,就是不能弹出对话框,看来java程序在我的脑子中根深蒂固了,在DFL上这样的模式估计不行。

需求很简单,就是一个弹出对话框,上面有几个文本框,可以输入一些数据。


module dfl.AgendaDialog;

import dfl.all;

class AgendaDialog: CommonDialog
{
    Panel panelAgenda;
    Label labelAgenda;
    Label labelDate;
    Label labelTimeFrom;

    TextBox textBoxDate;
    TextBox textBoxTimeFrom;
    TextBox textBoxTimeTo;

    RichTextBox richTextBoxAgenda;

    this()
    {
        //Application.ppin(cast(void*)this);//有这句话编译都过不去
        initializeMyPanel();
    }

    public override void reset()
    {
    }

    public override DialogResult showDialog()
    {
        msgBox("befor show dialog, no para! ", "Info", MsgBoxButtons.OK, MsgBoxIcon.INFORMATION);

        return runDialog(GetActiveWindow()) ? DialogResult.OK : DialogResult.CANCEL;
    }

    public override DialogResult showDialog(IWindow owner)
    {
        msgBox("befor show dialog, has para IWindow!", "Info", MsgBoxButtons.OK, MsgBoxIcon.INFORMATION);

        return runDialog(owner ? owner.handle : GetActiveWindow()) ? DialogResult.OK : DialogResult.CANCEL;
    }

    public override bool runDialog(HWND owner)
    {
        return true;
    }

    private void initializeMyPanel()
    {
        panelAgenda = new Panel();
        panelAgenda.name = "MyPanel";
        panelAgenda.bounds = dfl.all.Rect(0, 0, 376, 248);

        labelDate = new Label();
        labelDate.name = "labelDate";
        labelDate.text = "日期";
        labelDate.textAlign = dfl.all.ContentAlignment.MIDDLE_RIGHT;
        labelDate.bounds = dfl.all.Rect(8, 16, 44, 23);
        labelDate.parent = panelAgenda;

        textBoxDate = new TextBox();
        textBoxDate.name = "textBoxDate";
        textBoxDate.text = "textBoxDate";
        textBoxDate.bounds = dfl.all.Rect(64, 16, 296, 23);
        textBoxDate.parent = panelAgenda;

        textBoxTimeFrom = new TextBox();
        textBoxTimeFrom.name = "textBoxTimeFrom";
        textBoxTimeFrom.text = "textBoxTimeFrom";
        textBoxTimeFrom.bounds = dfl.all.Rect(64, 56, 120, 23);
        textBoxTimeFrom.parent = panelAgenda;

        labelTimeFrom = new Label();
        labelTimeFrom.name = "labelTimeFrom";
        labelTimeFrom.text = "时间";
        labelTimeFrom.textAlign = dfl.all.ContentAlignment.MIDDLE_RIGHT;
        labelTimeFrom.bounds = dfl.all.Rect(8, 56, 44, 23);
        labelTimeFrom.parent = panelAgenda;

        textBoxTimeTo = new TextBox();
        textBoxTimeTo.name = "textBoxTimeTo";
        textBoxTimeTo.text = "textBoxTimeTo";
        textBoxTimeTo.bounds = dfl.all.Rect(240, 56, 120, 23);
        textBoxTimeTo.parent = panelAgenda;

        labelAgenda = new Label();
        labelAgenda.name = "labelAgenda";
        labelAgenda.text = "事件";
        labelAgenda.textAlign = dfl.all.ContentAlignment.MIDDLE_RIGHT;
        labelAgenda.bounds = dfl.all.Rect(8, 96, 44, 23);
        labelAgenda.parent = panelAgenda;

        richTextBoxAgenda = new RichTextBox();
        richTextBoxAgenda.name = "richTextBoxAgenda";
        richTextBoxAgenda.scrollBars = dfl.all.RichTextBoxScrollBars.VERTICAL;
        richTextBoxAgenda.bounds = dfl.all.Rect(64, 96, 296, 144);
        richTextBoxAgenda.parent = panelAgenda;
    }
}

分享到:
评论
2 楼 rocex 2009-09-16  
嗯,是我疏忽了,原本以为CommonDialog是一个dialog的基类,看到fontdialog、colordialog、filedialog都是从这儿继承的。

原来还有更简单的办法,就是直接调用form.showDialog(),就可以弹出一个对话框。

我的dfl版本是dfl-20090411,应该是098之后的一个版本,tango是tango-0.99.7-bin-win32-dmd.1.033

编译命令 dfl -gui dfl\*.d

现在出什么错已经不重要了,估计继承CommonDialog这条路不好走。
1 楼 betty_betty2008 2009-09-16  
兄弟你得告诉大伙版本,编译指令,出错信息
另可参考一下Chris的教程:
http://wiki.dprogramming.com/Dfl/ExampleCode

都是扩展(继承)控件的例子。

相关推荐

    DFL ST说明书

    DFL-ST II工具是一款由磁动电子科技自主开发的专业ST硬盘固件修复工具,与深受大家喜爱和赞誉的DFL-WD为兄弟产品。 DFL-ST II工具主要针对市面上的7200.7-7200.10系列及11、12代的F3系列的ST硬盘而设计。DFL-ST II...

    DFL-WD中文说明书

    DFL-DE是专业的数据恢复软硬件USB2.0设备,该组件能够对ATA,SATA所有硬盘进行数据恢复,该设备也能够对连接于DFL-WD的SATA端口使用48位寻址方式的硬盘工作,同也也可以对任何操作系统识别的存储装置进行数据恢复。...

    DFL for DMD2.031

    总结来说,DFL for DMD2.031是D语言开发中一个不可或缺的工具,它与DMD的紧密配合使得开发者能够更好地利用D语言的特性,实现高效、高质量的软件开发。无论是新手还是经验丰富的D语言程序员,都应该了解并掌握这个...

    DFL210配置示例

    DFL210配置示例 DFL系列防火墙配置

    DFL-WD II Setup_CHS_V2.3.5

    这款软件可能是一个专门针对硬盘修复或数据恢复的工具,因为“WD”通常与西部数据(Western Digital)这个知名的硬盘制造商相关联,而“DFL”可能是该工具系列的缩写或者公司名称。 描述中的内容重复了标题,没有...

    DFL员工福利商业保险项目信息管理系统毕业论文

    在DFL员工福利商业保险项目信息管理系统中,服务器端通常会部署像Oracle、Sybase、Informix或SQL Server这样的关系型数据库管理系统,用于存储大量的保险业务数据。Web服务器则作为中间件,处理来自浏览器的请求,将...

    DLINK DFL PPPoE設定方式

    DFL系列防火牆簡易安裝手冊 DFL-210,260,800,860,1600,2500 適用。

    DFL-CNN-master_svm人脸识别_人脸识别_facerecognition_支持向量机_cnn人脸识别_

    在人脸识别中,SVM通过对训练样本进行学习,找到一个最优的超平面作为决策边界,可以有效地处理小样本、非线性和高维问题。SVM的核心思想是找到最大间隔的分类超平面,使得两类样本在超平面两侧的距离最大化,从而...

    DFL Printting!

    由于提供的文件名称列表只有一个:"dfl-20070907",我们可以推测这个压缩包中可能包含了整个DFL库的源代码、编译脚本、文档,甚至可能有一些示例程序或者测试用例。解压后,开发者可以浏览源码,了解其设计结构和...

    PyPI 官网下载 | DFL168A-1.0.0-py3-none-any.whl

    标题中的“PyPI 官网下载 | DFL168A-1.0.0-py3-none-any.whl”表明这是一个在Python Package Index(PyPI)官网上发布的软件包,名为DFL168A,版本号为1.0.0。这个包是为Python 3编写的,其构建格式是wheel,且适用...

    DLINK -DFL系列設定如何阻檔某網站的方法

    DFL系列防火牆如果阻檔URL DFL-210,260,800,860,1600,2500 適用

    Premiere插件DFL2调色插件

    DFL2调色插件 DFL2调色插件 DFL2调色插件

    DFL干膜润滑剂

    ### DFL干膜润滑剂知识点解析 ...通过以上详细解析,我们可以了解到DFL干膜润滑剂不仅具有优异的产品特性,还适用于多个行业的广泛应用场景。无论是工业制造还是日常生活,DFL干膜润滑剂都能提供有效的解决方案。

    D-Link推出DFL-800/1600高性能整合式防火墙

    国际著名网络设备和解决方案提供商D-Link推出区域联防机制,并将其应用在新一代的安全产品--DFL-800/1600高性能 整合式防火墙中,不仅通过在网络安全设备之间建立互动机制,实现对网络安全设备的有效整合,将传统...

    希捷7200.12扇区访问中断使用DFL-DDP数据恢复设备解决

    希捷7200.12系列硬盘在使用过程中可能会遇到一个常见的问题,即扇区访问中断,导致部分数据无法读取。这个问题的根源通常与硬盘的内部机制有关,特别是与翻译表或P表的异常状态紧密关联。当硬盘出现7200.12-cap = 0...

    sm2246XT 15纳米 DFL EFL JFL 4way.zip

    标题中的"sm2246XT 15纳米 DFL EFL JFL 4way.zip"指的是一个专门针对SM2246XT主控芯片的开卡工具,该工具适用于15纳米制程的存储设备。这个压缩包包含了不同类型的固件或软件,可能用于处理DFL(Data Flash Loader)...

    TOSHIBA-TC55257DFL.pdf

    TOSHIBA-TC55257DFL.pdf

Global site tag (gtag.js) - Google Analytics