Salesforce

Differences Between V1.9 and Magic xpa 2.5 (Magic xpa 2.x)

« Go Back

Information

 
Created ByKnowledge Migration User
Approval Process StatusPublished
Objective
Description

Differences Between V1.9 and Magic xpa 2.5

The major differences between V1.9 and V2.5 are described below.

Note:

This topic compares features that existed in version 1.9 and were changed in version 2.0 to 2.5. To see the new features added in version 2.x, please refer to the Past Release Notes for more details.

.NET Framework

In Magic xpa 2.2 and above, the Online GUI is based on the .NET framework instead of Win32.

The .NET framework does not support all the appearances and controls behavior that were supported in previous versions, so there is a change in the Magic xpa Runtime appearance as well.

User State Persistency

The persistency is defined as in Rich Client tasks (Yes/No and not by giving a form name).

This change makes it simpler to use the form state persistency since you now do not need to define and maintain a list of unique identifier names for your forms.

In the Online form and model properties:

  • The User state identifier property was removed.

  • The Persistent form state property was added.

Note: Due to this change, existing users' form states are ignored.

Online MDI

The Online Runtime MDI Frame is now defined as any other form in the Main Program (similar to the Rich Client MDI Frame).

The benefit of this change is the gathering of all the form properties from the different locations they were once defined in, into a single location.

The following properties and behaviors have been changed:

  • The Open task window task property in the Main Program now defines whether an MDI is shown.

  • The Main Display task property in the Main Program enables you to define several MDI frame forms and dynamically display the required form at runtime.

  • The Main Program's Task Properties dialog box contains a new property called Run project as, which determines whether the Online or Rich Client MDI frame will be shown when running the project from the Studio (Ctrl+F7).

  • The Caption, System pulldown menu, and Icon file name properties were removed from the application properties and are now defined on the MDI Frame form itself. If the caption value in your application properties was blank, you need to write your project name in the MDI form name property. If you had a logical name in the Caption property, you should define it as expression in the MDI form name property and use the Translate function.

  • The MDI Client area uses the color specified in the MDI Form property, giving you full control of the color. To show the V1.9 client area color you can use a system background color of type Application Workspace.

  • MDI Child forms cannot be larger than the MDI frame. These forms will be resized during runtime.

  • The MDI pulldown menu does not support a multi-line menu.

  • When the application is executed from the Studio and two monitors are attached to the PC, the Runtime MDI is opened from scratch each time, so it cannot be attached to a specific monitor.

Controls on the MDI – In previous versions, it was possible to show a Main Program form over the MDI and thus show static controls. This is currently not supported.

Engine MDI

The Magic xpa engine's built-in MDI was removed. This means that:

  1. The Runtime engine (MgxpaRuntime.exe) can run only if a start application was defined.
    To let your end users execute several applications, they need a different shortcut for each application. In the shortcut's Target field you specify the location of the .ecf file.

  2. The Runtime engine no longer provides environment editors.

  3. Modifying the environment settings (such as settings, colors, and fonts) or the users rights can be done in the following ways: using the Studio, a text editor, or by designing ad-hoc application programs that utilize the INIGet and INIPut functions. Note that you can run the Studio without a license to make these modifications.

The internal events used to open the Settings repositories are not supported.

Non-Supported Controls

The ActiveX, OLE, Rectangle, Ellipse, Horizontal slider and Vertical slider controls are not supported. Equivalent .NET or third-party controls can be used.

The Text (Label) control can be used to simulate a Rectangle control.

If you defined AcitveX, OLE or Slider controls as models, they will still appear in the project’s Model repository after the conversion. You will need to remove these models.

The conversion process will automatically remove Slider controls defined in a form. However, any variable or expressions used in the Slider controls’ properties will still exist and may result in a warning message when you run the Syntax Checker.

ActiveX and OLE controls will be kept by the migration process, but will generate a Checker error. You will need to remove these controls or replace them with .NET controls. In some cases you can wrap an ActiveX control in a .NET control although this will not always work because not all ActiveX controls can be wrapped. This is a .NET wrapper limitation not related to Magic.

Note: The use of non-visual COM objects is unchanged and continues to be supported as in version 1.x.

