[疑难] IDE的拖放是怎么实现的?
player7
2007-09-15
源码和示例已经上传到共享文件中了;
我用DFL模仿着做了一个拖放控件的例子,目前有个问题就是一经过拖放或拉伸以后,控件就自动提到最高层了。 不知道ENTICE和其它IDE是怎么实现的? 顺便说说,ENTICE不能输入中文,主窗口没有滑动条,控件自动声明的方式比较怪异,最重要是更新不太快啊。 |
|
DavidL
2007-09-16
楼上的钻研精神赞一个。再接再厉
|
|
player7
2007-09-17
我又有新问题了:
在窗口设计器加入一个控件,同时需要在代码里加入控件的属性设置 看看ENTICE的方式: class MyForm: dfl.form.Form { // Do not modify or move this block of variables. //~Entice Designer variables begin here. dfl.button.Button button1; //~Entice Designer variables end here. this() { initializeMyForm(); // Other MyForm initialization code here. } private void initializeMyForm() { // Do not manually modify this function. //~Entice Designer 0.8.2.1 code begins here. //~DFL Form text = "My Form"; clientSize = dfl.drawing.Size(292, 273); //~DFL dfl.button.Button=button1 button1 = new dfl.button.Button(); button1.name = "button1"; button1.bounds = dfl.base.Rect(88, 56, 75, 23); button1.parent = this; //~Entice Designer 0.8.2.1 code ends here. } } 我觉得应该学学Delphi那样,把initializeMyForm() 这个部分隐藏起来,放到单独的文件里;请问能做到这一点吗?也就是说把一个类的实现分到两个文件里去. |
|
DavidL
2007-09-17
是的,你可以这样做,你甚至可以完全复用delphi生成的DFM,只不过没有人现在愿意花时间做而已
要点: const char[] dfmfile = import("form1.dfm"); CTFE(compile time function evaluation) mixin("//generated code "); CTFE用于parse dfmfile,并生成代码串,代码串由mixin注入。 |
|
ant-man
2007-09-18
const char[] dfmfile = import("form1.dfm");
CTFE(compile time function evaluation) mixin("//generated code "); CTFE用于parse dfmfile,并生成代码串,代码串由mixin注入。 具体说下好么? |
|
oldrev
2007-09-18
ant-man 写道 const char[] dfmfile = import("form1.dfm");
CTFE(compile time function evaluation) mixin("//generated code "); CTFE用于parse dfmfile,并生成代码串,代码串由mixin注入。 具体说下好么? 除非是现在已经有像 boost.spirit 那样的工具,否则还是别考虑了。 不如用 .Net 现成的设计器实现一个 |
|
player7
2007-09-18
嗯,我的问题用MIXIN就行了.
至于分析DELPHI或者.net 的设计器代码,难度不小,而且也不方便; |