如何在 OpenEdge Progress 4GL 中创建 GUI

问题描述

在查看用 Progress 4GL 开发的框架时,我看到如下源代码

DEFINE FRAME FRM1
     Field1 AT ROW 1.54 COL 3 NO-LABEL
     Field2 AT ROW 1.81 COL 33
     Field3 AT ROW 2.54 COL 7.29 COLON-ALIGNED
     ...

这种硬编码的工作方式与 Java(Swing)和 Delphi(面板)中的 GUI 开发大不相同,后者使用通用布局,对调整大小、使用不同分辨率的工作产生影响......

我的同事不知道我在说什么,因此我的问题是:在 OpenEdge Progress 4GL 中是否可以实现现代布局?

提前致谢

解决方法

旧化石(像我一样)使用文本编辑器编写代码,我们中的一些人更喜欢手动布局。

但是酷孩子使用像 Progress Developer Studio for OpenEdge 这样的可视化 IDE 来布局他们的 GUI 内容。

(PDSOE 支持“往返”编辑,因此如果我不想使用可视化工具,我可以弹出生成的代码并手动调整内容。)

,

4GL GUI 基于旧的 Windows 技术,具有匹配限制。

您有 2 个 UI 迁移选项。

  1. 转到可以与 4GL 本地交互的 .NET,或者
  2. 使 API 可用 - 然后您可以使用任何支持对服务器进行 REST 调用的 UI 系统。这将需要 Progress Appserver 来实施。
,

Define frame 定义了一个静态框架。大小和小部件在编译时定义。

创建框架在运行时创建一个动态框架,它可以在运行时用动态创建的小部件填充。

我们有一个系统层,可以将我们的后端定义转换为经典的 Windows 小部件或发送到浏览器的数据集,在那里 javascript 呈现它。

对于 windows 客户端,有一个 .p 负责基于数据集创建所有小部件。在某些时候 - 为了它的乐趣 - 我还创建了一个 .p 来创建 .Net 小部件而不是经典的 ABL 小部件。