Control Properties
  • The Horizontal alignment property for List Box, Combo Box, Tab, Group, Rich Edit controls is not supported. Note: Right and Left alignment on some controls can be achieved using the RTL property.

  • Some of the Style and Border properties' values are no longer supported.

  • The Left and Top properties of GUI Display controls were changed to X and Y properties.

  • Visibility of controls behind a container control – When a control is placed on a container control but is not attached to the container control, the control will not be seen at runtime. Specifically:

  • for a Tab container, it is not possible to have a control shown on all the tabs (by not attaching it to a specific layer).

  • for a Table control, it is not possible to have controls on the title area, to have controls on one column and attach them to another column, or to have a control stretched beyond a column width.

  • Location and placement of controls attached to a container control – The location and placement properties' values of controls attached to a container control is relative to the container control (instead of to the form in the previous version).This means that:

  • Any expression used in the location properties of controls that are attached to a container control will not work correctly and should be changed.

  • Placement values of controls that are attached to a container control may not work correctly and should be changed.

  • Z-Order – Controls that are not connected to a Container control can no longer be displayed on top of the Container control. When you migrate a project, the Z-Order remains, but has no effect. Controls that were displayed on top of a Container controls are automatically linked to the Container control.

    Note: Since version 2.3, the limitation of setting a manual z-order for some controls to be above other controls (such as to define an Edit control with a z-order value higher than a Button control z-order) was removed, so that it can be used to define the controls’ z-order on Android and iOS clients. On Windows platforms, combinations that are not allowed are still not supported, so they will be ignored.

  • The background color of 3D controls will be seen (as opposed to White or Gray in the previous version).

  • Only TrueType and limited Open Type fonts are supported. In the Studio, you will still be able to see non-TrueType fonts, but during Runtime, they will be automatically converted to a TrueType font. The Checker will continue to issue errors for non-TrueType fonts until you replace them.

  • Font Orientation is only supported for Label controls and column headers on a Windows desktop. Since version: 2.4 (In previous 2.x versions, font orientation was not supported.)

  • In the previous Online version, the expression in some control properties was always re-evaluated when a recompute occurred, even if there was no variable in the expression. This behavior was changed and the expression in these control properties is now re-evaluated only if the expression has a variable that was changed. The properties are: Color, Context menu, Data, Enabled, Font, Format, Height, Range, Visible, Width, X, Y.

.NET Controls

The .NET Data control property now holds the variable or expression associated with the control. In previous versions, the Data property was used as the .NET Object Reference property. Since version: 2.1

If you update the Magic xpa variable with the .NET control value, but the values are different, the control will be updated with the Magic xpa variable value. Since version: 2.3

Check Box Controls

The Multiline property for Check Box controls is not supported when the Appearance property is set to Button.

Combo Box Controls

The height of the combo box is defined by the combo box's font and cannot be changed.

Note: Since V2.3, the Combo Box control’s Height property is modifiable on Rich Client forms so it can be used to define the controls’ height on Android and iOS clients. On Windows platforms, the value of this property has no effect since the Windows combo box control ignores the Height property and calculates the height according to the font used.

Edit Controls

The following properties are not supported in Edit controls:

  • Expansion Window – Only a default internal window is supported (it is not possible to define a form and use it as the size of the expansion window). If you used a form in a previous version for the Expansion Window option, it is not removed by the conversion utility. You can remove it manually.

  • Show Scroll bars

The Horizontal scroll property includes the Word Wrap option.

When parking on an Edit control and the value of the variable attached to the control is changed by an Update operation, the new value will be seen immediately (in 1.9 it was seen after leaving the control).

Numeric calculations (such as writing ‘2+’ in the control) are not supported.

The color set in the Color property now also appears on parked fields.

Group Controls

The location of the groups’ top line is set according to the Group control's font, even if no text is set for the control. If you want the line to appear at the top of the Group control, you need to use a font with a size of 1.

Image Controls

The following properties are not supported in Image controls:

  • Image Effects

  • Parking and modifying properties – Parking on am Image control is not supported. The following properties were removed from the Online Image control (and Model) – Must Input, Modifiable, Select Program, Select Mode, Help Screen, Help Prompt, Allow Parking, Tab Into, Allowed Directions and Tab Order. It will not be possible to zoom from the Image control and select a file.

