4D v16.3Interação entre componentes e bancos de dados locais |
||
|
4D v16.3
Interação entre componentes e bancos de dados locais
Interação entre componentes e bancos de dados locais
Quando um componente é instalado em um banco local, seu nome aparece na Página Métodos do Explorador do banco local, no tema Métodos componente. Os métodos projeto compartilhados são listados como listas hierárquicas e, se o componente é interpretado, seu conteúdo é mostrado na área de pré-vizualização.
Certos tipos de objetos definidos por um componente se desenvolvem em um espaço de execução próprio, o que elimina as possibilidades de conflitos com os objetos existentes da base local e com outros componentes. Estes objetos se chamam “não compartilhados” ou “divididos.” Por exemplo, as variáveis estão divididas, o que significa que una variável <>Minhavar de tipo Inteiro longo criada e manipulada por um componente pode coexistir com uma variável <>Minhavar variável de tipo Texto criada e utilizada pelo banco local (ou por outro componente). Outros objetos compartilham o mesmo espaço de execução entre a base local e os componentes. O emprego destes objetos requer mais precauções, mas não permite à base local e aos componentes se comunicarem mutuamente. Estes objetos se chamam “compartilhados” ou “não-divididos.” Por exemplo, os conjuntos são não divididos, o que significa que se um componente cria o conjunto meuConjunto, este será apagado se a base local executar a instrução CLEAR SET(mySet) Os objetos não compartidos (particionados) entre os componentes e os bancos locais são os seguintes:
Os objetos compartilhados (não divididos) são os seguintes:
Todos os métodos projeto de uma base matriz se incluem por definição no componente (o banco é o componente), o que significa que podem ser chamados e executados pelo componente. Por outro lado, conseqüentemente estes métodos de projeto não serão visíveis, nem podem ser chamados pela base local. Na base matriz, você deve designar explicitamente os métodos que quer compartilhar com a base local. Estes métodos de projeto serão visíveis na Página Métodos do Explorador e podem chamar-se no código do banco local (mas não podem ser modificados no editor de métodos do banco local). Estes métodos constituem os pontos de entrada no componente.
Esta configuração é efetuada por meio da propriedade Compartilhado por componentes e banco local na caixa de diálogo de propriedades dos métodos: Também é possível aplicar esta propriedade aos diferentes métodos por vez por meio da caixa de diálogo de atributos globais (acessível desde o menu contextual do Explorador), ver Alteração global de atributos de métodos).O efeito desta opção está definido pelo contexto de utilização da base: se a base é utilizada como um componente, o método será acessível na base local e visível no Explorador. Se a base é uma base local, o método será utilizável pelos componentes. Pode compartir os formulários do banco matriz e usá-los como subformulários no banco local. Do lado do componente (banco matriz), só os subformulários projeto podem ser especificados como subformulários publicados.
Do lado do banco principal, é imperativo que os subformulários provenientes de componentes sejam utilizados em modo página: no editor de formulários, quando o objeto subformulário se seleciona no formulário pai, deselecione a opção Subformulário listado no tema "Subformulário" da Lista de Propriedades. Depois escolha <Nenhum> no menu "Tabela". Os formulários publicados pelos componentes são listados no menu "Formulário detalhado". Seu nome é seguido pelo do componente entre parênteses. Pode desmarcar desta lista o formulário a utilizar na lista "Formulário detalhado". Uma nova instância do objeto selecionado é criado imediatamente no formulário. Os componentes e os bancos locais não compartilham as variáveis locais processo ou interprocesso. A única forma de aceder às variáveis do componente desde a base local e vice-versa é utilizando ponteiros. Exemplo utilizando um array:
Exemplos utilizando variáveis: C_TEXT(minhavariavel) O uso de ponteiros para permitir a comunicação dos componentes e a base local requer que se tenham em conta as seguintes especificações:
Ainda que os componentes não possam utilizar tabelas, os seguintes comandos podem ser chamados dentro de um componente: DEFAULT TABLE Efetivamente, estes comandos são úteis quando um componente deve utilizar tabelas da base local. Neste caso os ponteiros permitirão à base local e ao componente comunicar-se entre si. Por exemplo, este é um método que pode ser chamado desde um componente: C_LONGINT($1) //Número de tabela na base local Exceto pelos Comandos não utilizáveis, um componente pode utilizar todo comando da linguagem 4D. Quando se chamam os comandos desde um componente, são executados no contexto do componente, exceto pelo comando EXECUTE METHOD que utiliza o contexto do método especificado pelo comando. Note também que os comandos de leitura do tema “Usuário e Grupos” podem ser utilizados desde um componente, mas lerão os usuários e grupos da base local (um componente não tem seus próprios usuários e grupos). Os comandos SET DATABASE PARAMETER e Get database parameter são a exceção a este princípios: seu alcance é global à base. Quando estes comandos são chamados desde um componente, são aplicados à base local. O comando COMPONENT LIST permite conhecer a lista dos componentes carregados pelo banco local. Quando você utiliza componentes não compilados, seu código aparece no depurador padrão da base local.
|
PROPRIEDADES
Produto: 4D
HISTÓRIA
ARTICLE USAGE
Manual de Desenho 4D ( 4D v16) |