原本以为做个对话框应该很简单,但是好像并不简单,以下是代码,编译没有问题,就是不能弹出对话框,看来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;
}
}