Truevision targa (.TGA) images are not supported.

The image default (inherited value) is now No Border.

Push Button Controls

For Hyper Text buttons, the default color is taken from the CLR and not form the Internal Color Table.

The Online Push Button control's Button Style property no longer has the Text on image option. It now works the same as Rich Client. The text for the button is defined according to the value of the Format property, and the button image is defined by the associated variable or the Default Image file property if no variable is associated with the control.

The Conversion utility will convert buttons that were set with the Text on image option into Image buttons.

Radio Button Controls

The Multiline property for Radio Button controls is not supported when the Appearance property is set to Button.

RTF Edit Controls

The RTF Edit control has no built in context menu. If you want to give the end user the ability to change the color or font of an RTF control, you can define a menu with the Magic xpa internal events, such as Change Color, Change Font, Align Left, and Align Right, and assign this menu to the control's Context Menu property.

The RTF Edit control no longer supports a transparent background color.

RTF Text Controls

The RTF Text control does not support a transparent background color.

Static Controls

The following properties are not supported in Static controls:

  • Static Type

  • Line Width

  • Line Style

Subform Controls Since version: 2.0a

  • A new property named Refresh when hidden was added to the Subform control in Online tasks. This property provides the ability to load and refresh the task running in the Subform control the same way it was done in version 1.9.

    A value of Yes means that the subform tasks will be called first after the Record Prefix of the host and again after each refresh of the subform. This is similar to the behavior in version 1.9 when the subform was attached to a container control and the container control was hidden.

    A value of No means that the subform tasks will be called only if the subform is visible. This is similar to the behavior in version 1.9 when the subform had a Visible expression.

    For nested subforms defined with a value of No, if the parent subform has value of Yes at runtime, then the nested subform will also be executed with a value of Yes.

    Having the same expression as the Visible property will generate the same behavior as in version 1.9 when the subform was attached to a container control and also had a Visible expression.

  • When clicking on a Subform control, the Control Prefix and Control Suffix of the first control were always executed. This is now fixed, so only the Control Prefix of the clicked control will be executed.

  • If the subform has a Visible expression, then setting this expression to False (to hide the subform) will not work when the subform task is the task in focus. To support such behavior, you should move the focus to the parent task using the CtrlGoto function and raise an event with Wait=No, which will be handled in the parent task and will change the subform's Visible expression.

  • If an Online task running in a Subform control cannot be executed, the subform will close (and not the entire program, as in previous versions). Since version: 2.4c

Tab Controls

The Right and Left options of the Tab Control Side property were removed.

If the tab has no default value, then the first tab will be selected and shown.

The Tab control header color is defined by the Windows operating system and cannot be manually set (Since version: 2.5a).

Table Controls

The Style, Table in window, Keep Width and Last Divider properties for the Table control are not supported.

It is not possible to use a List Box control in a Table control.

The Marking column property was removed from the Column Properties. Note: Since V2.3, multi-marking is supported for Table controls in Online tasks.

Double clicking on the table column divider will not resize the column.

Scrolling with the mouse is only enabled when parking in the table.

Since V2.5, when setting the Scroll bar property to Yes, the vertical scroll bar will now appear only if there are more records than the ones that can be displayed on the form (as in V1.9).

Tree Controls

The Tree control does not support multi-marking, drag and drop, or a transparent background color.

Form Properties

When migrating a task with a splitter on the form from previous versions, then an additional FrameSet form will be added. That form will include a reference to the existing form in one of the frames.

You then have to:

  • Manually define the called program in the other frame and remove the Call operation to that program.

  • Modify the end task condition of the called program if it was defined with an expression such as Level(1)='RP' or Level(1)='TP'.

  • A model of a splitter form is converted into two models – one for the frameset and one for the display form. If the form has a model attached from a component, you need to manually assign the display form model to the display form.

The Left and Top properties of GUI Display forms were changed to X and Y properties.

Online forms now have a minimum Height and Width, which is set by the Windows operating system. To change this, see Why is the runtime form larger than the size defined in the Studio?.

When the Startup Position form property is set to Default, the form size in the old Online and the new Online is different.

Truevision targa (.TGA) images are not supported in the Wallpaper form property.

Modal Window

