Today's update: I've finished converting my menu arrays to dynamic, as well. That was quite a bit more work than expected, as all of my menu handling routines were static-based and had to be converted to Low()/High().
Next up, I'll be studying and implementing the concepts introduced by TRon: advanced records, and OOP in general. Eventually, I'd like to have Window be totally self-contained. Then I can do something like:
type
WindowType = record
...
end;
WindowArrayType = record
...
end;
var
OpenWindows:WindowArrayType;
MyWindowID:byte;
begin
OpenWindows.Create('My Window',MyWindowID,1,1,79,24,true);
OpenWindows[MyWindowID].AddContent(0,0,'This is my window.')
OpenWindows[MyWindowID].AddContent(0,1,'There are many windows like it.');
OpenWindows[MyWindowID.AddContent(0,2,'But this one is mine.');
OpenWindows[MyWindowID].DrawAll;
OpenWindows[MyWindowID].Destroy;
I'll probably make use of parent/child properties and other stuff I currently barely understand...
Then, when that's working:
type
MenuType = record
...
end;
var
MyMenu:MenuType;
begin
MyMenu.Create('My Menu');
MyMenu.AddItem('Something', something); //given that 'something' is a proc
MyMenu.Select(0,0); //would execute 'something'
Et cetera...but this will take some time to complete. This will all be a bit more complex than I'm used to.
Thanks to everyone, again, for all the help!
-McDoob