Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os componentes geralmente exigem determinadas funcionalidades do contêiner e não funcionarão com um contêiner que não fornece o suporte. A interface do usuário deve filtrar os componentes que exigem funcionalidade que o contêiner não suporta. Para fazer isso, os componentes podem ser categorizados pela funcionalidade de contêiner necessária.
Um exemplo de componentes que exigem funcionalidade do contêiner e não funcionam em contêineres que não suportam essa funcionalidade são controles OLE de quadro simples. A categorização por recursos de contêiner é realizada por uma chave do Registro adicional dentro da chave CLSID do 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 mostrado neste exemplo, um componente pode pertencer a categorias de componentes que indicam funcionalidade suportada, bem como a categorias de componentes que indicam a funcionalidade necessária.
No exemplo a seguir, o botão de controlo é um controle OLE genérico que não suporta nenhuma funcionalidade adicional. Ele funcionará em qualquer contêiner de controle OLE.
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories\{...CATID_Control...}
Compare o exemplo anterior com o próximo exemplo no qual o MyDBControl pode usar a vinculação de dados do Visual Basic se o contêiner oferecer suporte a ele. No entanto, ele foi definido para que ele funcione em contêineres que não oferecem suporte à vinculação de dados do Visual Basic (talvez por uma API de banco de dados 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...}
O controle GroupBox é um controle de quadro simples. Ele depende do contêiner que implementa a interfaceISimpleFrameSite doe funcionará corretamente somente nesses contêineres:
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...}
Um contêiner que oferece suporte a controles ligados a dados do Visual Basic, mas não oferece suporte a controles de quadro simples, especificaria CATID_Control e CATID_VBDatabound para a interface do usuário do controle de inserção. A lista de controles exibidos para o usuário conteria o CLSID_Button e CLSID_MyDBControl. CLSID_GroupBox não seria exibido.
Tópicos relacionados