0
votes

While having a look at a frame, developed in Progress 4GL, I see source code like the following:

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
     ...

This hardcoded way of working is heavily different than GUI development in Java (Swing) and Delphi (panels), where general layouts are used, having its impact on resizing, working with different resolutions, ...

My colleagues have no idea what I'm talking about, hence my question here: is a modern layout possible in OpenEdge Progress 4GL?

Thanks in advance

3

3 Answers

1
votes

Old fossils (like me) code with a text editor and some of us prefer manual layout.

But the cool kids use visual IDEs like Progress Developer Studio for OpenEdge to layout their GUI stuff.

(PDSOE supports "round trip" editing so I can pop open the generated code and adjust things manually if I don't want to use the visual tools.)

1
votes

The 4GL GUI is based on old windows technology with limitations to match.

You have 2 UI migration options.

  1. Go to .NET which can interact natively with the 4GL, or
  2. make APIs available - then you can use any UI system which supports REST calls to a server. This will require a Progress Appserver to implement.
1
votes

Define frame defines a static frame. The size and widgets are defined at compile time.

Create frame creates a dynamic frame at run time which can be filled with dynamically created widgets at run time.

We have a system layer that will translate our back-end definitions to either classic windows widgets or a dataset that is sent to a browser where javascript renders it.

For the windows client, there is one .p responsible for creating all widgets based on the dataset. At some point - for the fun of it - I also created a .p that creates .Net widgets instead of classic ABL widgets.