Controle ActiveX Delphi Deep Exploration-Database-Clear
A poderosa função de desenvolvimento de banco de dados é sem dúvida a joia da coroa do Delphi. Pelo menos 80% das pessoas usam Delphi para desenvolver programas de banco de dados todos os dias. Com base no controle de banco de dados VCL básico, bem como nos poderosos controles de limpeza de banco de dados de terceiros fornecidos por empresas como Dev ExPRess e Woll2Woll, não é exagero dizer que precisamos apenas definir as propriedades e arrastar o mouse um algumas vezes para concluir o desenvolvimento do programa muito rapidamente. Como a função de banco de dados do Delphi é muito poderosa, muitas pessoas ignoram o fato de que o ActiveX também pode fornecer vinculação flexível de banco de dados. Infelizmente, nenhum dos vários controles ActiveX de terceiros fornecidos pelo próprio Delphi é um controle de banco de dados, o que indiretamente levou a um mal-entendido. , fazendo com que muitas pessoas acreditem erroneamente que o Delphi não oferece suporte a controles ActiveX com dados claros (inclusive eu, há muito tempo). É claro que esta é uma visão errada. Usando o controle ActiveX de limpeza de dados no Delphi No exemplo a seguir, usaremos o controle Microsoft Calendar 9.0 instalado no sistema com o Office 2000 para demonstração. Ele é um controle de limpeza de dados. Selecione Componente | Importar controle ActiveX, selecione Microsoft Calendar 9.0 (veja a Figura 1.12 abaixo), altere o nome da classe de TCalendar para TAXCalendar para evitar conflito com o controle original de mesmo nome no sistema e clique no botão Instalar para instalar este controlar.
Crie um novo programa e coloque um controle TAXCalendar no formulário. Coloque outro controle DataSource e Table. Defina o conjunto de dados de DataSource como Table1, em seguida, defina a propriedade DataBaseName de Table1 como DBDEMOS, a propriedade TableName como EMPLOYEE.DB e, finalmente, defina a propriedade Table1.Active como True. Em seguida, é hora de vincular o banco de dados. Observe que o TAXCalendar introduzido possui duas propriedades, DataSource e DataBindings, que são diferentes do controle ActiveX geral. Isso ocorre porque o Assistente de Importação de ActiveX primeiro determina se é um controle amigável ao banco de dados antes de introduzir. o controle ActiveX. Em caso afirmativo, use TDBOleControl como a classe base para herdar. Caso contrário, herde de TOleControl. O TDBOleControl implementa as propriedades DataBindings e DataSource. Defina a propriedade AXCalendar1.DataSource como Datasource1. Neste momento, se clicarmos com o botão direito do mouse no controle TAXCalendar no formulário, encontraremos um item de menu adicional DataBindings... no menu do botão direito (veja a Figura 1.13 abaixo).
Após clicar no item de menu, a caixa de edição do atributo de vinculação de dados será exibida (veja a Figura 1.14 abaixo). Selecione HireDate na caixa de listagem FieldName, selecione Value(12) na caixa de listagem Property Name (12 é o número Dispid de Value) e clique no botão Bind para estabelecer uma associação de dados entre o campo do banco de dados e a propriedade Value.
Por fim, coloque um controle DBGrid e DBNavigator no formulário e defina seu DataSource como DataSource1. Ao executar o programa e mover a posição atual dos dados, você pode notar que a exibição da data no ActiveX também mudará de acordo, consistente com a data de contratação no banco de dados. Conforme mostrado na Figura 1.15:
Criando controles ActiveX com limpeza de dados Embora já saibamos que o Delphi pode realmente usar controles ActiveX com limpeza de dados, surge uma nova questão. O próprio Delphi pode criar controles ActiveX com limpeza de dados? Como o Delphi fornece conversão e geração de controles ActiveX em uma etapa, muitas pessoas esperam converter os poderosos controles de banco de dados do Delphi em controles ActiveX para que ainda possam desfrutar da mesma experiência do Delphi ao desenvolver programas de banco de dados em outros ambientes de desenvolvimento que suportam ActiveX. . A mesma sensação relaxada e feliz. Mas, como mencionei na primeira parte, como o mecanismo interno do controle de limpeza de dados do Delphi é muito diferente daquele do controle de banco de dados ActiveX, o Delphi não pode simplesmente converter diretamente seu poderoso controle de banco de dados. Isso significa que não há nada que possamos fazer? claro que não! Na verdade, usando o editor da biblioteca de tipos, podemos implementar um controle ActiveX com dados claros com muita facilidade. Vamos tentar com o controle TEdit e ver como fazê-lo. Selecione o comando de menu Novo | ActiveX | Controle ActiveX para iniciar o Assistente de conversão de controle ActiveX, selecione o controle TEdit como objeto de conversão e gere a estrutura EditX ActiveX. A seguir, transformaremos a propriedade Text do TEdit para suportar a vinculação de dados. Selecione View | Type Library para visualizar a biblioteca de tipos gerada pelo Delphi, selecione a propriedade Text e depois mude para a página de propriedades Flags (veja a Figura 1.16 abaixo).
Observe que existem muitas caixas de seleção na página de propriedades Flags. Para nós, nos preocupamos apenas com as opções relacionadas à vinculação de dados. Elas são opções Vinculável, Vinculável por Exibição, Vinculável Padrão, Vinculável Imediata e Solicitar Edição. Depois de marcar uma propriedade como vinculável e vinculá-la a um campo do banco de dados, quando o usuário modificar a propriedade, o controle notificará o banco de dados de que o valor foi alterado e solicitará que o banco de dados registre o status de atualização. a atualização do registro foi bem-sucedida. A opção Bindable indica que a propriedade oferece suporte à vinculação de dados. Se a propriedade for marcada como vinculável, a propriedade notificará seu contêiner quando seu valor for alterado. Request Edit indica que a propriedade oferece suporte a mensagens de notificação OnRequestEdit, o que permite que o controle pergunte ao contêiner se o valor da propriedade pode ser modificado pelo usuário. Display Bindable significa que o contêiner pode mostrar ao usuário que esta propriedade é vinculável. Default Bindable significa que é o único atributo padrão vinculável. Para usá-lo, o atributo Bindable deve ser marcado ao mesmo tempo. Quando Vinculável Imediato estiver marcado, todas as alterações serão notificadas e os sinalizadores vinculável e Solicitar Edição precisam ser definidos. Em seguida, marcamos a propriedade Text do controle EditX como Bindable, Display Bindable, Default Bindable e Request Edit. Em seguida, clique no botão Atualizar para atualizar a biblioteca de tipos e, por fim, selecione Executar | Registrar servidor ActiveX para registrar o controle ActiveX. Ao apresentar o novo controle EditX ActiveX, você descobrirá que ele realmente implementa a função de vinculação de dados. A seguir está um diagrama 1.17 da operação de um programa EditX que usa limpeza de dados (A implementação da função de limpeza de dados ActiveX do Delphi é de fato. simples e legal, não é?