10

每次我尝试使用D Forms Library时,都会遇到这样一个事实:它没有TableLayoutPanel——这使得我几乎不可能制作出好的 GUI。

DFL有什么TableLayoutPanel实现吗?
没有它,人们通常如何使用这个库?

编辑:

链接到另一个使用 DFL 的程序将是一个很好的答案。:)

4

3 回答 3

6

发布为答案,因为长度超过评论长度限制。

我对您的问题投了反对票,因为它是用火焰诱饵元素配制的。我猜您之前使用 GUI 库的经验主要是使用支持框布局的库,例如 Qt。Win32 GUI API 本身不提供任何用于创建盒子布局的原语 - 它使用绝对坐标。这在许多构建在 API 之上的 OO 库(例如 MFC)中保持不变。一些库,如 VCL,具有用于创建框布局(具有对齐和自动大小的面板)的可选原语 - 但最终,所有控件重新定位都必须由应用程序或 GUI 框架完成,因此需要这样的事情从头开始在 DFL 中实现。

所以,回答你的问题:

DFL有什么TableLayoutPanel实现吗?

可能不是。

没有它,人们通常如何使用这个库?

他们使用 Entice Designer 在表单上绘制控件。(MFC/Visual Studio、VCL/Delphi IDE等也是如此)


回复评论:

我如何将东西放在表格布局中(例如两个并排,一个在下面)?

我了解您希望在底部有一个固定高度的面板,并将剩余空间分成两个区域,当调整表单大小时,这两个区域都保持为表单宽度的一半。

  1. 在 Entice Designer 中,放置一个面板,将其设置dockBOTTOM. 适当设置它的高度。
  2. 放置第二个面板,将其设置dockRIGHT
  3. 在表单的代码中,添加以下方法:
    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 '不是。)

于 2011-07-12T15:27:10.667 回答
1

现在我已经接近我的代码了,有两种方法可以管理布局。正如棘轮所提到的,有绝对位置和对接。对接将项目放置在 5 个可能的位置。顶部、底部、左侧、右侧或中心(填充)。然后,您可以在其中一个中放置一个面板,该面板本身可以包含停靠在其中的元素。您将停靠值分配给停靠属性

Entice Designer是用 DFL 编写的。

于 2011-07-11T18:51:24.480 回答
1

在缺少表格布局的情况下,您可以使用 location 和 size 属性在板上放置东西(甚至可以实现自己的表格布局)

您可以使用entice 设计器制作 gui 并在生成的源代码上进一步构建

于 2011-07-11T16:15:10.577 回答