每次我尝试使用D Forms Library时,都会遇到这样一个事实:它没有TableLayoutPanel
——这使得我几乎不可能制作出好的 GUI。
DFL有什么TableLayoutPanel
实现吗?
没有它,人们通常如何使用这个库?
编辑:
链接到另一个使用 DFL 的程序将是一个很好的答案。:)
每次我尝试使用D Forms Library时,都会遇到这样一个事实:它没有TableLayoutPanel
——这使得我几乎不可能制作出好的 GUI。
DFL有什么TableLayoutPanel
实现吗?
没有它,人们通常如何使用这个库?
链接到另一个使用 DFL 的程序将是一个很好的答案。:)
发布为答案,因为长度超过评论长度限制。
我对您的问题投了反对票,因为它是用火焰诱饵元素配制的。我猜您之前使用 GUI 库的经验主要是使用支持框布局的库,例如 Qt。Win32 GUI API 本身不提供任何用于创建盒子布局的原语 - 它使用绝对坐标。这在许多构建在 API 之上的 OO 库(例如 MFC)中保持不变。一些库,如 VCL,具有用于创建框布局(具有对齐和自动大小的面板)的可选原语 - 但最终,所有控件重新定位都必须由应用程序或 GUI 框架完成,因此需要这样的事情从头开始在 DFL 中实现。
所以,回答你的问题:
DFL有什么
TableLayoutPanel
实现吗?
可能不是。
没有它,人们通常如何使用这个库?
他们使用 Entice Designer 在表单上绘制控件。(MFC/Visual Studio、VCL/Delphi IDE等也是如此)
回复评论:
我如何将东西放在表格布局中(例如两个并排,一个在下面)?
我了解您希望在底部有一个固定高度的面板,并将剩余空间分成两个区域,当调整表单大小时,这两个区域都保持为表单宽度的一半。
dock
为BOTTOM
. 适当设置它的高度。dock
为RIGHT
。 protected override void onResize(EventArgs ea)
{
super.onResize(ea);
panel2.width = this.clientRectangle.width / 2;
}
如您所见,获得更复杂的“橡皮表”很快就会变得一团糟。我不会打扰,或者如果我真的需要复杂的动态布局,我会寻找另一个库。
还是你说这首先是个坏主意?
绝对不是我的观点——不需要使用 IDE 构建的语义布局的优势是显而易见的。只是由于它们的 Win32 API 根源,Windows GUI 库很少提供构建它们的好方法。当然,它们的缺席并没有使构建 GUI 变得不可能甚至变得困难——人们通常只是使用固定大小的表单,等等。(这对于从 Windows 切换到 KDE 的最终用户来说是清晰可见的——大多数 KDE 对话框是可调整大小的,而 Windows '不是。)
现在我已经接近我的代码了,有两种方法可以管理布局。正如棘轮所提到的,有绝对位置和对接。对接将项目放置在 5 个可能的位置。顶部、底部、左侧、右侧或中心(填充)。然后,您可以在其中一个中放置一个面板,该面板本身可以包含停靠在其中的元素。您将停靠值分配给停靠属性。
Entice Designer是用 DFL 编写的。
在缺少表格布局的情况下,您可以使用 location 和 size 属性在板上放置东西(甚至可以实现自己的表格布局)
您可以使用entice 设计器制作 gui 并在生成的源代码上进一步构建