Notice the process has three frames instead of two. The header and footer are separate frames. If left as a single frame, buttons and such would not be able to float to the bottom of a larger client screen. The frame would adjust, but the location of the widgets on the screen would be in the same place, in relation to the upper left corner of the image, no matter the size of the screen.
The footer must also display before the detail frame. In fact, both the header and footer (Display only frames) must appear before the detail frame otherwise a compile error will occur. The placement and sizing are controlled by the negative numbers in the row position and size parameters. The header is a fixed frame starting in the first row and is 4 rows long. The -3 in the footer’s row position tells APPX that the frame should be positioned 3 rows up from the bottom of the display area and it will be 3 rows long. The detail frame is started in row 5, one row below the boxed header frame. The -4 in the size row field tells APPX the frame will end 4 rows up from the bottom of the display area, one row above where the footer starts. Run your new process with 21 rows and with 28 rows and you will see the detail adjust to the size of the client. You now have a single process that will use all the available rows, no matter what screen size your users choose.