mail recentemente. Note que depois que vocΠteclou...

12
1 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002 Introdução Introdução Introdução Introdução Introdução Quando vocŒ utiliza um editor de texto como o Word, por exemplo, vocŒ usufrui de inœmeras facilidades proporciona- das pelo aplicativo. Se vocŒ digitar uma palavra no início de um parÆgrafo com letra minœscula, automaticamente o Word irÆ converter a primeira letra para maiœscula. Se vocŒ digitar uma palavra com a grafia errada e esta grafia errada estiver cadastrada na sua lista de AutoCorreçªo, a palavra serÆ automaticamente corrigida. Sem falar em outros recursos como o corretor ortogrÆfico, por exemplo. Muitas destas funcionalidades, quando habilitadas, estªo em funcionamento durante a digitaçªo de qualquer texto. Mas que tal estender estas funcionalidades, de maneira que possamos criar funcionalidades inteligentes? Por exemplo, depois de digitar o nome de uma pessoa, o Word (ou outro aplicativo do Office) verifica se esta pessoa estÆ cadastrada em seus contatos do Outlook. Poderíamos ir alØm. O aplicativo do Office poderia verificar se este nome estÆ ca- dastrado em um banco de dados. Caso ele esteja, vocŒ po- deria abrir uma pÆgina Web com os detalhes desta pessoa, ou entªo enviar um e-mail para esta pessoa baseado nos dados armazenados no banco de dados em questªo. As possibilidades sªo praticamente infinitas. O Office XP jÆ possui esta funcionalidade. Chamam-se Mar- cas Inteligentes (Smart Tags). Elas estªo presentes no Excel, Word, Outlook XP (quando o Word estÆ habilitado com o editor de e-mail) e no Internet Explorer (desde que vocŒ te- nha instalado o Excel ou o Word XP em seu computador). A sua principal funcionalidade Ø atribuir informaçªo contextual aos textos que sªo digitados nos aplicativos do Office XP mencionados anteriormente. Quando vocŒ digita o nome de uma pessoa, e esta pessoa estÆ em sua lista de contatos do Outlook, uma Marca Inteligente entra em açªo, e vocŒ pode marcar uma reuniªo ou enviar um e-mail para essa pessoa de dentro do próprio aplicativo cliente da Marca Inteligente. Neste artigo veremos como utilizar as Marcas Inteligentes e como criar Marcas Inteligentes específicas para as suas ne- cessidades. Me acompanhe nas próximas pÆginas e conhe- ça um pouco desta nova funcionalidade do Office. Marcas Inteligentes em ação Marcas Inteligentes em ação Marcas Inteligentes em ação Marcas Inteligentes em ação Marcas Inteligentes em ação Primeiro veremos como utilizar uma Marca Inteligente no Excel. Abra o Excel XP. Acesse o item de menu Ferramentas Macro Segurança (figura 1). Verifique se o nível de segurança estÆ com o valor mØdio. Se nªo estiver, atribua este valor e reinicie o Excel. Depois acesse o item de menu Ferramentas Opçıes de AutoCorreçªo. Selecione a aba Marcas Inteligentes (Smart Tags). Verifique se o item Rotular dados com Marcas Inteli- gentes estÆ marcado. Verifique tambØm na lista de identificadores, se o item DestinatÆrios de e-mails recentes do Outlook estÆ marcado (figura 2). Figura 1 - O nível de segurança do Excel MARCO ANTONIO JULIANI * Artigo para Office XP, Visual Basic 6.0 e XML JANEIRO • FEVEREIRO DE 2002 MARCASINTELIGENTES MARCASINTELIGENTES MARCASINTELIGENTES MARCASINTELIGENTES MARCASINTELIGENTES.EXE .EXE .EXE .EXE .EXE (OFFICE XP, VISUAL BASIC 6.0 E XML ) DISPONÍVEL PARA DOWNLOAD EM WWW.FORUMACCESS.COM.BR Responda a um questionÆrio sobre Marcas Inteligentes e concorra a camisetas da Microsoft. Acesse: www.forumaccess.com.br/ marcasinteligentes

Transcript of mail recentemente. Note que depois que vocΠteclou...

Page 1: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

11111www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

IntroduçãoIntroduçãoIntroduçãoIntroduçãoIntroduçãoQuando você utiliza um editor de texto como o Word, porexemplo, você usufrui de inúmeras facilidades proporciona-das pelo aplicativo. Se você digitar uma palavra no início deum parágrafo com letra minúscula, automaticamente o Wordirá converter a primeira letra para maiúscula. Se você digitaruma palavra com a grafia errada e esta grafia errada estivercadastrada na sua lista de AutoCorreção, a palavra seráautomaticamente corrigida. Sem falar em outros recursoscomo o corretor ortográfico, por exemplo.Muitas destas funcionalidades, quando habilitadas, estão emfuncionamento durante a digitação de qualquer texto.Mas que tal estender estas funcionalidades, de maneira quepossamos criar funcionalidades inteligentes? Por exemplo,depois de digitar o nome de uma pessoa, o Word (ou outroaplicativo do Office) verifica se esta pessoa está cadastradaem seus contatos do Outlook. Poderíamos ir além. Oaplicativo do Office poderia verificar se este nome está ca-dastrado em um banco de dados. Caso ele esteja, você po-deria abrir uma página Web com os detalhes desta pessoa,ou então enviar um e-mail para esta pessoa baseado nosdados armazenados no banco de dados em questão. Aspossibilidades são praticamente infinitas.O Office XP já possui esta funcionalidade. Chamam-se Mar-cas Inteligentes (Smart Tags). Elas estão presentes no Excel,Word, Outlook XP (quando o Word está habilitado com oeditor de e-mail) e no Internet Explorer (desde que você te-nha instalado o Excel ou o Word XP em seu computador). Asua principal funcionalidade é atribuir informação contextualaos textos que são digitados nos aplicativos do Office XPmencionados anteriormente. Quando você digita o nome deuma pessoa, e esta pessoa está em sua lista de contatos doOutlook, uma Marca Inteligente entra em ação, e você podemarcar uma reunião ou enviar um e-mail para essa pessoade dentro do próprio aplicativo cliente da Marca Inteligente.

