The entire window is a big todo.
As for remembering sizes, look at the stackwindow (<install>/debugger/callstastackdlg.pas) => it has code to remember column widths.
This can be reused.
Also, I think that the current choices: hex/text/.... should be display not storage.
I.e. the text should always be stored as it is (stream of bytes), without the entire processing currently done [1].
Choosing one of the displays, should then display all of it in the chosen format.
[1] The processing would still be done, when assigning storage to the Edit/Display-component.
The long term idea is to use SynEdit (and/or some terminal emulator, for escape sequences)
SynEdit now has word-wrap (beta). So that could also help.
It is possible (but not yet done) to add a hex-display-view SynEdit. Then that would be covered too (but not yet).
It may also be possible to add a "utf8 correction" layer.
IMHO, the window should also have tabs, so you can have one tab, where the entire window is filled with the output (no space allocated for buttons / maybe a context menu to hide the tabs)
So anyone who wants to give that a go => come forward. (or turn around and take a few steps back, then turn around again)