In an attempt to make a "table" out of the UIList, I followed the example in the Help document (see below for reference).

The example is either outdated, or I am not following it correctly. When implemented as in the example, I get a runtime error about not being able to use the setdrawfunc in the form's onopen because it draws.

No problem, I thought, I would move setdrawfunc() to the form's ondraw. However, that doesn't appear to work as hoped. The list will populate as per setitems(), but without utilizing setdrawfunc(). Only when I click on an item in list, it will redraw with the setdrawfunc() when coded like this.

Now, I have "solved" the problem by moving somethings around and calling redraw() in the onopen. This, of course, is less than ideal, but not deal breaking. However, that leads me to my question -- is setdrawfunc() working as intended (and I'm doing something wrong)? Or has something changed? A quick search through the forms didn't give me any clues.

You can and should call setdrawfunc in the onopen handler. The error you mentioned is only generated when Draw.begin/nbegin is called in onopen. If you are calling redraw() in onopen (which you should not do), this will cause your custom drawing function to be called.

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by dewey</i>
<br />You can and should call setdrawfunc in the onopen handler. The error you mentioned is only generated when Draw.begin/nbegin is called in onopen. If you are calling redraw() in onopen (which you should not do), this will cause your custom drawing function to be called.
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">

Good, I am glad that I was at least thinking correctly. However, when trying to implement the simple example in the Help docs, I do still get that error when I have setdrawfunc() in the onopen. Clearly, there must be something strange going on. I've created a barebones project, where I've simply cut-and-pasted the Help doc's code.

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">quote:<hr height="1" noshade id="quote"><i>Originally posted by dewey</i>
<br />You can and should call setdrawfunc in the onopen handler. The error you mentioned is only generated when Draw.begin/nbegin is called in onopen. If you are calling redraw() in onopen (which you should not do), this will cause your custom drawing function to be called.
<hr height="1" noshade id="quote"></font id="quote"></blockquote id="quote">

I am still trying to get it to work this way. I still have the errors that my sample project (posted above) are generating, despite the Help docs (and Dewy's) statements saying that it should.

Could anyone be so kind as to tell me what is going wrong, or let me know if they are getting the same error?

This is a bug in the runtime, where it is thinking the onopen handler is still running when it asks the OS to draw the form. A workaround until I can fix/release this is to change the code to register the custom draw function and redraw the first time the form is drawn: