`
rocex
  • 浏览: 1405 次
  • 性别: 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

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

相关推荐

    Allegro to Expedition PCB 转换

    转换结束后,会产生一个名为 test_EXP 的文件夹,Expedition PCB 文件就存放在该文件夹下的 PCB 文件夹里,名称是 test.pcb,与 Allegro 设计的名称相同。 Allegro to Expedition PCB 转换是一个复杂的过程,需要...

    PADS、AD和CANDENCE相互转换.docx

    PADS、AD和Candence之间的...5. 继续在 Command 中输入:main out,回车,这时会弹出一个对话框。 6. 点击“StarOneWay Translation”,等待运行结束。 7. 打开 PADS LAYOUT ---file---import,之后等待转换结束即可。

    redhat或fedora中交叉编译环境的建立

    通过以上步骤,我们成功地在RedHat或Fedora环境中搭建了一个完整的交叉编译环境。不仅学习了如何配置minicom以实现与开发板的串口通信,还深入了解了NFS和TFTP这两种网络服务的配置与使用方法。这对于进行嵌入式系统...

    pcb布线规则和技巧之Allegro格式PCB转换成Pads操作指导

    使用后,会弹出一个对话框,我们直接关闭就行。 第四步,我们转换allegro文件,将《skill load "dfl_main.il"》命令复制到命令框下,然后按回车键。这一步骤是为了加载allegro文件的skill脚本。然后,我们复制...

    Allegro转换PADS教程详解

    4. 转换完成后,会在PCB文件夹下生成一个名为`design_********.pcb#`的新文件。使用PADS Layout打开这个文件,并调整颜色显示等设置。 #### 四、总结 通过上述步骤,可以高效地将Allegro设计的PCB文件转换为PADS...

Global site tag (gtag.js) - Google Analytics