Top Method Summary
Options Name Purpose
AdjustGroupBoxRelativePositions () After building the ttFrameWidget records, adjust the AtRow / AtColumn of widgets parented to a group box to be relative to the user control. Group boxes are mapped to ABL rectangles, which are not containers in ABL - so contained widgets need absolute coordinates.
ApplyControlMapping (buffer) Applies the AlternativeControlType / AlternativeControlName for special controls (SmartBusinessEntityLookup, SmartComboEditor)
ApplyResxValue (character, character, character) Applies a single .resx key/value pair to the matching ttControl record
AssignControlLabels () Associates side label controls with their target controls by populating the target's LabelText field
BuildFrameWidgets () Builds the ttFrameWidget records from the collected ttControl records
CaptureBindingSourceEntity () Captures the EntityName / EntityTable / EntityView of the SmartBusinessEntityBindingSource of the parsed user control
CarrySpecialControlProperties (character, buffer, buffer) Copies the JsonObject properties of the ttControl to the matching ttFrameWidget record as ExtraProperties, tagging the special control type
CollectClassLevelVariables (INode) Walks the class block and collects the class-level DEFINE VARIABLE statements into the ttControl temp-table
CollectControls (character) Drives the ProparseApi based parsing of the file
CreateFrameWidget (buffer, integer, character, character) Creates a ttFrameWidget record from a ttControl record
DetermineClassName (character) Determines the class name of the user control from the file name
CHARACTER GetFirstControlArgument (INode) Returns the control name of the first THIS-OBJECT:control argument of a Controls:Add call
Consultingwerk.Framework.Collections.CharacterList GetFrameNames (character) Parses the given file and returns a CharacterList with the single short class name as the only entry, when the file represents a GUI for .NET UserControl
GetFrameWidgets (character, character, table) Parses the given file and returns the resulting widgets in the ttFrameWidget temp-table
HandleControlInstantiation (character, INode) Handles the "THIS-OBJECT:control = NEW Type(...)" assignment
HandleControlPropertyAssignment (character, character, INode) Handles "THIS-OBJECT:control:Property = value" assignments
HandleDataBindingArguments (character, INode) Handles arguments of a DataBindings:Add () call. The data binding carries field/binding source information that ties the control back to a column in the Business Entity binding source.
LOGICAL IsSideLabel (integer) Returns TRUE when a label control is the side label of another control (i.e. the control with the next tab index is not itself a label)
CHARACTER MapViewAs (character, logical) Returns the VIEW-AS for a given .NET type
CHARACTER MapWidgetType (character, logical) Returns the WidgetType for a given .NET type. Matches the values produced by the ABL FrameParser
ParseInitializeComponent (INode) Processes the body of the InitializeComponent method
ProcessEqualNode (INode) Processes an EQUAL node. Handles two cases: 1) THIS-OBJECT:controlName = NEW Type(...) 2) THIS-OBJECT:controlName:Property = value
ProcessMethodCallWidgetRef (INode) Processes a Widget_ref node that represents a method call, for the patterns THIS-OBJECT:Controls:Add (...), THIS-OBJECT:groupbox:Controls:Add (...) and THIS-OBJECT:control:DataBindings:Add (...)
CHARACTER ResolveFieldName (buffer) Resolves the field name used in ttFrameWidget for the given ttControl

Top Property Summary
Options Name Purpose
CHARACTER EntityName
CHARACTER EntityTable
CHARACTER EntityView
CHARACTER FrameName


Method Detail
Top

AdjustGroupBoxRelativePositions ()

Purpose: After building the ttFrameWidget records, adjust the AtRow / AtColumn
of widgets parented to a group box to be relative to the user control.
Group boxes are mapped to ABL rectangles, which are not containers in
ABL - so contained widgets need absolute coordinates.
Notes:

Top

ApplyControlMapping (buffer)

Purpose: Applies the AlternativeControlType / AlternativeControlName for
special controls (SmartBusinessEntityLookup, SmartComboEditor)
Notes: Captures a marker key "__AlternativeControlType" inside the
ExtraProperties JSON so the AblFrameMigrationService can lift
the special-control information into the appropriate
AlternativeControlType / AlternativeControlProperties fields on
ttSelectedFrameWidget.

Parameters:
ttControlBuf buffer
BUFFER The ttControl record
Top

ApplyResxValue (character, character, character)

Purpose: Applies a single .resx key/value pair to the matching ttControl record
Notes: Overrides the abstract base method called from CollectResxProperties

