Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los componentes suelen requerir cierta funcionalidad del contenedor y no funcionarán con un contenedor que no proporcione la compatibilidad. La interfaz de usuario debe filtrar los componentes que requieren funcionalidad que el contenedor no admite. Para ello, los componentes se pueden clasificar por la funcionalidad de contenedor necesaria.
Un ejemplo de componentes que requieren funcionalidad del contenedor y que no funcionan en contenedores que no admiten esa funcionalidad son controles OLE de marco simples. La clasificación por funcionalidades de contenedor se realiza mediante una clave del Registro adicional dentro de la clave 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...}
Como se muestra en este ejemplo, un componente puede pertenecer a categorías de componentes que indican la funcionalidad admitida, así como a las categorías de componentes que indican la funcionalidad necesaria.
En el ejemplo siguiente, el control de botón es un control OLE genérico que no admite ninguna funcionalidad adicional. Funcionará en cualquier contenedor de control OLE.
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories\{...CATID_Control...}
Compare el ejemplo anterior con el siguiente ejemplo en el que MyDBControl puede usar el enlace de datos de Visual Basic si el contenedor lo admite. Sin embargo, se ha definido para que funcione en contenedores que no admitan el enlace de datos de Visual Basic (quizás mediante una API de base de datos diferente):
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...}
El control GroupBox es un control de marco simple. Se basa en el contenedor que implementa la interfaz de ISimpleFrameSite y solo funcionará correctamente en estos contenedores:
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 contenedor que admita controles enlazados a datos de Visual Basic, pero que no admita controles de marco simples especificaría CATID_Control y CATID_VBDatabound a la interfaz de usuario del control de inserción. La lista de controles mostrados al usuario contendrá los CLSID_Button y CLSID_MyDBControl. CLSID_GroupBox no se mostrará.
Temas relacionados