Subject Restructure minor problems and some requests
Author mmenaz
Nothing serious but...
a) "OK" and "Cancel" buttons should be on the right side of the window, not left.
b) If you move an item to the top or the bottom of the list using the "go to top" and "go to bottom" button, the item looses focus
c) if you have item 1...9 and hide 2,3,4,5, if you then take the first item and click the down arrow to move it down, you have to click 6 times to have it move to the second position. It's like the code is stepping through the list without jumping the hidden (so not more present) elements of the visible columns.
d) if I resize full screen the window, then move the vertical separator right to be centred, and then revert back the window to the original size, the vertical separator is not put in a proportional position, it's full right (hiding the "visible fields" panel) (btw, are you sure you need a resizable window?)
e) I HATE flat buttons, they break one of the basic interface design principles, so I always set the bar Flat to false. Unfortunately, your window ignores this setup... ;)

Request of improvements:
"Restructure" is a too generic name... better would be "GridRestructure" or something similar...

If I hide a column, why not automatically select the following item? If I want to hide 3 sequent column, I have to locate the remaining every time, and it's not easy.

When the window pops up, it should have the first column of the visible fields selected

You are using buttons of type TBitBtn, while the ordering window uses Tbutton. I do prefer and always use TBitBtn with glymps, but you or Jason should change to have uniformity (btw, Jason, if you are reading, why not set focus to the current item of the ordering window, instead of on the OK button? Since OK can be pressed with Enter, you could change the current ordering column using only keyboard and in a snap, instead of using the mouse or tab until you get the list).

What about having some more property to customize? Like colors... add a PageControl... but ask Jason first. What I would like to have, and is a general consideration, is a component that can save forms (I mean, components, grids, etc.) state to a blob field of a table with form_name+user_id fields, so every time a user reopens the form, the values he used the last time are presented back (very useful for forms asking parameters...). I will work on that in the future, since adding memory to a program is one of the better thing you can do to your users (anyone here has ideas to give me about that? Already done code? Requests?). In this regards customizing grid in more details can be interesting.

Even if you, as you stated, are not an artist I like the icon ;)
I do think you have provided a very good code, I like it. What I wrote is just because only good work can be even better ;)
Thanks a lot
Marco Menardi