Neste artigo veremos como utilizar as Marcas Inteligentes ecomo criar Marcas Inteligentes específicas para as suas ne-cessidades. Me acompanhe nas próximas páginas e conhe-ça um pouco desta nova funcionalidade do Office.

Marcas Inteligentes em açãoMarcas Inteligentes em açãoMarcas Inteligentes em açãoMarcas Inteligentes em açãoMarcas Inteligentes em açãoPrimeiro veremos como utilizar uma Marca Inteligente noExcel. Abra o Excel XP. Acesse o item de menu Ferramentas⇒ Macro ⇒ Segurança (figura 1). Verifique se o nível desegurança está com o valor médio. Se não estiver, atribuaeste valor e reinicie o Excel.Depois acesse o item de menu Ferramentas ⇒ Opções deAutoCorreção. Selecione a aba Marcas Inteligentes (SmartTags). Verifique se o item �Rotular dados com Marcas Inteli-gentes� está marcado. Verifique também na lista deidentificadores, se o item �Destinatários de e-mails recentesdo Outlook� está marcado (figura 2).

Figura 1 - O nível de segurança do Excel

MARCO ANTONIO JULIANI *

Artigo para Office XP, Visual Basic 6.0 e XML

JANEIRO • FEVEREIRO DE 2002

MARCASINTELIGENTESMARCASINTELIGENTESMARCASINTELIGENTESMARCASINTELIGENTESMARCASINTELIGENTES.EXE.EXE.EXE.EXE.EXE(OFFICE XP, VISUAL BASIC 6.0 E XML )DISPONÍVEL PARA DOWNLOAD EMWWW.FORUMACCESS.COM.BR

Responda a um questionário sobreMarcas Inteligentes e concorra acamisetas da Microsoft. Acesse:

www.forumaccess.com.br/marcasinteligentes

Page 2: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

22222 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

Digite o nome de uma pessoa para quem você enviou um e-mail recentemente. Note que depois que você teclou <ENTER>,um pequeno triângulo roxo apareceu no canto inferior direitoda célula onde você acabou de digitar (figura 3).

Ao passar o mouse sobre esta célula será apresentado umícone que indica a presença de uma Marca Inteligente ( ).Clique sobre este ícone (figura 4).

Perceba que, entre outras opções, você pode enviar um e-mail ou agendar uma reunião com a pessoa identificadapela Marca Inteligente.Para utilizar uma Marca Inteligente no Word o procedimentoé o mesmo que foi adotado no Excel. Você irá notar apenasuma diferença, existem mais opções disponíveis do que noExcel (figura 5). Mas elas só irão funcionar se o idioma pa-drão for o inglês. Para alterar o idioma basta acessar o itemde menu Ferramentas ⇒ Idioma.

Depois de digitar o nome de uma pessoa para quem vocêenviou um e-mail recentemente, este nome será sublinhadopor uma linha pontilhada roxa (figura 6).

Figura 2 - Aba marcas inteligentes das opções deAutoCorreção

Figura 3 - Uma Marca Inteligente em ação

Figura 4 - Lista de opções apresentadas pelaMarca Inteligente

Figura 5 - Marcas Inteligentes disponíveis no Word

Figura 6 - Uma palavra reconhecida por umaMarca Inteligente no Word

Page 3: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

33333www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

Criando Marcas Inteligentes personalizadasCriando Marcas Inteligentes personalizadasCriando Marcas Inteligentes personalizadasCriando Marcas Inteligentes personalizadasCriando Marcas Inteligentes personalizadasAgora que você viu como funcionam as Marcas Inteligentes, vocêdever estar se perguntando: como eu crio minha própria MarcaInteligente?Existem duas maneiras de fazê-lo. Uma é através de arquivos XML eoutra é através da criação de aplicações baseadas em COM(Component Object Model), criadas no Visual Basic ou no C++.Você deverá utilizar arquivos XML quando desejar criar Marcas Inte-ligentes mais simples. Por exemplo, quando quiser criar uma MarcaInteligente que verifique uma lista de palavras estáticas.Quando você quiser criar uma Marca Inteligente mais complexa, queverifique uma lista de palavras armazenadas em um banco de dados,por exemplo, você deverá criar uma DLL de Marca Inteligente.

Criando uma Marca Inteligente simples através de XMLCriando uma Marca Inteligente simples através de XMLCriando uma Marca Inteligente simples através de XMLCriando uma Marca Inteligente simples através de XMLCriando uma Marca Inteligente simples através de XMLPara criar uma Marca Inteligente através de XML você precisaráapenas do Notepad do Windows para digitar o arquivo XML, alémde possuir um dos aplicativos do Office XP que suporte MarcasInteligentes instaladas no seu computador.Abra o Notepad e insira o código XML apresentado no quadro 1.

