Posted: 22 Mar 2018 11:47 EDT Last activity: 18 Apr 2018 8:44 EDT
Flow/Table Layout Panels break when debugging and fail to save
I am having issues working with Flow Layout Panels and Table Layout Panels in my project. Here are some details about my setup:
Currently running version 8.0.1080.0 of PEGA
Working in a PEGA Windows Form project on Visual Studio
Running Windows 7 Professional 64-bit (6.1, Build 7601)
The project I'm working on requires me to use a WebBrowser control. While the user is interacting with the webpage embedded in the UI, the WebBrowser control will grow and shrink depending on what is currently visible on the webpage (we prefer not to use a scrollbar for this situation). When the WebBrowser control adjusts its size, I would like to adjust the Y-axis position of the additional UI controls located below the WebBrowser control to reflect the size of the WebBrowser control. For example, when the WebBrowser control grows from its minimum size to its maximum size, I would like my UI controls to be "pushed down" to reflect the new size of the WebBrowser control. When the WebBrowser control returns to its minimum size from its maximum size, I would like my UI controls to be "pushed up" to reflect the updated size of the WebBrowser control. The UI controls should be "pushed up and down" to reflect any size values in between these two extremes.
I currently have one Table Layout Panel with 2 columns containing the WebBrowser control in one column and a button in the second column with the remaining UI controls located in 3 additional rows spanning over the two columns. In the Table Layout Panel properties, I have entered in the desired column and row position for each control on the UI and docked each one. I have also defined the column/row Size Type styles for my needs (AutoSize, and Percent values).
Now that there is some background information about my setup and the intended use of Flow/Table Layout Panels, allow me to explain the issue:
When I debug my project, none of the properties I entered validate, meaning when my UI launches everything is now "jumbled". For example, my WebBrowser control and button should be in Row 1 and Column 1 and 2 respectively. When the UI launches, these controls are now in random rows and columns as well as the other controls being in random places. Columns are now a fraction of their original width and rows are pretty much non-visible. When I stop debugging, my original changes are still there. Debugging again does not provide different results. So I then re-create the Table Layout Panel as intended, save without debugging, and close the solution and restart Visual Studio. When I open my PEGA Windows Form project, the Table Layout Panel is jumbled exactly how it is when I began debugging. So for some reason, my changes are not being saved and PEGA is confused about something. I have a co-worker who does not have the PEGA plugin for his Visual Studio, and we use the same version of Visual Studio, he just does not have the PEGA plugin. When he creates a Windows form and recreates the Table Layout Panel how I intended, he can debug, save, and restart his Visual Studio and everything works as expected.
If anybody has any advice on this issue or is experiencing something similar, please feel to reach out because my team and I are stuck on this! Thanks a lot in advance!
Some complex controls are not fully supported inside Windows Forms created inside of Pega Robotics studio. For these more complex controls, I've found that setting these properties at Runtime (i.e. in an automation on project startup) will actually allow them to work. Another suggestion (since you are using Visual Studio already) would be to create your UI as a component to be instantiated inside of Pega Robotics Studio.
The issue with these controls as Thomas indicated is that they do not serialize properly. So when they are deserialized they are missing data or it is not set properly. If you set those properties at Runtime as suggested, there shouldn't be a problem. Another control that experiences this same behavior is a DataGridView. Column settings for the DataGridView can be applied at Runtime and should not be applied using the designer.