The only time I care about triggering program changes from a midi controller is in a live situation, and the software I use for live performance is what is handling all of the preset changes - in other words it is that VST HOST software that is changing the loaded combination of whatever layers and whatnot are saved as one of ITS presets.
So, for creating preset 10, I would go into whatever individual VST instruments I wanted to be part of that preset and manually change each synth's preset to be what I wanted, then use the host software to take a snapshot of that whole configuration, into preset 10, and do the same sort of thing for preset 11, and so on.
Then, during my performance, hitting preset 10 on my midi controller would pull up the VST hosting software's saved settings for each and every synth I had not muted, along with the saved settings on each.
SOOOOOO - because I CAN do the above, it MUST then be possible for every one of those synths to respond to program changes, which then means you should be able to do it in Sonar. How else would loading a Sonar project result in the proper presets all getting loaded in the first place? Sonar had to have a way of telling Kontakt to load the correct instrument on the right midi channel, etc.....
I never really thought about it much, because as I initially indicated, I only really worry about program changes when performing live, using VST hosting software (Brainspawn's Forte).
Bob Bone