Parameters:
pcControl CHARACTER
The control name (or $this for the user control itself)
pcProperty CHARACTER
The property name (e.g. "Location", "Size", "Text")
pcValue CHARACTER
The string representation of the value
Top

AssignControlLabels ()

Purpose: Associates side label controls with their target controls by
populating the target's LabelText field
Notes: In a GUI for .NET layout the side label of a control directly
precedes it in the tab order, so the label of a control with
TabIndex N is the label control with TabIndex N - 1. This
positional rule is independent of the control naming and so also
handles combo / lookup controls whose own name does not follow
the field naming convention.

Top

BuildFrameWidgets ()

Purpose: Builds the ttFrameWidget records from the collected ttControl records
Notes:

Top

CaptureBindingSourceEntity ()

Purpose: Captures the EntityName / EntityTable / EntityView of the
SmartBusinessEntityBindingSource of the parsed user control
Notes: The binding source control is collected like any other control;
its EntityName / EntityTable / EntityView property assignments are
stored in its Properties JsonObject. The first binding source that
carries an EntityName wins.

Top

CarrySpecialControlProperties (character, buffer, buffer)

Purpose: Copies the JsonObject properties of the ttControl to the matching
ttFrameWidget record as ExtraProperties, tagging the special
control type
Notes: The "__AlternativeControlType" marker is consumed by
AblFrameMigrationService:LiftExtraPropertyMarkers LiftExtraPropertyMarkers to populate the
AlternativeControlType / AlternativeControlProperties fields on
ttSelectedFrameWidget. The .NET control variable name is not a
repository object master, so AlternativeControlName is left for
the service / user to assign and is not carried here.

Parameters:
pcAlternativeType CHARACTER
The alternative control type (e.g. SmartBusinessEntityLookup)
ttControlBuf buffer
BUFFER The ttControl record
ttFrameWidgetBuf buffer
BUFFER The ttFrameWidget record
Top

CollectClassLevelVariables (INode)

Purpose: Walks the class block and collects the class-level
DEFINE VARIABLE statements into the ttControl temp-table
Notes:

Parameters:
poClassBlock Consultingwerk.Studio.ProparseApi.INode
The CLASS node
Top

CollectControls (character)

Purpose: Drives the ProparseApi based parsing of the file
Notes: Locates the InitializeComponent method and processes the
NEW expressions and property assignments

Parameters:
pcFileName CHARACTER
The name of the file to parse
Top

CreateFrameWidget (buffer, integer, character, character)

Purpose: Creates a ttFrameWidget record from a ttControl record
Notes:

Parameters:
ttControlBuf buffer
BUFFER The ttControl record
piOrder INTEGER
The order of the record
pcWidgetType CHARACTER
The WidgetType
pcViewAs CHARACTER
The VIEW-AS
Top

DetermineClassName (character)

Purpose: Determines the class name of the user control from the file name
Notes: Populates the cShortName field

Parameters:
pcFileName CHARACTER
The name of the file to parse
Top

CHARACTER GetFirstControlArgument (INode)

Purpose: Returns the control name of the first THIS-OBJECT:control
argument of a Controls:Add call
Notes: The argument is wrapped in an N_INPUT node containing a Widget_ref

Parameters:
poParamList Consultingwerk.Studio.ProparseApi.INode
The Method_param_list of the Controls:Add call
Returns CHARACTER
The control name or the empty string
Top

Consultingwerk.Framework.Collections.CharacterList GetFrameNames (character)

Purpose: Parses the given file and returns a CharacterList with the
single short class name as the only entry, when the file
represents a GUI for .NET UserControl
Notes:

Parameters:
pcFileName CHARACTER
The name of the file to parse
Returns Consultingwerk.Framework.Collections.CharacterList
The CharacterList with the resulting short class name
Top

GetFrameWidgets (character, character, table)

Purpose: Parses the given file and returns the resulting widgets
in the ttFrameWidget temp-table
Notes:

Parameters:
pcFileName CHARACTER
The name of the file to parse
pcFrameName CHARACTER
The name of the frame (or class) to return the widgets for
ttFrameWidget TEMP-TABLE ttFrameWidget
OUTPUT TABLE The ttFrameWidget temp-table with the resulting widgets
Top

HandleControlInstantiation (character, INode)

Purpose: Handles the "THIS-OBJECT:control = NEW Type(...)" assignment
Notes: Captures the .NET type of the control and assigns the discovery order

