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. The reason for this order is that in a scrolling process the detail frame is executed until the last record is processed, or the user selects to end the process. If the footer was defined after the detail frame APPX would display the header, then execute the detail frame. The footer would not execute until the end of the record frame, which means you would not see your buttons. With this order the header and footer and displayed, then the record frame is presented between the two. 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.