Hello @Master15!
Wouldn't setting the flex weigh be the same as setting the width? Maybe you don't need to rewrite everything but just distribute the panels' weighs to your liking.
For example, you can use the second batch of panels like this:
<ext:Panel runat="server" Frame="true" Flex="1" Title="Column 1" />
<ext:Panel runat="server" Frame="true" Flex="3" Title="Column 2" />
<ext:Panel runat="server" Frame="true" Flex="2" Title="Column 3" />
<ext:Panel runat="server" Frame="true" Flex="4" Title="Column 4" />
That would make 'Column 1' the thinnest, 'Column 3' second thinnest, 'Column 2' the second largest and 'Column 4' the largest. And box-reorderable as you want.
You can convert this in percentage if you are getting widths in percent from code behind. Just that the sum of the flexes is 100% and every individual values represents its percentual. When you have 1, 1, 1, 1, 4 is 100% and each '1' evals to '25%'.
If you have 1 2 3 4, 100% is 10, then 10, 20, 30 and 40% width columns respectively.
Let us know if this still does not do what you need and we get to the column layout which may be more complex to have working as you described.