<FL:smarttaglist xmlns:FL=�urn:schemas-microsoft-Äcom:smarttags:list�><FL:name>MSDN - Desenvolvedor Office</FL:name><FL:lcid>1033,1046</FL:lcid><FL:description>Lista de termos relacionados para o desenvolvedorÄOffice no MSDN.</FL:description><FL:moreinfourl>http://msdn.microsoft.com/office</FL:moreinfourl><FL:smarttag type=�urn:schemas-microsoft-Äcom:smarttags#msdnterms�> <FL:caption>MSDN - Desenvolvedor Office - Sites Relacionados</ÄFL:caption> <FL:terms> <FL:termlist>access, developer, excel, msdn, office, Äoutlook, powerpoint, vba, visual, word, xp</FL:termlist> </FL:terms> <FL:actions> <FL:action id=�ODCWebSite�> <FL:caption>Site do MSDN para o desenvolvedor Office</ÄFL:caption> <FL:url>http://msdn.microsoft.com/office</FL:url> </FL:action> <FL:action id=�MSDNWebSite�> <FL:caption>Site do MSDN</FL:caption> <FL:url>http://msdn.microsoft.com</FL:url> </FL:action> <FL:action id=�OfficeWebSite�> <FL:caption>Site do Office</FL:caption> <FL:url>http://www.microsoft.com/office</FL:url> </FL:action> </FL:actions></FL:smarttag></FL:smarttaglist>

Quadro 1 - Código do arquivo XML

Salve este arquivo como: nome SitesOffice.xml, na pasta\Program Files\Common Files\Microsoft Shared\SmartTag\Lists do seu computador.

Importante: o XML é case-sensitive. Digite o código XML doquadro 1, respeitando as letras maiúsculas e minúsculas.

Abra o Excel. Acesse o item de menu Ferramentas ⇒ Op-ções de AutoCorreção e selecione a aba Marcas Inteligentes(figura 7). Você pode notar a presença da Marca Inteligente�MSDN � Desenvolvedor Office�.

Digite vba e tecle <ENTER>. Ao passar com o mouse so-bre a célula onde foi digitado vba, o ícone indicando queexiste uma Marca Inteligente irá aparecer. Ao clicar sobre omesmo, será apresentada uma lista de opções de sites re-lacionados (figura 8). Ao clicar sobre um deles o InternetExplorer será aberto. Experimente.

Figura 7 - A Marca Inteligente “MSDN – DesenvolvedorOffice” na lista de marcas inteligentes do Excel

Figura 8 - A Marca Inteligente “MSDN – DesenvolvedorOffice” em ação

Page 4: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

44444 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

