I was going to give up on this but your answers were so good I gave your suggestions one more attempt. When I add the field to the query object, it adds them "along side" of the FieldDefs array I already had. So I didn't understand the difference between the fields in the FieldDefs property and the ones using your method. But, much more importantly, just after I do that, if I click on anything in the object inspector I get access violations and I have to abort the program. I'm using version 1.8.2 under Ubuntu 18.04.
I took a screen shot of my project after adding the fields, showing both sets of field definitions in both places. Unfortunately, it won't compress small enough to post. Either way, I'm done now.