Categorizzazione in base alle funzionalità del contenitore

I componenti spesso richiedono determinate funzionalità dal contenitore e non funzioneranno con un contenitore che non fornisce il supporto. L'interfaccia utente deve filtrare i componenti che richiedono funzionalità che il contenitore non supporta. A tale scopo, i componenti possono essere classificati in base alla funzionalità del contenitore necessaria.

Un esempio di componenti che richiedono funzionalità dal contenitore e non funzionano nei contenitori che non supportano tale funzionalità sono semplici controlli OLE frame. La categorizzazione in base alle funzionalità del contenitore viene eseguita da una chiave del Registro di sistema aggiuntiva all'interno della chiave CLSID del componente:

;The CLSID for "Simple Frame Control" is {123456FF-ABCD-4321-0101-00000000000C}HKEY_CASSES_ROOT\CLSID\{12346FF-ABCD-4321-0101-00000000000C}\Implemented Categories
;The CATID for "Control" is {40FC6ED4-2438-11cf-A3DB-080036F12502} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{40FC6ED4-2438-11cf-A3DB-080036F12502}
;The CATID for simple frame controls is {...CATID_SimpleFrameControl...} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{...CATID_SimpleFrameControl...}
HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Required Categories\{...CATID_SimpleFrameControl...}
 

Come illustrato in questo esempio, un componente può appartenere a categorie di componenti che indicano funzionalità supportate, nonché categorie di componenti che indicano le funzionalità necessarie.

Nell'esempio seguente il controllo pulsante è un controllo OLE generico che non supporta funzionalità aggiuntive. Funzionerà in qualsiasi contenitore di controlli OLE.

HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories\{...CATID_Control...}
 

Confrontare l'esempio precedente con l'esempio successivo in cui MyDBControl può usare il data binding di Visual Basic se il contenitore lo supporta. Tuttavia, è stato definito in modo che funzioni nei contenitori che non supportano il data binding di Visual Basic (ad esempio da un'API di database diversa):

HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_VBDatabound...}
 

Il controllo GroupBox è un controllo frame semplice. Si basa sul contenitore che implementa l'interfaccia ISimpleFrameSite e funziona correttamente solo in tali contenitori:

HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_SimpleFrame...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Required Categories\{...CATID_SimpleFrame...}
 

Un contenitore che supporta i controlli associati a dati di Visual Basic, ma non supporta controlli frame semplici, specifica CATID_Control e CATID_VBDatabound all'interfaccia utente del controllo di inserimento. L'elenco dei controlli visualizzati all'utente conterrà le CLSID_Button e le CLSID_MyDBControl. CLSID_GroupBox non verrà visualizzato.

Associazione di icone a una categoria

Categorizzazione in base alle funzionalità dei componenti

Classi e associazioni predefinite

Definizione delle categorie di componenti

Gestione categorie componenti