Parameters:
pcControl CHARACTER
The control name
poRight Consultingwerk.Studio.ProparseApi.INode
The right hand side of the assignment (NEW expression)
Top

HandleControlPropertyAssignment (character, character, INode)

Purpose: Handles "THIS-OBJECT:control:Property = value" assignments
Notes: Captures property values relevant to the migration into the
ttControl.Properties JsonObject

Parameters:
pcControl CHARACTER
The control name
pcProperty CHARACTER
The property name
poRight Consultingwerk.Studio.ProparseApi.INode
The right hand side of the assignment
Top

HandleDataBindingArguments (character, INode)

Purpose: Handles arguments of a DataBindings:Add () call. The data binding
carries field/binding source information that ties the control
back to a column in the Business Entity binding source.
Notes: Expected: NEW System.Windows.Forms.Binding ("Text", bindingSource, "FieldName", true).
Each constructor argument is wrapped in an N_INPUT node inside
the binding's Parameter_list.

Parameters:
pcControl CHARACTER
The control name
poParamList Consultingwerk.Studio.ProparseApi.INode
The Method_param_list of the DataBindings:Add call
Top

LOGICAL IsSideLabel (integer)

Purpose: Returns TRUE when a label control is the side label of another
control (i.e. the control with the next tab index is not itself
a label)
Notes: The positional inverse of AssignControlLabels - a side label has
a non-label control directly after it in the tab order.

Parameters:
piTabIndex INTEGER
The TabIndex of the label control
Returns LOGICAL
Logical value
Top

CHARACTER MapViewAs (character, logical)

Purpose: Returns the VIEW-AS for a given .NET type
Notes:

Parameters:
pcTypeName CHARACTER
The .NET type name
plMultiline LOGICAL
Logical value indicating if the control is multiline
Returns CHARACTER
The VIEW-AS string
Top

CHARACTER MapWidgetType (character, logical)

Purpose: Returns the WidgetType for a given .NET type. Matches the
values produced by the ABL FrameParser
Notes:

Parameters:
pcTypeName CHARACTER
The .NET type name
plMultiline LOGICAL
Logical value indicating if the control is multiline
Returns CHARACTER
The WidgetType string
Top

ParseInitializeComponent (INode)

Purpose: Processes the body of the InitializeComponent method
Notes: Walks each statement and dispatches to the corresponding
handler. Captures NEW expressions and ASSIGN/EQUAL property
assignments.

Parameters:
poMethod Consultingwerk.Studio.ProparseApi.INode
The METHOD INode for InitializeComponent
Top

ProcessEqualNode (INode)

Purpose: Processes an EQUAL node. Handles two cases:
1) THIS-OBJECT:controlName = NEW Type(...)
2) THIS-OBJECT:controlName:Property = value
Notes:

Parameters:
poEqual Consultingwerk.Studio.ProparseApi.INode
The EQUAL INode
Top

ProcessMethodCallWidgetRef (INode)

Purpose: Processes a Widget_ref node that represents a method call, for
the patterns THIS-OBJECT:Controls:Add (...),
THIS-OBJECT:groupbox:Controls:Add groupbox:Controls:Add (...) and
THIS-OBJECT:control:DataBindings:Add control:DataBindings:Add (...)
Notes: Only Widget_ref nodes that carry a Method_param_list child are
method calls; all other Widget_ref nodes (assignment targets,
binding source arguments) are ignored here.

Parameters:
poWidgetRef Consultingwerk.Studio.ProparseApi.INode
The Widget_ref node
Top

CHARACTER ResolveFieldName (buffer)

Purpose: Resolves the field name used in ttFrameWidget for the given ttControl
Notes: Uses the BindingProperty/FieldName captured from DataBindings if present,
otherwise falls back to the control name

Parameters:
ttControlBuf buffer
BUFFER The ttControl record
Returns CHARACTER
The field name to use for the ttFrameWidget record


Property Detail
Top

CHARACTER EntityName


Returns CHARACTER
Top

CHARACTER EntityTable


Returns CHARACTER
Top

CHARACTER EntityView


Returns CHARACTER
Top

CHARACTER FrameName


Returns CHARACTER


Temp-Table Detail

Temp-Table ttFrameWidget

Defined in:


©2006-2026 Consultingwerk Ltd.         info@consultingwerk.de         http://www.consultingwerk.de       01.06.2026 09:18:22