When a program is called using the Select Program property of a variable or control, the Window Type will be Modal and not an MDI child (when run as an MDI) or floating (when run under an SDI).

A Modal window will halt the execution of parallel programs (so it behaves as the version 1.9 Application Modal window type). Since version: 2.1

The Application Modal window type was removed. Since version: 2.1

Fit To MDI Window

When a program defined with Fit to MDI window type is called from another program defined with SDI window type, the Fit to MDI program is opened inside the application MDI (and not inside the SDI program).

Split Form

The Split Window form property and Splitter child value of the Window Type form property are not supported. You can use the new Frames mechanism instead.

You can now pass arguments to the called programs/tasks directly from the frame properties, and enjoy automatic refresh when these arguments are modified.

For frames layout of more than two frames, you can call more than one program directly from the parent task.

From V2.5, in Online, the following scenarios are now possible:

  • Calling a program to a destination frame when the Call operation is defined in a handler that is a parent task of the task that includes the frames form.

  • Opening an Online task in a destination frame when the Online task is called from a Batch parent and the Batch parent was defined to be called into the destination frame.

    These capabilities provide backward compatibility with the splitter capabilities. Note that the behavior of these scenarios has some limitations. Refer to the Destination property help topic for additional information.

Note:

  • Splitter forms can run as child windows and have placement values, so when the host window is resized, the splitter form gets resized as well. Frames forms do not have placement, so when the splitter form is migrated to a frames form and it is used as a child window, the frames form will not be resized. To achieve the same runtime behavior, you need to create a subform in the host and run the frames task in the subform.

Logic Units

Until version 2.0, in Online tasks, the Control Verification logic unit was executed when moving between the records only by using the mouse. It was not executed when moving between the records using the keyboard. As of version 2.0, the Control Verification logic unit is executed when moving between the records both by using the mouse and keyboard.

NULL Values

NULL calculations were changed and now the expression will not fail when NULL values are used in it.

In version 1.9, having an expression of A<>’’ where A variable had a NULL value, returned False and in 2.x and above it will return True. In fact, in version 1.9, having an expression of A<>’’ OR ‘TRUE’LOG always returned False since the A<>’’ part failed the expression and the rest of the expression was ignored. This was fixed in version 2.0 and now NULL comparison is properly handled.

Window Focusing

Window focusing was changed and the Windows operating system will now set the window focus according to the last control in focus. This means that:

Links on Virtual Variables

Since V2.4, in Rich Client tasks, when a Virtual variable without an init expression is changed, its value is seen on all of the records. However, links based on the new value were not refreshed in all of the records. This has now been changed, so, when changing a Virtual variable, if it appears in a link, and the link is based only on Virtual variables that do not have an init expression, then the link fields and the success indication variable will be updated in all of the records as well.

Application Startup

Since V2.4, when executing a Rich Client application when the server is unavailable, the application will remain open and will not be automatically closed. If you want to close the application in such a scenario, you can add a handler in the Main Program on the Unavailable Server event and in this handler, raise the Exit System event.

Modifications by External Tools

Since the GUI layer is changed from Win32 to Windows Forms, any manipulation done on the Magic xpa forms and controls by external tools (such as get.dll) will not work.

The CtrlHWND() and WinHWND() functions now return handles to .NET objects that can be used as a reference in a .NET library using the FromHandle() function. Existing Win32 UDF/UDP dll files that reference these objects will not work anymore.

Functions
  • The following functions are no longer supported:

o CLeftMDI

o CTopMDI

o HitZOrdr

o SplitterOffset

The Conversion utility will not remove these functions from the Expression Editor. You should manually fix the syntax errors caused by this change.

  • DirDlg function – The implementation of the DirDlg function in .NET libraries does not support the title and flags parameters. The syntax is the same as the ClientDirDlg function. The Conversion utility will not update the function’s parameters.

  • The CLeft and CTop functions were replaced with the CX and CY functions (as in Rich Client). The CX and CY functions are now available in all task types.

  • In the previous Online version, some functions, such as InTrans and ViewMod, were always re-evaluated, even if there was no variable in the expression. This behavior was changed and the expression that contains functions is now re-evaluated only if the expression has a variable that was changed.

    You can reproduce the previous behavior as follows:

  1. Add a Virtual variable (with Part of dataview=No) to the program.

  2. Update the variable in the Record Prefix with False.

  3. For ViewMod() – Add a handler on an Expression event with the following condition: ViewMod(0) AND A<>ViewMod(0) [where A is the variable]

    In the handler, update the variable with ViewMod(0).

  4. For InTrans() – Add a handler on the Control Modify internal event

    In the handler, update the variable with InTrans().

    That's it. Now the variable is updated accordingly and can be used on the form.

