I have solved this problem, but wanted to post it here for discussion.
LabVIEW 7.0, Windows.
I have a cluster: Item 0 is a custom enum control, item 1 is a string control.
Under certain conditions in my program, the string field must be disabled (and grayed out), because it's not applicable.
When I did that, I found that the enum was disabled as well. Actually, it would sometimes work if I hit the up-arrow just right, but the menu would never pop up. It worked find if the string was enabled.
The string field (item 1) had a label above the left side of it. The enum (item 0) was positioned immediately above the right side of it.
So why was item 0 disabled if item 1 was? I verified that the DISABLED property was NOT getting set to disabled (it reported 0 when I read it). There were no other property nodes to item 0.
As it turns out, it seems that when the string was disabled, there was a RECTANGLE on screen which was disabled. In spite of the fact that neither the string field not its label overlapped the enum, the fact that the enum was within the string's RECTANGLE was disabling it. The fact that the enum's up-arrow extended above this rectangle is what made it work if I hit it just right (the top 1 or two pixels, i guess). I found this out by moving the enum off to the right (out from under this rectangle.
My eventual solution was to go to the typedef for this cluster and move the enum IN FRONT of the string. I did not change the cluster order, just the physical front-to-back ordering. Now it works, with the enum back where I wanted it in the first place.
I have attached a VI which demonstrates this. I tested it on LV 7.1 / OSX and it still fails. Not sure if it's a bug, or intended behavior.
Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com
Blog for (mostly LabVIEW) programmers: Tips And Tricks