More came back to me.

Historically, part of the solution was to…
Create an additional item, more specifically a user item, overlaying each edit text item which you might disable. When you want one of the edit text items to look disabled, make sure the corresponding user item is implemented. This amounts to calling SetDItem and casting the item handle to a function pointer. The function in question should use a particular transfer mode to fill gray over top of the edit text item. Done right, this knocks out roughly half of the black pixels of the edit text item, producing the disabled look. The user item can of course remain implemented as long as the relevant function is smart enough to draw nothing when the corresponding edit text item is enabled.
Of course, in addition to striking me as clumsy, this only works acceptably on black-and-white screens and even then only solves part of the problem, the visual part. The fact that the edit text item may be in use when you decide to disable it is a separate problem, as is the fact that the user may still tab into a (visually) "disabled" edit text item. There must have been a solution for these problems as well but I can't remember what they were.