Nível: Intermediário Tim Robinson, Senior Software Engineer, IBM
21/Jul/2009 Este artigo oferece um guia passo a passo para começar a programação de macros para o IBM® Lotus® Symphony™ no OpenOffice.org BASIC. Ele apresenta o editor de macro, mostra como adicionar um objeto de controle a um documento do Lotus Symphony, demonstra como associar um evento de controle a uma macro e apresenta como acessar os dados em uma planilha do Lotus Symphony.
Nota do editor: Conhece muito sobre esse tópico? Deseja compartilhar seu conhecimento? Participe hoje do programa IBM Lotus software wiki.
Introdução
O IBM Lotus Symphony suporta a programação de macro através da linguagem do OpenOffice.org Basic. A introdução com suas próprias extensões para os documentos do Lotus Symphony pode ser tão simples quanto 1, 2, 3:
- Abra o editor de macro e escreva seu código.
- Adicione um controle a seu documento do Lotus Symphony.
- Associe a macro a um evento a partir do controle.
Neste artigo explicaremos estas etapas para um único programa. Em seguida, ilustramos através de um exemplo mais prático como usar o modelo de componente Universal Network Objects (UNO) para consultar os dados de uma planilha do Lotus Symphony.
Criando macros
No Lotus Symphony, as macros são armazenadas em módulos. As bibliotecas são utilizadas para organizar os módulos e podem ser anexadas a um documento ou modelo. No primeiro exemplo, você irá criar um documento e, depois, adicionar um novo módulo à biblioteca padrão para este documento. É possível usar o editor de macro para editar o conteúdo do módulo para adicionar o código do programa simples e, então, é possível salvar o novo módulo com a macro.
Abrindo o editor de macro
Abra o Lotus Symphony e siga estas etapas:
- Selecione File - New - Spreadsheet. (Embora os exemplos aqui utilizem uma planilha, outros tipos de OpenDocument também funcionam.)
- Com a planilha aberta, selecione Tools - Macro - Macro para exibir a caixa de diálogo de macro. Veja a figura 1.
- No navegador à esquerda, selecione a biblioteca Standard em Untitled document (este nome é alterado ao salvar o documento).
- Clique no botão New e aceite o nome padrão do módulo (Module1) ao clicar no botão OK.
Figura 1. Abrindo o editor de macro em um novo módulo
Agora o Editor de macro é exibido conforme mostrado na figura 2.
Figura 2. O editor de macro
Para sua primeira macro, remova os modelos e adicione seu próprio procedimento (SUB) ao conteúdo no editor. Siga estas etapas:
- Selecione todo o texto abaixo da instrução REM (remark) e exclua-o.
- Adicione este código no editor:
Sub HelloWorld
MsgBox "Hello World"
End Sub
- Clique no botão Compile exibido na figura 3 e então clique no botão Run exibido na figura 4. Uma mensagem simples exibe o texto Hello World conforme mostrado na figura 5.
Figure 3. Compilar
Figura 4. Executar
Figura 5. Resultado
É possível clicar em OK para sair da mensagem.
Salvando seu trabalho
 |
