Если у вас не полностью устаревшая версия Progress OpenEdge, вы можете использовать. Net элементы управления, визуальный дизайнер в Progress Developer Studio для OpenEdge (PDSOE) позволит вам перетаскивать следующие элементы вместе:
Создается следующий исходный код (который также можно использовать для создания формы):
USING Progress.Lang.*.
USING Progress.Windows.Form.
BLOCK-LEVEL ON ERROR UNDO, THROW.
CLASS button INHERITS Form:
DEFINE PRIVATE VARIABLE button1 AS System.Windows.Forms.Button NO-UNDO.
DEFINE PRIVATE VARIABLE components AS System.ComponentModel.IContainer NO-UNDO.
CONSTRUCTOR PUBLIC button ( ):
SUPER().
InitializeComponent().
THIS-OBJECT:ComponentsCollection:ADD(THIS-OBJECT:components).
CATCH e AS Progress.Lang.Error:
UNDO, THROW e.
END CATCH.
END CONSTRUCTOR.
METHOD PRIVATE VOID InitializeComponent( ):
/* NOTE: The following method is automatically generated.
We strongly suggest that the contents of this method only be modified using the
Visual Designer to avoid any incompatible modifications.
Modifying the contents of this method using a code editor will invalidate any support for this file. */
@VisualDesigner.FormMember (NeedsInitialize="true").
DEFINE VARIABLE resources AS Progress.Util.ResourceManager NO-UNDO.
resources = NEW Progress.Util.ResourceManager("button").
THIS-OBJECT:button1 = NEW System.Windows.Forms.Button().
THIS-OBJECT:SuspendLayout().
/* */
/* button1 */
/* */
THIS-OBJECT:button1:Image = CAST(resources:GetObject("button1.Image"), System.Drawing.Image).
THIS-OBJECT:button1:ImageAlign = System.Drawing.ContentAlignment:MiddleLeft.
THIS-OBJECT:button1:Location = NEW System.Drawing.Point(13, 212).
THIS-OBJECT:button1:Name = "button1".
THIS-OBJECT:button1:Size = NEW System.Drawing.Size(108, 42).
THIS-OBJECT:button1:TabIndex = 0.
THIS-OBJECT:button1:Text = "Exit".
THIS-OBJECT:button1:TextAlign = System.Drawing.ContentAlignment:MiddleRight.
THIS-OBJECT:button1:UseCompatibleTextRendering = TRUE.
THIS-OBJECT:button1:UseVisualStyleBackColor = TRUE.
/* */
/* button */
/* */
THIS-OBJECT:ClientSize = NEW System.Drawing.Size(292, 266).
THIS-OBJECT:Controls:Add(THIS-OBJECT:button1).
THIS-OBJECT:Name = "button".
THIS-OBJECT:Text = "button".
THIS-OBJECT:ResumeLayout(FALSE).
CATCH e AS Progress.Lang.Error:
UNDO, THROW e.
END CATCH.
END METHOD.
DESTRUCTOR PUBLIC button ( ):
END DESTRUCTOR.
END CLASS.
Метод перетаскивания также по умолчанию создаст файл resx, который является xml файлом, содержащим используемые ресурсы, изображение там закодировано:
<data mimetype="application/x-microsoft.net.object.bytearray.base64" name="button1.Image" type="System.Drawing.Bitmap, System.Drawing">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wgAADsIBFShKgAAAAJFJREFUOE/N0EEOgCAMRFEP4tL738wz1CaDQYa2FmThX5FIH8gmi/otdO4HFtNV
aNSikfproxZtbt4ob/Xb+LEzkHmeAcWW95Uh5O0OjslCIDxFsyHtORMTyIU0DGcULYK0pKK93AjK/I3o
Ip+gsrojuo+hYCC2Gig+E3lchTIKMq0Ceed49fvtx860DKIWQSIXxapUG1GIZgoAAAAASUVORK5CYII=
</value>
При создании форм с кодом вам не нужны файлы resx и можно загружать изображения et c из файловой системы.