[疑难] 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 的设计器代码,难度不小,而且也不方便;
Global site tag (gtag.js) - Google Analytics