Níveis de segurança da macro
Nunca: Desativa todas as macros do documento, exceto as macros inseridas no editor de macro ou carregadas manualmente.
De acordo com a lista de caminho: Executa apenas macros do documento R de documentos localizados nos caminhos especificados.
Modo Seguro: Executa as macros do documento de acordo com os eventos designados, exceto pelas APIs arriscadas que incluem métodos de tempo de execução de APIs UNO e StarBasic desativados.
Sempre: Executa todas as macros do documento, independente da origem.
|
|
Agora que a macro está funcionando, é uma boa ideia salvar seu documento do Lotus Symphony, ao fazer isso, a macro é automaticamente salva junto com o documento. Selecione File - Save As e insira um nome na janela, mantendo o tipo de arquivo com a configuração padrão. As próximas capturas de tela são baseadas no nome Hello.ods.
Ativando a execução de macro de documentos
Antes de iniciar a associação de controles com sua nova macro, verifique e atualize as preferências do Lotus Symphony para permitir que as macros armazenadas nos documentos sejam executadas. As configurações padrão desativam as macros de documentos carregados por padrão para aumentar a segurança, mas você precisa executar as macros dos arquivos salvos, então deve modificar esta configuração de preferência. Consulte a barra lateral "Níveis de segurança da macro" para obter maiores informações sobre os níveis de segurança disponíveis.
Siga estas etapas:
- Selecione File - Preferences e clique no botão de 'mais' próximo ao IBM Lotus Symphony e o item Macro Security.
- Modifique Run Macros: item da lista para Always e selecione a opção Show warning before running conforme mostrado na figura 6.
Figura 6. Ativando as macros
- Clique no botão OK para atualizar as preferências do Lotus Symphony.
Caso abra este documento posteriormente, será perguntado se você deseja que as macros salvas no documento sejam executadas.
Adicionando um controle a um documento
Agora que a macro funciona, a próxima etapa é adicionar um controle ao documento. Para esta etapa, alterne para o modo de estrutura para o documento, adicione um controle e então configure alguns dos atributos do controle.
Alterando para o modo de estrutura
A primeira etapa é para permitir que a barra de ferramentas Form Functions revele os ícones para auxiliar na adição de controles a um documento.
Siga estas etapas:
- Selecione View - Toolbar e selecione o item de barra de ferramentas Form Functions (caso ainda não esteja selecionado).
- Clique no ícone Design Mode On na barra de ferramentas. Veja a figura 7.
Figura 7. Ativar o modo de estrutura
Para este exemplo simples, é possível usar um controle de botão. Selecione o ícone Push Button e mova o ponteiro do mouse para dentro do documento. Arraste o controle para o documento. Não se preocupe muito com o tamanho e o local, pois ele pode ser alterado posteriormente utilizando as alças de posicionamento no controle. Veja a figura 8.
Figura 8. Controle Push Button adicionado
Modificando o controle
É possível modificar o controle ao seguir estas etapas:
- Para alterar o nome no controle do botão e a dica de ajuda exibida quando o mouse está sobre ele, clique com o botão direito no controle de botão e selecione Control.
- Continue a guia General. No campo Label, altere o valor de Button para Say Hello e vá até o último campo e no campo Help text insira Click here for a friendly greeting. Consulte a Figura 9.
Figura 9. Atualizar as propriedades do controle
- Feche a caixa de diálogo de propriedades.
Observe que agora, quando o mouse está sobre o controle de botão, o texto inserido no campo Help text é exibido. Agora é o momento para associar a macro anteriormente criada a este controle.
Associando uma macro com um evento de um controle
Para associar uma macro a um evento de um controle, siga as seguintes etapas:
- Ainda no modo de estrutura, clique com o botão direito do mouse no controle de botão e selecione Control.
- Selecione a guia Events. Clique no botão à direita do campo do botão de mouse pressionado para exibir a caixa de diálogo Assign Macro.
- Na caixa de navegação da parte inferior esquerda, expanda a lista Hello BASIC Macros e expanda a lista da biblioteca Padrão.
- Selecione o módulo Module1 e a nova macro é automaticamente selecionada conforme mostrado na figura 10.
Figura 10. Atribuir a macro ao controle
- Clique no botão Assign. Observe como o evento é associado à macro a partir da biblioteca e do módulo.
- Clique no botão OK para fechar a caixa de diálogo Assign Macro.
Testando o controle
Tudo o que resta a ser feito agora é posicionar ou dimensionar o controle de botão conforme desejado e então sair do modo de estrutura para testar o controle. Quando terminar de redimensionar ou mover o botão, clique no ícone Design Mode On novamente para desligar o modo de estrutura. Veja a figura 11.
Figura 11. Desativando o modo de estrutura
Após desativar o ícone, observe que a maior parte dos ícones da barra de ferramentas Form Function está desativada, deixando apenas os ícones Select e Design Mode On ativos. Como o modo de estrutura desligado, clique no controle de botão. Quando o controle de botão é clicado, é exibida uma mensagem conforme mostrado na figura 12.
Figure 12. Hello World
Agora você dominou os conceitos básicos, então vamos observar um exemplo prático que combine um controle de botão pressionável com uma macro mais complexa.
Colocando em prática
O exemplo mais detalhado trata de uma situação em que uma planilha do Lotus Symphony é utilizada para controlar um grupo de projetos. Você deseja atribuir a cada projeto um código de identificação de quatro dígitos exclusivo e aleatoriamente selecionado. Quando um novo projeto é adicionado, o gerente de projeto clica em um botão na planilha para obter o código de identificação do projeto. Observemos uma parte do código que deve ser adicionada à macro para realizar esta tarefa.
Gerando os números aleatórios
Para este cenário, sua macro precisa criar códigos numéricos de quatro dígitos, que podem ser de 0000 a 9999. Para obter um valor neste intervalo, é possível multiplicar o resultado da função Rnd() por 10000 e descartar todos os resultados após a casa decimal. Antes que a função Rnd() possa ser utilizada, deve-se chamar o procedimento Randomize para inicializar o gerador de números aleatórios. Pelo fato de este resultado estar contido em uma variável integral, a mensagem para exibir o valor deve usar o código de formatação de preenchimento de quatro caracteres com zeros iniciais para os códigos calculados abaixo de 1000. A Lista 1 exibe o procedimento de trabalho para fazer isso.
Lista 1. Macro para gerar e exibir o código numérico de quatro dígitos
Sub myRandom
Dim iCode as Integer
Randomize
iCode = Int((10000* Rnd)) REM value between 0000-9999
MsgBox Format(iCode,"0000"),0,"Random Code"
End Sub
|
Caso você não precise se preocupar com a possibilidade de o mesmo código ser designado para mais de um projeto, esta macro é suficiente para suas necessidades.
Encontrando um valor de código exclusivo
O número total de projetos controlados nesta ferramenta é pequeno, provavelmente abaixo de 100. A abordagem que deve ser utilizada para encontrar um código exclusivo é olhar através dos dados da planilha atual e observar se qualquer um dos outros códigos de projeto correspondem ao novo candidato. Uma vez que o número de potenciais códigos aleatórios é grande em comparação com o número de projetos a serem pesquisados, esta abordagem simples deve ser eficiente.
Para realizar este processamento dos dados da planilha em uma macro, é utilizada uma pequena porção do Universal Network Objects (UNO) API. O Lotus Symphony API é baseado no UNO, que é o modelo de componente do OpenOffice.org. Estão disponíveis diversas ligações de linguagem para o UNO, incluindo o BASIC. Embora isso pareça um pouco complexo, este modelo de componente pode ser facilmente utilizado para acessar os valores da célula de sua planilha.
Siga estas etapas:
- Obtenha um objeto associado à planilha atual através do método getSheets.getByIndex.
- Consulte o objeto da planilha para encontrar um objeto de célula com o método getCellByPosition, que possui um valor de linha e de coluna.
- Consulte o objeto da célula com o método de valor para obter os conteúdos numéricos da célula.
Os acessos do modelo de componente UNO são mostrados em negrito no final do código da macro na lista 2.
Lista 2. Macro para gerar um código numérico exclusivo de quatro dígitos
Sub randomCode
Dim iCode as Integer
Dim oSheet as Object
Dim oCell as Object
Dim bMatch as Boolean
oSheet = thisComponent.getSheets.getByIndex( 0 )
bMatch = True
Randomize
Do While bMatch = True
iCode = Int((10000* Rnd)) REM value between 0000-9999
bMatch = False
For iCount = 0 To 499
oCell = oSheet.getCellByPosition( 0, iCount )
If ( oCell.value = iCode ) Then
bMatch = True
End If
Next
Loop
MsgBox Format(iCode,"0000"),0,"Random Code"
End Sub
|
Esta macro utiliza um For... Next loop para verificar as 500 primeiras linhas da primeira planilha na planilha do Lotus Symphony e procura na primeira coluna pelas possíveis correspondências. As variáveis booleanas bMatch são utilizadas para controlar o status da verificação. Se uma correspondência for encontrada, a função Do While ... Loop repete o ciclo com um código aleatório recentemente gerado até que a verificação das linhas não resulte em uma correspondência.
A Figura 13 mostra a planilha com algumas linhas de projeto e o resultado da macro.
Figura 13. A macro em ação
Da mesma maneira que com a caixa de mensagem, a primeira coluna da planilha foi customizada com o código de formatação de 0000 para garantir que o código de quatro dígitos seja exibido mesmo se o número designado possuir menos locais significativos.
Embora este exemplo utilize uma mensagem para fornecer o código aleatório ao gerente de projeto utilizando a planilha de controle, um aperfeiçoamento simples é o uso do método getCurrentSelection UNO para encontrar um local a ser preenchido com o código exclusivo ao invés de o gerente de projetos precisar copiá-lo da mensagem.
Conclusão
Agora você aprendeu os princípios básicos da programação de macro do Lotus Symphony na linguagem do OpenOffice.org BASIC. Durante o artigo você aprendeu a criar e organizar macros, como ativar a execução de macros nos documentos e com associar os eventos nos controles com macros. É possível encontrar mais informações sobre isso e os tópicos relacionados ao visitar os links na seção Recursos.
Agradecimentos
O autor gostaria de agradecer ao Paul Bastide, Especialista em TI, Lotus Symphony, IBM, por revisar este artigo.
Recursos Aprender
Obter produtos e tecnologias
Discutir
Sobre o autor  | |  | Tim Robinson (timro@us.ibm.com) é um Engenheiro de Software Sênior que trabalha na equipe IBM Innovation Center em San Mateo, CA. Nesta equipe, ele fornece insights e estratégias para a segurança de rede, sistemas abertos e infraestrutura dinâmica. Não mais satisfeito com a migração dos aplicativos de produtividade comuns para o IBM Lotus Symphony, ele arregaçou as mangas para aproveitar ao máximo esta inovadora plataforma. |
Avalie esta página
|