Entendendo a Marca Inteligente “MSDN –Entendendo a Marca Inteligente “MSDN –Entendendo a Marca Inteligente “MSDN –Entendendo a Marca Inteligente “MSDN –Entendendo a Marca Inteligente “MSDN –Desenvolvedor Office” passoDesenvolvedor Office” passoDesenvolvedor Office” passoDesenvolvedor Office” passoDesenvolvedor Office” passo-a-passo-a-passo-a-passo-a-passo-a-passoA seguir iremos analisar o XML utilizado para criar a MarcaInteligente �MSDN � Desenvolvedor Office�. Estou partindodo pressuposto que você já está familiarizado com a criaçãode arquivos XML. Caso você deseje maiores informações so-bre XML, sugiro que você acesse o MSDN Online XMLDeveloper Center (http://msdn.microsoft.com/xml/default.asp).Você encontrará alguns artigos sobre XML nas edições ante-riores da revista Fórum Access. Veja:XML mais uma sigla? ou algo útil? - Revista 35XML - Um caso prático - Revista 38Criando o seu primeiro XML - Revista 41

PPPPPassoassoassoassoasso-a-passo-a-passo-a-passo-a-passo-a-passo1. Inicialmente definimos o elemento de nível superior, neste caso a

smarttaglist, e atribuímos o Alias FL para o mesmo. Todas astags que se seguirem deverão iniciar com este Alias.

<FL:smarttaglist xmlns:FL=�urn:schemas-microsoft-

Äcom:smarttags:list�>

2. A seguir definimos o elemento name. Trata-se de um nomeamigável para a Marca Inteligente. Este elemento é requerido.

<FL:name>MSDN - Desenvolvedor Office</FL:name>

3. O lcid é uma lista de valores separados por vírgulaque indica os �LocaleIDs� ou identificadores de lin-guagem, na qual a Marca Inteligente será reconheci-da. O código 1033 é o que corresponde ao Excel e ocódigo 1046, ao Word.

<FL:lcid>1033,1046</FL:lcid>

4. No elemento description podemos atribuir uma string lon-ga que descreve a Marca Inteligente.

<FL:description>Lista de termos relacionados para o desenvolvedor

ÄOffice no MSDN.</FL:description>

5. O elemento moreinfourl identifica uma URL onde o usuá-rio pode ir para obter maiores informações.

<FL:moreinfourl>http://msdn.microsoft.com/office</FL:moreinfourl>

6. O elemento smarttag é a definição de um tipo de marcainteligente. Um tipo de Marca Inteligente é definido por

um único namespace, especificado como namespaceURI#tagname. Este elemento é requerido.

<FL:smarttag type=�urn:schemas-microsoft-

Äcom:smarttags#msdnterms�>

7. O elemento caption representa um subtítulo de uma Mar-ca Inteligente. Os elementos da lista apresentada na figu-ra 8 (MSDN � Desenvolvedor Office, Sites do MSDN parao desenvolvedor Office, Site do MSDN e Site do Office)são atribuídos através do elemento caption.

<FL:caption>MSDN - Desenvolvedor Office - Sites Relacionados</

ÄFL:caption>

8. A seguir definimos o elemento term e a lista termlist.

<FL:terms>

<FL:termlist>access, developer, excel, msdn, office,

outlook, powerpoint, vba, visual, word, xp</FL:termlist>

</FL:terms>

Um elemento term é definido com uma coleção de tag terms.Dentro desta coleção podem ser inseridos elementos do tipotermfile ou termlist. Um termfile é um link para um arquivobinário, e está reservado para uso futuro. Já um termlist éuma lista separada por vírgula de termos a serem reconheci-dos. Este elemento é requerido.Você só pode ter um termlist ou termfile por arquivo XML. Sevocê inserir os dois, apenas o termlist será utilizado.

9. O elemento action é uma coleção de elementos actionsque representam uma ação a ser executada quandovocê seleciona um dos elementos da lista de uma MarcaInteligente.

<FL:actions>

<FL:action id=�ODCWebSite�>

<FL:caption>Site do MSDN para o desenvolvedor Office</

ÄFL:caption>

<FL:url>http://msdn.microsoft.com/office</FL:url>

</FL:action>

<FL:action id=�MSDNWebSite�>

<FL:caption>Site do MSDN</FL:caption>

<FL:url>http://msdn.microsoft.com</FL:url>

</FL:action>

<FL:action id=�OfficeWebSite�>

<FL:caption>Site do Office</FL:caption>

Page 5: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

55555www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

<FL:url>http://www.microsoft.com/office</FL:url>

</FL:action>

</FL:actions>

Através do elemento action você pode imputar um atributoid. Um atributo id é um identificador único de um elementoaction do tipo string. Este elemento é requerido.O elemento caption já foi explicado no passo 7.O elemento url indica a URL que será ativada quando umaação for selecionada.

10. Finalmente fechamos as tags smarttag e smarttaglist.

</FL:smarttag>

</FL:smarttaglist>

Criando uma DLL de Marca InteligenteCriando uma DLL de Marca InteligenteCriando uma DLL de Marca InteligenteCriando uma DLL de Marca InteligenteCriando uma DLL de Marca InteligenteComo já mencionei anteriormente, os arquivos XML não supor-tam Marcas Inteligentes mais complexas. Quando você preci-sar criar uma Marca Inteligente que acesse um banco de da-dos, por exemplo, terá de criar uma DLL para implementar isso.A seguir, criaremos uma Marca Inteligente que reconheceráos funcionários que estão armazenados em um banco dedados. Ao digitar o nome de um desses funcionários, vocêpode abrir uma página ASP que lhe mostrará os detalhes dofuncionário, ou lhe enviará um e-mail. Para criar uma MarcaInteligente DLL, você pode utilizar o Visual Basic ou o C++.No exemplo que criaremos será utilizado o Visual Basic 6.0.

PPPPPré-requisitos para criação da DLL deré-requisitos para criação da DLL deré-requisitos para criação da DLL deré-requisitos para criação da DLL deré-requisitos para criação da DLL deMarca InteligenteMarca InteligenteMarca InteligenteMarca InteligenteMarca Inteligente� Possuir um gerenciador de páginas Web, com o IIS (Internet

Informations Services) instalado no seu computador. O IISestá disponível no Windows NT4.0, Windows 2000 eWindows XP.

� Além de ter o próprio Visual Basic 6.0 instalado, você teráde possuir a Smart Tags SDK 1.1 instalada em seu compu-tador. Você pode baixá-la na seguinte URL: http://msdn.microsoft.com/downloads/default.asp?url=/code/s a m p l e . a s p?u r l = / m s d n - f i l e s / 0 2 7 / 0 0 1 / 6 5 2 /msdncompositedoc.xml.

� Criar o diretório NWind em seu computador. Copiar o ban-co de dados e a página ASP que exibirá os detalhes dofuncionário. Execute os seguintes passos:

1. Abra o Explorer do Windows e crie o diretório NWind.2. Descompacte os arquivos de exemplo deste artigo no diretório

NWind do seu computador. O arquivo de exemplo deste ar-tigo (SmartTag.exe) está disponível para download emwww.forumaccess.com.br.

3. Ao descompactar os arquivos de exemplo você terá osarquivos NWind.exe e ExemplosProntos.exe, logo abaixodo diretório NWind que você criou.

4. Descompacte o arquivo NWind.exe.5. Ao final deste processo, você terá os arquivos NWind.mdb

e default.asp logo abaixo do diretório NWind, como vocêpode ver na figura 9.

� Criar o diretório Virtual NWind. Siga os seguintes passos:1. Clique no botão Start do Windows e selecione Settings ⇒

Control Panel.2. No Painel de Controle, dê um duplo clique em �Administrative

Tools� e depois em �Internet Services Manager�.3. No IIS clique com o botão direito sobre Default Web Site e

selecione New ⇒ Virtual Directory (figura 10).

4. Será apresentada a janela �Virtual Directory CreationWizard�. Clique no botão Next.

5. Na janela seguinte do Wizard, atribua o Alias: NWind.Veja a figura 11. Clique em Next.

Figura 10 - Criação do diretório virtual NWind no IIS

Figura 9 - Os arquivos NWind.mdb e default.asp logoabaixo do diretório NWind

Page 6: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

66666 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

6. Na janela seguinte (figura 12) clique no botão Browse e selecioneo diretório NWind. Clique em OK e depois no botão Next.

7. Na próxima janela aceite os valores-padrão e clique em Next.8. Na janela de finalização clique em Finish.Criando passoCriando passoCriando passoCriando passoCriando passo-a-passo a DLL de Marca-a-passo a DLL de Marca-a-passo a DLL de Marca-a-passo a DLL de Marca-a-passo a DLL de MarcaInteligente no Visual BasicInteligente no Visual BasicInteligente no Visual BasicInteligente no Visual BasicInteligente no Visual Basic1. Abra o Visual Basic 6.0.2. Na janela �New Project� selecione a aba New e ActiveX.dll.

Clique no botão Open.3. Acesse o item de menu Project ⇒ References. Inclua as

seguintes referências:

Microsoft ActiveX Data Objects 2.6 Library, Microsoft SmartTags 1.0 Type Library e Microsoft Internet Controls, conformea figura 13.

4. Acesse o item de menu Project ⇒ Project 1 Properties, ealtere a propriedade �Project Name� para NWind.

5. Selecione a classe Class1. Pressione a tecla <F4>. Najanela de propriedades altere a propriedade Name paraSmartTagRecognizer.

6. Insira o código a seguir na classe SmartTagRecognizer:

Option Explicit

Implements ISmartTagRecognizer

Private conNWind As ADODB.Connection

Private rstEmployees As ADODB.Recordset

Dim iPeopleCount As Integer

Dim arrPeople()

Este código utiliza a instrução Implementes para atribuiras mesmas propriedades e métodos da classe SmartTagRecognizer que pertence a DLL de Marcas Inteligentes. Fi-zemos referência a esta DLL quando incluímos a referên-cia Microsoft Smart Tags 1.0 Type Library. Os recognizers(identificadores) são as partes de código que adicionam ainformação de tipo às strings que lhes são passadas. Aclasse Recognizer é utilizada para identificar as palavrasque irão pertencer a esta Marca Inteligente. No caso, se-rão todas as que equivalerem a um nome de funcionáriocadastrado no banco de dados.Além disso, estamos declarando as variáveis que utilizare-mos para criar uma conexão com o banco de dados e para

Figura 12 - Definindo o diretório onde se encontra apágina ASP a ser executada

Figura 11 - Atribuição do Alias do diretório virtual

Figura 13 - As referências do projeto

Page 7: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

77777www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

armazenar os nomes dos funcionários em uma matriz(arrPeople).7. Insira uma nova classe ao projeto. Para isso, acesse o

item de menu Project ⇒ Add Class Module. Na janela�Add Class Module�, selecione �Class Module e clique emOpen�.

8. Altere a propriedade Name para SmartTagAction.Implemente as características da classe SmartTagAction in-serindo as instruções:

Option Explicit

Implements ISmartTagAction

Quando uma Marca Inteligente é reconhecida pelo aplicativocliente, você poderá clicar no ícone de Marca Inteligente eselecionar uma ação a ser executada. Através da classe Action(ação), você pode definir os termos que irão aparecer nomenu correspondente e quais as ações que serão executa-das por cada um deles.9. Volte para a classe SmartTagRecognizer. Iremos

implementar o seu método initialize.

Private Sub Class_Initialize()

�Este procedimento é iniciado quando a classe recognizer é iniciada

�Neste exemplo, recupera uma lista com os nomes dos funcionários que

�são reconhecidos como Marcas Inteligentes.

Dim sConnection As String

Dim sPeopleQuery As String

Dim iCount As Integer

Dim members_arrPeople As Integer

sPeopleQuery = �SELECT FirstName FROM Employees�

sConnection = �Provider=Microsoft.Jet.OLEDB.4.0;� & _

�Data Source=\NWind\NWind.mdb�

Set conNWind = New ADODB.Connection

With conNWind

.ConnectionString = sConnection

.Open

End With

Set rstEmployees = New ADODB.Recordset

rstEmployees.Open sPeopleQuery, conNWind, adOpenKeyset

members_arrPeople = rstEmployees.RecordCount - 1

ReDim arrPeople(members_arrPeople)

iCount = 0

Do While Not rstEmployees.EOF

arrPeople(iCount) = UCase(rstEmployees(�FirstName�))

iCount = iCount + 1

rstEmployees.MoveNext

Loop

iPeopleCount = UBound(arrPeople) + 1

rstEmployees.Close

conNWind.Close

Set rstEmployees = Nothing

Set conNWind = Nothing

End Sub

Quando a classe é inicializada abrimos o banco de dados ecarregamos o mesmo em uma matriz.10. A seguir iremos implementar as propriedades que defi-

nem a descrição, o nome e o ProgID deste recognizer.

Private Property Get ISmartTagRecognizer_Desc(ByVal LocaleID As Long)

ÄAs String

�Descrição para a Marca Inteligente Recognizer.

ISmartTagRecognizer_Desc = �Funcionários da Northwind�

End Property

Private Property Get ISmartTagRecognizer_Name(ByVal LocaleID As Long)

ÄAs String

�Nome amigável para a Marca Inteligente Recognizer.

ISmartTagRecognizer_Name = �Identificador de funcionários da

ÄNorthwind�

End Property

Private Property Get ISmartTagRecognizer_ProgId() As String

�ProgID utilizado para informar para a aplicação Office que esse Recognizer

Äexiste.

ISmartTagRecognizer_ProgId = �NWind.SmartTagRecognizer�

End Property

Ao atribuir um ProgID, você provê uma maneira dereferenciar a DLL no modelo de objetos. Por exemplo:excel. smarttagrecognizers (�MutualFunds.Recognizer�).FullName.11. Inserimos o método Recognize:

Private Sub ISmartTagRecognizer_Recognize(ByVal Text As String, ByVal

ÄDataType As SmartTagLib.IF_TYPE, ByVal LocaleID As Long, ByVal

ÄRecognizerSite As SmartTagLib.ISmartTagRecognizerSite)

Dim iTerms As Integer

Dim iPos As Integer, iLen As Integer

Dim pBag As SmartTagLib.ISmartTagProperties

Text = UCase(Text)

For iTerms = 0 To iPeopleCount - 1

Page 8: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

88888 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

iPos = InStr(Text, arrPeople(iTerms))

iLen = Len(arrPeople(iTerms))

Do While iPos > 0

Set pBag = RecognizerSite.GetNewPropertyBag

RecognizerSite.CommitSmartTag _

�schemas-nwind-com/employee#names�, iPos, iLen, pBag

iPos = InStr(iPos + iLen, Text, arrPeople(iTerms))

Loop

Next iTerms

End Sub

Este método é chamado pela aplicação cliente da MarcaInteligente, como o Word. É utilizado para criar a lista deMarcas Inteligentes que serão reconhecidas.12. Para finalizar a classe Recognizer, implementamos

as propriedades que definem: o número de MarcasIn t e l i gen te s imp lemen tadas pe lo recogn i ze r(SmartTagCount), uma URL vinculada ao documentoque permite baixar ações ainda não implementadas(SmartTagDownloadURL) e uma para definir o nomede cada tipo de Marca Inteligente implementada(SmartTagName).

Private Property Get ISmartTagRecognizer_SmartTagCount() As Long

�Número de tipos Marca Inteligente implementadas pelo recognizer.

ISmartTagRecognizer_SmartTagCount = 1

End Property

Private Property Get ISmartTagRecognizer_SmartTagDownloadURL(ByVal

ÄSmartTagID As Long) As String

�URL associada pela Marca Inteligente implementada por esse recognizer.

ISmartTagRecognizer_SmartTagDownloadURL = ��

End Property

Private Property Get ISmartTagRecognizer_SmartTagName(ByVal

ÄSmartTagID As Long) As String

� Essa propriedade define o nome de cada tipo de Marca Inteligente

Äimplementada.

If (SmartTagID = 1) Then

ISmartTagRecognizer_SmartTagName = �schemas-nwind-com/

Äemployee#names�

End If

End Property

13. Abra novamente a classe SmartTagAction. Definiremosagora as seguintes propriedades:

- Desc: descrição do que a classe SmartTagAction faz.- Name: nome amigável para a classe.- ProgId: ao atribuir um ProgID, você provê uma maneira de

referenciar a DLL no modelo de objetos.

Private Property Get ISmartTagAction_Desc(ByVal LocaleID As Long) As

ÄString

�Descreve a ação da classe.

ISmartTagAction_Desc = �Disponibiliza ações para os funcionários

ÄNorthwind reconhecidos�

End Property

Private Property Get ISmartTagAction_Name(ByVal LocaleID As Long) As

ÄString

�Nome amigável para a ação da classe.

ISmartTagAction_Name = �Ações dos funcionários da Northwind�

End Property

Private Property Get ISmartTagAction_ProgId() As String

�ProgID para a ação da classe.

ISmartTagAction_ProgId = �NWind.SmartTagAction�

End Property

14. A seguir definimos o �Caption� do primeiro nível do menuda Marca Inteligente (SmartTagCaption), o número deMarcas Inteligentes para qual a classe SmartTagActionfornece ações (SmartTagCount) e um identificador únicodos tipos de Marca Inteligente que a DLL suporta.

Private Property Get ISmartTagAction_SmartTagCaption(ByVal SmartTagID

ÄAs Long, ByVal LocaleID As Long) As String

�Retorna o submenu da Marcas Inteligentes.

ISmartTagAction_SmartTagCaption = �Funcionários da Northwind�

End Property

Private Property Get ISmartTagAction_SmartTagCount() As Long

�Retorna o número de Marcas Inteligentes para qual esta classe fornece

Äações.

ISmartTagAction_SmartTagCount = 1

End Property

Private Property Get ISmartTagAction_SmartTagName(ByVal SmartTagID As

ÄLong) As String

�Retorna o nome da Marca Inteligente.

If SmartTagID = 1 Then

ISmartTagAction_SmartTagName = �schemas-nwind-com/

Äemployee#names�

End If

End Property

Page 9: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

99999www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

15. Implementamos agora a quantidade de ações que serãodisponibilizadas para o usuário quando for clicado no íconeda Marca Inteligente. Definimos também a propriedadeVerbID. Esta propriedade atribui um ID único para cada ação.

Private Property Get ISmartTagAction_VerbCount(ByVal SmartTagName As

ÄString) As Long

�Retorna o número de ações disponíveis.

If (SmartTagName = �schemas-nwind-com/employee#names�) Then

ISmartTagAction_VerbCount = 2

End If

End Property

Private Property Get ISmartTagAction_VerbID(ByVal SmartTagName As

ÄString, ByVal VerbIndex As Long) As Long

�Atribui um ID único para cada ação.

ISmartTagAction_VerbID = VerbIndex

End Property

16. Atribuímos um �Caption� específico para cada uma das açõesque serão implementadas pela Marca Inteligente, confor-me o seu VerbID.

Private Property Get

ISmartTagAction_VerbCaptionFromID(ByVal VerbID As Long, ByVal

ÄApplicationName As String, ByVal LocaleID As Long) As String

�Esta propriedade retorna o submenu para um ID especifico.

Select Case VerbID

Case 1

ISmartTagAction_VerbCaptionFromID = �Informações do

Äfuncionários�

Case 2

ISmartTagAction_VerbCaptionFromID = �Enviar e-mail�

End Select

End Property

17. Implementamos um nome específico para cada uma dasações a serem executadas, conforme o seu VerbID.

Private Property Get ISmartTagAction_VerbNameFromID(ByVal VerbID As

ÄLong) As String

�Retorna um nome de ação para cada ID.

Select Case VerbID

Case 1

ISmartTagAction_VerbNameFromID = �visualizaDetalhes�

Case 2

ISmartTagAction_VerbNameFromID = �enviaEmail�

End Select

End Property

18. Para finalizar, indicamos quais as ações que devem serexecutadas conforme o VerbID informado.

Private Sub ISmartTagAction_InvokeVerb(ByVal VerbID As Long, ByVal

ÄApplicationName As String, ByVal Target As Object, ByVal Properties As

ÄSmartTagLib.ISmartTagProperties, ByVal Text As String, ByVal Xml As

ÄString)

� Este método é chamado por aplicações clientes da Marca Inteligente

Ä(como o Word).

� Executa a ação pedida pela Marca Inteligente.

Dim ie As New InternetExplorer

Select Case VerbID

Case 1

ie.Navigate2 (�http://127.0.0.1/nwind/default.asp?FirstName=� &

ÄText)

ie.Visible = True

Case 2

ie.Navigate2 (�mailto:� & Text & �@teste.com.br�)

End Select

End Sub

Note que no início do projeto fizemos uma referência para o�Microsoft Internet Controls�. Esta referência possibilita queinstanciemos uma variável como sendo do tipoInternetExplorer, e através dela podemos abrir uma páginapara ver os detalhes de um funcionário e enviar um e-mailpara um funcionário.

Compilando a DLLCompilando a DLLCompilando a DLLCompilando a DLLCompilando a DLLAntes de compilar a DLL, salve o seu projeto. Utilize a no-menclatura atribuída pelo Visual Basic para salvar as clas-ses. Salve as mesmas no diretório NWind do seu computa-dor. Salve o projeto com o nome NWind.vbp.Acesse o item de menu File ⇒ Make NWind.dll. Salve a DLLno diretório \NWind.Clique no botão Start e selecione Run.Abra o editor de registro do Windows digitando regedit epressionando a tecla <ENTER>.

Importante: tome extremo cuidado ao manipular o re-gistro do Windows. Siga os passos descritos a seguir,tomando o cuidado de alterar apenas as chaves menci-onadas.

Selecione a chave HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Smart Tag. Clique com o botão

Page 10: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

1 01 01 01 01 0 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

direito do mouse sobre Action. Selecione New ⇒ Key. Adicione a chave NWind.SmartTagAction (figura 14).

Agora clique com o botão direito do mouse sobre Recognizers. Selecione New ⇒ Key. Adicione a chaveNWind.SmartTagRecognizer (figura 15).

Figura 14 - Adicionando a chave NWind.SmartTagAction

Figura 15 - Adicionando a chave NWind. SmartTagRecognizer

Page 11: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

1 11 11 11 11 1www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

Feche o registro do Windows. Quando você for distribuiresta DLL é aconselhável que crie um pacote de instalaçãopara criar as chaves no registro automaticamente e instalara DLL em si. Você pode utilizar o Microsoft Visual StudioInstaller. Você pode encontrar o mesmo acessando: http://w w w. m i c r o s o f t . c o m / d o w n l o a d s / r e l e a s e . a s p ?releaseid=23250. Caso não saiba como utilizar o MicrosoftVisual Studio Installer leia o artigo HOWTO: Create a Visu-al Basic Installer Package with Visual Studio Installer(Q263739), acessando http://support.microsoft.com/support/kb/articles/Q263/7/39.ASP.

A Marca Inteligente NWind em açãoA Marca Inteligente NWind em açãoA Marca Inteligente NWind em açãoA Marca Inteligente NWind em açãoA Marca Inteligente NWind em açãoCaso você tenha compilado a DLL com o Word ou o Excelaberto, feche os mesmos.Abra o Word XP. Verifique se a Marca Inteligente NWind estáhabilitada. Para isso, acesse o item de menu Ferramentas ⇒Opções de AutoCorreção. Selecione a aba Marcas Inteli-gentes. Verifique se a Marca Inteligente �Identificador de fun-cionários da NorthWind� está marcada (figura 16).Digite �Nancy�. Perceba que apareceu uma linha pontilhada roxasobre a palavra digitada. Ao passar o mouse sobre a palavra, noteque será apresentado o ícone de Marca Inteligente. Clique sobre omesmo. Veja a lista de opções apresentadas (figura 17).

Selecione a opção Informações dos funcionários. Veja queserá apresentada uma página ASP com os detalhes do fun-cionário (figura 18).

Figura 16 - Verificando se a Marca Inteligente NWind está habilitada

Figura 18 - Detalhes do funcionário

Figura 17 - A Marca Inteligente NWind em ação

Page 12: mail recentemente. Note que depois que vocŒ teclou ,download.microsoft.com/download/d/f/8/df8e0222-62d5-470c-8ca5... · 2 Suplemento Especial / Janeiro / Fevereiro 2002

1 21 21 21 21 2 www.forumaccess.com.br Suplemento Especial / Janeiro / Fevereiro 2002

Janeiro/Fevereiro 2002

EditorDaniel J. Burd

Sub-EditorMarco Juliani

Revisão de textoAline Palhares

Revisão técnicaMarco Juliani

Jornalista ResponsávelRenato Vaisbih MTB 23605

DistribuiçãoChinaglia

Coord. Atendimento a ClientesVanessa Cristina

Projeto gráfico, capa e diagramaçãoInstituto Cultural e Editora Canadian Post

Fone/Fax: (11) 3315-8355E-mail: [email protected]

Impressão e AcabamentoInstituto Cultural e Editora Canadian Post

Fone/Fax: (11) 3315-8355E-mail: [email protected]

Telefone: (11) 3722-0688

ASSINATURAFone: (11) 3722.0688Site: www.forumaccess.com.brou e-mail para:[email protected]

RENOVAÇÃOFone: (11) 3722.0688ou e-mail para:[email protected]

ALTERAÇÃO DE DADOSFone: (11) 3722.0688ou e-mail para:[email protected]

ANÚNCIOSFone: (11) 3722.0688ou e-mail para:[email protected]

OPINIÕESFax: (11) 3722.0688.a/c:Opiniãoou e-mail para:[email protected]

FALE COM O EDITORFone/fax: (11) 3722.0688.a/ c:Editor ou e-mail para:[email protected] ou faxpara (11) 3722.0688. a/c Editor

INSCRIÇÃO EM EVENTOSFone: (11) 3722.0688Site: www .forumaccess.com.brou envie e-mail para:[email protected]

EXEMPLARES AVULSOS E PRODUTOS FÓRUMFone: (11) 3722.0688ou envie e-mail para:[email protected]

GRUPOS DE DISCUSSÃOAcesse www.forumaccess.com.br

Selecione novamente a Marca Inteligente. Selecione agora a opção enviar e-mail.Veja o resultado na figura 19.

TTTTTestando os eestando os eestando os eestando os eestando os exxxxxemplos prontosemplos prontosemplos prontosemplos prontosemplos prontosVocê pode baixar os exemplos utilizados neste artigo no site da Fórum Access:www.forumaccess.com.br. Lá, você encontrará o arquivo MarcasInteligentes.exe. Crieuma pasta com o nome NWind em seu computador e baixe este arquivo nesta pasta.Ao descompactar o conteúdo deste arquivo na pasta NWind você terá em seu compu-tador os arquivos NWind.exe e ExemplosProntos.exe. Descompacte os dois arquivosna mesma pasta NWind. Ao descompactar o arquivo ExemplosProntos.exe, além dosarquivos de projeto do Visual Basic 6.0, você terá os seguintes arquivos: SitesOffice.xmle NWind.dll.Para executar a Marca Inteligente criada com XML, copie o arquivo SitesOffice.xml paraa pasta \Program Files\Common Files\Microsoft Shared\Smart Tag\List.Para executar a Marca Inteligente criada na forma de uma DLL com o Visual Basic,clique no botão Start e selecione a opção Run. Digite: regsvr32.exe \NWind\NWind.dlle pressione a tecla <ENTER>. Por fim, crie as chaves de registro SmartTagAction eSmartTagRecognizer, como vimos anteriormente.Caso o Word ou o Excel esteja aberto durante a execução dos passos acima,reinicialize-os.

Obtendo maiores informaçõesObtendo maiores informaçõesObtendo maiores informaçõesObtendo maiores informaçõesObtendo maiores informaçõesA maior fonte de informações disponível é a Smart Tags SDK 1.1 (http://msdn.microsoft.com/downloads/default.asp?url=/code/sample.asp?url=/msdn-files/027/001/652/msdncompositedoc.xml). Recomendo também a área de desenvolvi-mento para Marcas Inteligentes no MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsmarttag/html/odc_smarttags.asp).

ConclusãoConclusãoConclusãoConclusãoConclusãoComo já disse anteriormente, a principal funcionalidade das Marcas Inteligentes é atri-buir informação contextual aos textos que são digitados nos aplicativos do Office. Alia-do a isso, temos a facilidade de uso. O usuário pode utilizar uma interface comum,simples e funcional que lhe provê ações que aumentam sua performance e simplificamas suas atividades. Já o desenvolvedor pode criar Marcas Inteligentes que deixem osseus usuários boquiabertos, correndo o risco de serem chamados de magos. Imagine oseu cliente lhe perguntando: �Como o Word sabe o e-mail do meu funcionário?�.

* Marco Antonio JulianiMarco Antonio JulianiMarco Antonio JulianiMarco Antonio JulianiMarco Antonio Juliani ([email protected])Coordenador da Comunidade Access e Office/Sub-editor da

Revista Fórum Access, Visual Basic & Office.

Figura 19 - Envio de e-mail para o funcionário