Task Properties

The Foreground Window property is not supported. In previous versions, it appeared only when the SpecialOldZorder special flag was set to Y.

The following task modes are not supported for Online tasks: Delete, Locate, Range, Key, Sort, Files, and Options (when used as initial task mode and raised by the user). When you convert your project, if you have selected one of the above modes, the Initial mode property will be blank. You should select one of the other modes.

Internal Events

In version 1.9, when there was a Control Hit event with Propagate=No on a choice control, the clicked value was not selected and in version 2.0 it is selected.

The Clear Template, Clear Value, and Define Expression events are no longer supported.

SDI

The SDI window type does not require the program to be parallel.

Running a non-parallel SDI window means that the window will be closed when closing the parent (as in any other window).

At runtime, pressing Esc button will not close the SDI window. To close the SDI window using Esc, create a logic unit for Esc that raises a Close Window event.

SDI Deployment Mode

The SDI value was removed from the Deployment Mode environment setting.

To hide the MDI window for an SDI style deployment, set the Open Task Window task property in the Main Program to No.

Next Window Event – Shortcut Change

The Ctrl+F6 shortcut for the Next Window event must now be defined in the Runtime Keyboard Mapping file in order for the shortcut to work. This definition is done automatically by the installation. However, if you use your own Runtime Keyboard Mapping file, then to switch between windows using the Ctrl+F6 shortcut, you need to add an additional entry in the keyboard mapping file for the Next Window event with the shortcut of Ctrl+F6.

I/O Devices

The Console Media type is no longer supported. Previous projects with a Console media will be changed to Graphic printer with the Preview option set to Yes.

End-User Functionality

Some of the built-in end-user functionality that existed when running Online tasks is not supported.

This includes user range, user locate, user sort, change index, redirect files, view by key and Print Data. These properties still appear in the Task Properties dialog box, but they are not handled by the Runtime engine.

A new component was added to provide user range, user locate, user sort and Print Data with a better graphical interface. The source code of this component is also provided, so you can modify it to fit your needs.

It is not possible to open the Expression Editor while performing user range and user locate.

Status Bar

The status bar does not show the user name.


Environment Settings

The following environment settings were removed:

  • Deployment Custom Copyright (RtUserCopyright)

  • Display Copyright Messages (CopyrightMessages)

  • Display Toolbar (RtToolBarGUI) – This setting was moved into the Main Program’s form as the Display Toolbar property.

  • Image Cache Size (ImageCacheSize)

  • Check Image Change Time (ImageCacheCheckTime)

  • Indent Characters (IndentCharacters)

  • Input Date (InputDate)

  • Logo File (LogoFile)

  • MDIClientEdge

  • MDIClientImageFile – This setting was moved into the Main Program’s form as the Wallpaper property.

  • MDIClientImageStyle – This setting was moved into the Main Program’s form as the Wallpaper Style property.

  • Pulldown Menu Close Timeout (MenuCloseTimeout) – Magic xpa now uses the Windows default timeout.

Special Settings

The following special settings are not supported:

  • ShiftEditCursor

  • Special3DStyle

  • SpecialAccessPhantomByHandler

  • SpecialAsyncCOMEvents

  • SpecialBatchOptions

  • SpecialCenteredFloatingWindow

  • SpecialExitControlOnClick

  • SpecialExitNoParkable

  • SpecialFlat2DCombo

  • SpecialGUILNF

  • SpecialModalToolWindow

  • SpecialNoSplash

  • SpecialOldTestEnv

  • SpecialOldWinRunner

  • SpecialOldZorder

  • SpecialPaintFormInCreate

  • SpecialShowDBLogin

  • SpecialSingleItemRadio

  • SpecialTabControl

  • SpecialTableComputePlacement

Reference
Attachment 
Attachment