Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 – CONCEITOS GERAIS • Workflow: software para controlar os passos necessários para completar toda uma atividade. • Workgroup: grupo de pessoas que compartilham arquivos, dados e possivelmente aplicações. Os softwares de workgroup são projetados para permitir interações colaborativas. • Groupware: software baseado em tecnologia Client/Server, permitindo vários usuários compartilharem uma área comum de informações. Exemplos de ferramentas groupware: Lotus Notes® – LOTUS Exchange – MICROSOFT Group Wise – NOVELL 1.1 - LOTUS NOTES® É um ambiente de computação para grupo de trabalho que ajuda as pessoas a trabalharem em conjunto de uma maneira mais eficiente. Com ele, as pessoas podem trabalhar juntas, independente da plataforma ou dos limites geográficos, técnicos ou organizacionais. As informações baseadas no Notes® podem ser compartilhadas a qualquer distância e a qualquer momento. O Notes® é uma ferramenta de comunicação, para suprir a necessidade de automatizar o ambiente de trabalho fazendo com que os documentos fluam normalmente, seguindo um fluxo lógico de acompanhamento a eles. MODO INTELIGENTE DE SE COMUNICAR, COOPERAR E COORDENAR 1.2 - SERVIDORES DO NOTES® E ESTAÇÕES DE TRABALHO O Notes® consiste em dois programas principais: Servidor e Estação de Trabalho. O Servidor do Notes®: Um computador que executa o OS/2, Windows/NT ou UNIX - fornece serviços a usuários da estação de trabalho do Notes® e a outros servidores do Notes®, inclusive armazenamento de bancos de dados compartilhados e transferência de mensagens. A Estação de Trabalho do Notes®: Um computador que executa o software do sistema Windows/NT, OS/2, Macintosh ou UNIX - comunica- se com os servidores do Notes®, de modo que você possa usar os bancos de dados compartilhados e ler e enviar mensagens. 1.3 – USUÁRIOS NOTES® Administradores: Gerenciam os usuários, as redes e os bancos de dados do Notes® para assegurar que todos estejam acessando corretamente os bancos de dados. Designers: Criam e modificam os bancos de dados (aplicativos) para que os usuários possam compartilhar informações de maneira eficaz. Usuários: Criam, editam e compartilham documentos com outros usuários do Notes®. CAPÍTULO 1 – LOTUS SCRIPT BÁSICO • LotusScript Básico LotusScript é uma linguagem de programação que estende as capacidades de desenvolvimento de aplicações da Lotus, particularmente, Lotus Notes. LotusScript se assemelha a Visual Basic (VB) e se você está familiarizado com VB, então aprender LotusScript é fácil. • Sintaxe usada no LotusScript Variáveis do LotusScript, tipos de dados, estrutura de dados estrutura, operadores, funções e subs, laços e condicionais, cadeia de caracteres, funções de data/hora, arquivos,... são cobertos. Neste capítulo você irá aprender sobre o LotusScript, a linguagem de programação usada nos produtos da Lotus. O capítulo abrange LotusScript básico e sua sintaxe e estrutura. O que você aprender neste capítulo pode ser usado em qualquer produto Lotus que use o LotusScript. Este Capítulo já assume que você não é leigo em programação e que já tenha alguma experiência com linguagens como Visual Basic e outras. 1 O Quê é LotusScript ? LotusScript é uma linguagem de script básica. Ela primeiramente apareceu no Lotus Improv, um produto inovador que foi desenvolvido para Windows em 1992. Gradualmente, mais produtos Lotus incorporaram o LotusScript, incluindo Formulários Notes e Lotus Notes Vip ( que foi vendido posteriormente para Revelation ). Neste Capítulo, nós investigaremos os elementos da Linguagem LotusScript de uma forma prática. Serão usados exemplos para facilitar o aprendizado. Nós começaremos com “ Como adicionar comentários ao seu código”. 2 Adicionando Comentários ao seu Código O primeiro e mais importante assunto para aprender em uma linguagem de programação é a maneira de acrescentar comentários ao seu código. As linhas de comentários iniciam com apóstrofo. De fato, qualquer coisa após um apóstrofo é considerado como um comentário e você pode facilmente adicionar comentários no final da linha. Você também pode usar %REM and %END REM para blocos de linhas de comentários como mostra o exemplo: ‘ Uma linha simples de comentário . . . ‘ . . . e outra %REM A primeira linha de um comentário com múltiplas linhas A última linha de um comentário com múltiplas linhas %END REM DICA É importante que você use comentários em suas linhas de programação para facilitar a manutenção do programa por você e também por uma outra pessoa que venha a assumir suas tarefas. 3 Entendendo as Variáveis do LotusScript No LotusScript, como em qualquer linguagem de programação, as variáveis são usadas para armazenar e manipular dados. Existem algumas regras que devem ser seguidas quando da nomeação das variáveis no LotusScript: • O primeiro caracter deve ser uma letra; • Os demais caracteres podem ser letras, números,...; • Os nomes das variáveis podem ter no máximo 40 caracteres; • Não existe distinção entre nomes maiúsculos e minúsculos. Estas regras básicas são aplicadas também a nome de constantes, tipos, classes, funções, procedimentos, subrotinas e propriedades. 4 Constantes no LotusScript Muitas constantes são criadas para tornar seu programa mais fácil. A tabela 1.0 abaixo mostra estas constantes. Tabela 1.1 Constantes do LotusScript Constante s Descrição FALSE O valor boleano é falso. Representada por 0 TRUE O valor boleano é verdadeiro. Representado por -1. NULL Para variáveis do tipo variante, indica que a variável não tem valor NOTHING Para variáveis que podem se referenciar a um objeto, indica que a variável não está se referenciando a um objeto PI Do termo matemático π =~ 3,14 Algumas constantes programadas são definidas em arquivos especiais que você pode incluir em seus scripts. Estes arquivos são conhecidos como “include files” e têm a extensão .LSS que significa “LotusScript Source file “. Use a diretiva %INCLUDE na sessão de declaração para incluir o arquivo .LSS. Veja o exemplo abaixo: %INCLUDE “ LSCONST.LSS ” Estas constantes tornam seu programa mais legível. Por exemplo, MB_OK e MB_OKCANCEL podem ser usados na função MsgBox. DICA Quando o Notes é instalado na forma padrão, todos os arquivos .LSS são armazenados no diretório de programas do Notes. Para saber mais sobre estes arquivos e suas constantes, veja-os em um editor de texto como o Bloco de Notas. Você pode definir suas próprias constantes usando a declaração de constantes. É uma maneira para tornar seu código mais legível. Por exemplo, para definir constantes que definam tamanhos de produtos, você pode definir o fragmento de código seguinte: Const SIZE_SMALL = 1 Const SIZE_MEDIUM = 2 Const SIZE_LARGE = 3 Por conversão, todos os nome de constantes são capitalizados. 5 Entendendo Tipos de Dados Todas as variáveis no LotusScript têm um tipo associado a elas. Este tipo define, basicamente, duas coisas: • Quanto de espaço deve ser reservado para os dados que estão armazenados nas variáveis; • Que tipo de expressões podem usar as variáveis. Para esclarecer melhor, uma vez declarada a variável do tipo inteira, o LotusScript reserva dois bytes para o seu valor ser armazenado na variável e verifica que a variável só pode ser usada em expressões para valores inteiros. LotusScript suporta os tipos de dados na tabela 2.0 abaixo: Table 1.2 Tipos de Dados do LotusScript Tipo de Dado Número de Bytes Armazenados Sufixos Integer 1 % Long 4 & Single 4 ! Double 8 # Currency 8 @ String 2 por caracter $ Variant 16 Nenhum 6. Declarando Variáveis Não é necessário declarar uma variável porque na primeira vez que você usa uma nova variável, LotusScript declara ela para você automaticamente como uma variável do tipo Variant. DICA Sempre declare as variáveis nasessão de declaração geral. Isto força a declaração de todas as variáveis que você usa e ajuda você quando da depuração do programa Você declara as variáveis usando a expressão Dim. Por exemplo, o fragmento de código seguinte declara três variáveis: iCont como inteiro, strName como string e curPrice como currency: Dim iCount As Integer Dim strName As String Dim curPrice As Currency Você pode adiciona qualquer dos sufixos mostrados na tabela 2.0 para declarar as variáveis. Veja o exemplo abaixo: Dim sRatio! Dim dLimit# DICA Não é bom usar sufixos quando declara variáveis. Isto torna seu código mais difícil de entender por alguém que não sabe que, por exemplo, ! quer dizer uma variável single. Se não é explicitado o tipo da variável, é atribuído a ela o tipo Variant. As duas linhas abaixo declaram variáveis com Variant: Dim varFontTipe As Variant Dim varFontName DICA É bom que o programador pratique todos os tipos de variáveis quando possível. Isto tira qualquer dúvida sobre o tipo de variável que você deve usar e faz seu código mais fácil de sofrer manutenção. Veja que o prefixo que adotamos faz parte do nome da variável. Apesar dele não ser necessário, ele ajuda a você checar que você está usando a variável correta na expressão. Por exemplo, só em olhar o nome das variáveis no seu código, você estará constatando se as variáveis usadas na expressão são do mesmo tipo. Os prefixos são variados entre os diversos programadores. A tabela 1.3 mostra exemplos de prefixos. Tabela 1.3 Sugestões de Prefixos para Nomes de Variáveis Data Type Prefix Example Integer I IDocsDeleted Long L LFilesLength Single S SWeightCoefficient Double D DAcceleration Currence Cur CurSalaryIncrease String Str StrDocTitle Variant Var VarName 7 Convertendo Tipos de Dados Em muitos casos, quando você atribui dado de um tipo para uma variável de um tipo diferente, LotusScript automaticamente converte o dado para você. LotusScript converte dados de tipos diferentes usando a sequência de tipos seguintes: Integer, Long, Single, Double e Currency. Se você usar variáveis do tipo long e do tipo single em uma mesma expressão, LotusScript converte o valor long em um valor single antes de prosseguir na expressão. LotusScript possui um conjunto de funções que convertem variáveis em diferentes tipos. As funções são listadas na tabela 1.4 e permite a você: • Converter dados de um tipo para outro; • Converter números em cadeias; • Converter cadeias em números; • Checar o tipo de dado de uma variável. Tabela 1.4 Funções de Conversões de Dados Funções Descrição Bin$ Converte o número fornecido em uma String que representa seu valor binário Ccur Converte o valor fornecido em Currency CDat Converte o valor fornecido em Variant do tipo data CDbl Converte o valor fornecido em Double CInt Converte o valor fornecido em Integer CLng Converte o valor fornecido em Long CSng Converte o valor fornecido em Single CStr Converte o valor fornecido em String DataType Retorna um valor Integer que representa o tipo de dado do valor fornecido Hex$ Converte o número em uma String que representa seu valor hexadecimal Oct$ Converte o número em uma String que representa seu valor octal. Str$ Converte um número em uma String. TypeName Retorna uma String que representa o tipo de dado do valor fornecido Val Converte a String fornecida em um número do tipo Double. 7.1 Convertendo Dados de um Tipo para Outro Use CCur, CDat, CDbl, CInt, CLng, CSng e CStr para converter dados de um tipo para outro. Geralmente, você faz conversões de tipos para Ter certeza que o resultado de um cálculo é de um certo tipo. Por exemplo, o fragmento de código seguinte mostra como ter certeza que o preço calculado retorna um valor do tipo Currency: Dim iQuantidade As Integer Dim curPreco As Currency Dim curTotal As Currency CurTotal=CCur(iQuantidade + curPreco) 7.2 Convertendo um Número em uma Cadeia de Caracteres O LotusScript tem funções que convertem números em cadeias. Str$ converte o valor numérico dado em cadeia, acrescentando um espaço no início se o número for positivo. Se você não quer espaços, use a função CStr O exemplo seguinte imprime “ 143”: Print Str$(143) As funções Bin$, Hex$ e Oct$ convertem os números fornecidos em cadeias que contêm a representação binária, hexadecimal e octal de cada um respectivamente. O exemplo seguinte imprimi “101”: Print Bin$(5) 7.3 Convertendo Cadeia de Caracteres em Número Use a função Val para converter uma cadeia em um número. A função Val retorna um valor Double contendo a representação numérica da cadeia. 7.4 Checando o Tipo de Dado de uma Variável Existem duas funções que checam o tipo de dado de uma variável: DataType e TypeName. DataType retorna um integer representando o tipo de dado da variável ou expressão sendo checada. O arquivo LSCONST.LSS contem um conjunto de constantes pré-declaradas que você pode usar para interpretar o valor retornado por DataType. TypeName é semelhante a DataType exceto que ao invés de retornar um inteiro, ele retorna uma String descrevendo o tipo de dados. Veja o exemplo seguinte: Dim strNome As String Print TypeName(StrNome) 8 Estrutura de Dados do LotusScript LotusScript suporta estrutura de dados comuns de arrays e listas. Ele também suporta estruturas de dados orientadas a objeto; por exemplo, você pode criar suas classes, métodos e propriedades. Você também pode usar LotusScript para trabalhar com objetos OLE e ActiveX. 8.1 Arrays No LotusScript, você pode declarar dois tipos de arrays, estáticas e dinâmicas. Uma array estática é uma array de tamanho fixo, contento um número fixo de elementos. Você pode criar e deletar elementos. Uma array dinâmica pode ser redimensionada a qualquer hora; você pode torná-la maior e menor adicionando e removendo elementos. Veja a tabela 1.5 com as funções que você pode usar para trabalhar com arrays. Tabela 1.5 Funções de Arrays Comandos ou Funções Descrição Dim Declara uma array estática e inicializa seus elementos Erase Inicializa cada elemento de uma array fixa. Para arrays dinâmicas, deleta todos seus elementos IsArray Dado uma variável ou expressão, Retorna verdadeiro se uma expressão for uma array Lbound Retorna o menor índice de uma array ReDim Declara uma array dinâmica e aloca espaço para seus elementos ou modifica o tamanho de uma array dinâmica existente Ubound Retorna o maior índice de uma array Você declara uma array estática usando o comando Dim. Você especifica o seguinte: • O número de dimensão para array; • O limite ( dimensão ) da array; • O tipo de dado a ser armazenado. Dim aloca espaço para a array e automaticamente inicializa cada elemento com um valor padrão. Até que você especifique outro, o primeiro elemento de uma array tem o índice 0. Se preciso, você pode mudar seu padrão para 1, usando a expressão “Ooption base 1”. As declarações abaixo declaram variáveis estáticas: Dim strNome(9) As String ‘ Declara 10 elementos com índices de 0 a 9 Dim iMatriz(9,9) As Integer ‘ Declara 100 elementos Dim iVetor(1 to 50) As Integer ‘Declara 50 elementos com índices de 1 a 50 Você também pode usar Dim para declarar arrays dinâmicas. Porém, quando você declarar uma array dinâmica usando Dim, especifique apenas o tipo. Você não especifica o número de elementos da array e não é alocado espaço para a array. Antes de usar uma array dinâmica, você tem que usar o comando ReDim para alocar algum espaço para seus elementos. Por exemplo, o código abaixo mostra como declarar uma array dinâmica e alocar agum espaço para ela: Dim iElemento As Integer ‘ Declara o número de elementos a ser usado Dim strVetor() As String ‘ Declara a array dinâmica IElemento = 25 ReDim strVetor(iElemento) ‘ Aloca para este número de elementos Você pode também declarar e inicializar uma arrayusando ReDim. Por exemplo, para declarar uma array contento seis elementos do tipo Integer e inicializar cada elemento com 0, use o seguinte código: Option Base 1 ‘ Especifica que o primeiro elemento de qualquer array tem o índice 1 ReDim var Peso(6) As Integer ‘ Declara uma array dinâmica com elementos cujos índices vão de 1 a 6. Você pode usar ReDim para redimensionar uma array dinâmica com a opção de preservar o conteúdo da array ou reinicializando seus elementos. Por exemplo, se você tem uma array dinâmica, iVetor, contendo 50 elementos e você precisa aumentar seu tamanho para 100 elementos preservando seu conteúdo corrente, use o seguinte código: ReDim Preserve iVetor(99) Se você precisa achar o tamanho de uma array dinâmica em tempo de execução, você pode usar as funções LBound e UBound. Use essas funções com o nome de uma array e opcionalmente com seu tamanho. LBound retorna o menor índice da array e UBound o maior. Por exemplo, após redimensionar iVetor, Lbound(iVetor) é 0 e UnBound(iVetor) é 99. Você pode usar o comando Erase para deletar todos os elementos de uma array dinâmica e liberar o espaço usado pela array. Em uma array estática, você pode usar Erase para reinicializar cada elemento. Você pode atribuir uma array a uma variável do tipo Variant. Consequentemente, você pode checar se uma variável contem uma array usando a função IsArray. Se a variável ou expressão fornecida é uma array, a função retorna verdadeiro. Por exemplo: Dim var Icons As Variant Dim lIconsIDs(255) As Long Print IsArray(varIcons) ‘ False VarIcons = lIconIDs Print IsArray(varIcons) ‘ True 8.2 Listas Uma lista é similar a uma array e contém um conjunto de elementos. Ela diferencia de uma array quando da identificação e uso de seus elementos. Com arrays, você identifica seus elementos usando índices. Com lista, você identifica elementos usando uma string. Veja a tabela 1.6 que exibe as funções usas com listas: Tabela 1.6 Funções de Lista Comandos e Funções Descrição Dim Declara a lista Erase Para a lista, remove todos os seus elementos. Para elementos da lista, remove o elemento da lista ForAll Laço entre os elementos da lista IsElement Dado o nome da lista e a string, retorna verdadeiro se a string é um elemento da lista IsList Verifica se a variável é uma lista LisTag Pode ser apenas usada dentro de um bloco ForAll e retorna o nome do elemento da lista Use Dim para declarar uma lista vazia como se segue: Dim curAmountOutstanding List As String Quando você declara uma lista, ela não possui elemento e não é alocado espaço para ela. Você adiciona elementos a lista adicionando novas strings. Por exemplo, você pode criar dois elementos na lista, cujas strings são ABC e XYZ, usando o código abaixo: CurAmountOutstanding(“ABC”) = 12.99 CurAmountOutstdanding(“XYZ”) = 52.00 Você usa a string para se referenciar a um elemento da lista da mesma forma que você usa um índice para ser referenciar a um elemento de uma array. Por exemplo, para somar esses dois elementos que acabamos de criar, veja o código abaixo: Dim curTotal as Currency CurTotal = CurAmountOutstanding(“ABC”) + CurAmountOutstanding(“XYZ”) Use Erase para deletar elementos específicos de uma lista, ou todos os elementos. Por exemplo: Erase CurAmountOutstanding(“ABC”) ‘ Remove o elemento da lista Erase CurAmountOutstanding ‘ Remove todos os elementos da lista Caso você queira checar se foi adicionado um elemento a uma lista, usando a função IsElement. Forneça a string do elemento procurado e a função retorna verdadeiro se o elemento fizer parte da lista. For example: IsElement(curAmountOutstanding(“XYZ”)) Você também pode checar se uma variável é uma lista. Por exemplo: IsList(curAmountOutstanding) Para percorrer os elementos de uma array, você tipicamente usa um loop para percorrer todos os índices da array. No caso de uma lista, você usa um ForAll loop junto com a função ListTag. Por exemplo: ForAll varElement In curAmountOutstanding Print ListaTag(varElement) ; “ owes “ ; varElement End ForAll Há pontos importantes que devem ser anotados quando se uma ForAll. No exemplo acima, a variável “varElement” é um tipo especial de variável usada pelo LotusScript quando executando loops ForAll. No corpo do loop, cada elemento da lista é atribuido a variável de referência. Você nunca tem que declarar uma variável de referência; LotusScript declara todas as variáveis de referência como variant por você . Se você tentar declarar uma variável de referência, aparecerá erro de compilação. Dentro de um loop ForAll, você pode usar função ListTag para achar a string correspondente ao elemento corrente. Esta função só é usada dentro de um loop ForAll. CUIDADO LotusScript suporta somente arrays e listas com um tamanho máxio de 64k. Tome cuidado com esse limite quando alocar arrays e listas grandes. 8.3 Tipos Definidos pelo Usuário Você pode definir suas próprias estruturas de dados usando a expressão type. Basta fornecer o novo nome do tipo e definir uma ou mais variáveis membro para o tipo. NOTA O termo variável membro é usado para referenciar qualquer variável incluída em uma definição de tipo de usuário. Por exemplo, para declarar um novo tipo com três variáveis membros, você poderia usar a declaração de tipo seguinte: Type Custumer LCustID As Long StrCusFirstName As String StrCusSurname As String CurBalance As Currency End Type Você pode então declarar novas variáveis deste tipo; por exemplo: Dim custNew As Customer Dim custMailing As List Customer Dim custMostFrequentBuyers(99) As Customer Você se referencia a uma variável membro usando a forma VarNome.MembroNome onde VarNome é o nome da variável do tipo definido pelo usuário e MembroNome é o nome da variável membro. CustNew.lCustID = 14829 CustNew.strCustFirstName = “ Chris “ CustNew.curBalance = 100.00 8.4 Classes e Objetos Definidos pelo Usuário Você pode definir suas próprias classes e objetos com LotusScript. A declaração de classe é semelhante a declaração de tipo, exceto que além de variáveis membros você pode definir também procedimentos membros. Você pode definir dois procedimentos especiais com classes: New e Delete. New é usado para definir variáveis membros para um objeto de uma classe. Delete é definido se você precisa fazer qualquer processo especial quando um objeto de uma classe é deletada. O exemplo seguinte mostra uma classe simples com 4 variáveis membro e quatro procedimentos membros: Class custObject LcustID As Long ‘ variável membro StrCustFirstName As String StrCustSurName As String CurBalance as Currency Sub New(Lid As Long, strFirstName As String, strSurname As String, curBal As Currency) ‘ Define o construtor lCustID = lID strCustFirstName = strFirstName strCustSurName = strSurName curBalance = curBal End Sub Sub Delete ‘ Define o destrutor Print “ Customer “ ; strCustfirstName ; “ “ ; strCustSurName ; “ deleted. “ End Sub Sub SetBalance(curBal As Currency) CurBalance = curBal End Sub Function curQueryBalance As Currecy CurQueryBalance = curBalance End Function End Class Você usa Dim para declarar variáveis objeto. Quando você usa Dim com um nome de uma classe, você está declarando uma referência a um objeto. Então, use New para criar um novo objeto e Set para atribuir o objeto à variável referenciada. Por exemplo: Dim custNew As custObject Set custNew = New custObject(14829, “ Chris “, “ Edwards “, 100.00) Por default, a variável membro criada é privada para a classe enquanto a função membro é pública. Isto é, você não pode se referenciar diretamente a uma variável membro, mas a uma função você pode. Por exemplo: CustNew.SetBalance(50.00) ‘ Certo CustNew.curBalance = 50.00 ‘ Errado CurCurrentBalance = custNew.curQueryblance ‘ Certo CurCurrentBalance = custNew.curBalance ‘ Errado O comandoWith permite um meio diferente de acessar procedimentos públicos e variáveis membros de um objeto. Por Exemplo: With custNew Call .SetBAlance(50.00) CurCurrentBalance = .curQueryBalance End With Você pode deletar um objeto usando a função Delete como mostrado: Delete custNew Se você tem definido uma subrotina Delete na sua classe, ela é executada antes do objeto ser excluído. Por exemplo, quando você exclui o objeto no seu exemplo, a subrotina Delete mostra “ Customer Chris Edwards deleted “. Veja a tabela 1.7 que exibe comandos e funções que são usadas com classes e objetos. Tabela 1.7 Funções e Comandos de Classes e Objetos Comandos e Funções Descrição Class Usado para declarar uma classe de objeto definido pelo usuário Delete Executa a subrotina Delete para objetos definidos pelo usuário IsObject Retorna verdadeiro se a expressão fornecida for um objeto New Usado para criar um novo objeto definido pelo usuário Set Associa um objeto a uma variável With Usado para acessar procedimentos públicos e variáveis de objeto 8.5 Objetos OLE e ActiveX Você pode acessar as classes, métodos, e propriedades de objetos OLE e ActiveX usando LotusScript e Notes. Isto quer dizer que você pode usar Notes para transferir dados de aplicativos como Microsoft Excel and Lotus WordPro, então trabalhar com os dados usando classes de objetos da aplicação. Você também pode programar objetos ActiveX como Lotus Components diretamente do LotusScript. A tabela 1.8 exibe comandos e funções para objetos OLE e ActiveX. Tabela 1.8 Funções e comandos de objetos OLE e ActiveX Comandos e Funções Descrição CreateObject Dado o nome de uma classe de objeto OLE, Cria um objeto OLE GetObject Dado o caminho de uma arquivo e o nome de uma classe OLE, abre um objeto OLE a partir de um arquivo IsObject Retorna verdadeiro se a expressão fornecida for um objeto Set Associa um objeto a uma variável Você pode criar um novo objeto OLE ou ActiveX usando a função CreatObject. Basta fornecer o nome da classe do objeto que você quer criar e o LotusScript cria o objeto. Se necessário, LotusScript iniciará a aplicação requerida para criar o objeto. O exemplo seguinte mostra como criar um nove documento WordPro e salvá-lo: Dim objDoc As Variant Set objDoc = CreateObject( “ WordPro.Application”) ObjDoc.NewDocument “ “, “ “, “C:\Docs\EBS.MWP”, “ “ “ “ “ “ ‘ Atualizando o documento aqui . . . objDoc.SaveAs “C:\Docs\REPORT.LWP”, “ “, “ “, False, True, False Call objDoc.Close(False) Para abrir um objeto existente, use GetObject. Você fornece o caminho do arquivo contento o objeto e opcionalmente o nome da classe. LotusScript acha e abre o objeto. O exemplo seguinte mostra como abrir um objeto WordPro: Dim objDoc As Variant ‘ Abre um documento WordPro Set objDoc = GetObject(“C:\DOCS\REPORT.LWP”) 9 Entendendo Operadores LotusScript No LotusScript, os operadores são usados para realizar os seguintes tipos de funções: • Aritmético; • Lógico; • Comparação; • Concatenação. Tabela 1.9 Operadores Aritméticos Operador Descrição Exemplo Resultado - Número negativo -34 -34 - Subtrai dois números 7 – 5 2 + Adiciona dois números 5 + 9 14 * Multiplica dois números 7 * 6 42 / Divide dois números 16 / 5 3.5 \ Divisão de inteiros 16 \ 5 3 Mod Resto de uma divisão inteira 16 Mod 5 1 ^ Potência de um número 5 ^ 2 25 Tabela 1.10 Operadores de Comparação Operador Descrição Exemplo Resultado = Retorna verdadeiro se dois valores são iguais 5 = 6 False <> >< Retorna verdadeiro se dois valores não são iguais 5 <> 6 True < Retorna verdadeiro se um valor é menor que o outro 7 < 9 True > Retorna verdadeiro se um valor é maior que o outro 7 > 9 False >= => Retorna verdadeiro se um valor é maior ou igual a outro 8 >=8 True <= =< Retorna verdadeiro se um valor é menor ou igual a outro 8 <= 8 True Is Retorna verdadeiro se dois objetos referenciam-se para o mesmo objeto ObjA Is ObjB True/False Tabela 1.11 Operadores Lógicos Operador Descrição Exemplo Resultado Not Negação lógica Not B Verdadeiro se B é falso; Falso do contrário And And lógico A And B Verdadeiro se A e B verdadeiros; Falso do contrário Or Or lógico A Or B Verdadeiro se A ou B verdadeiros; Falso do contrário Xor Or exclusivo A Xor B Verdadeiro se apenas um verdadeiro; Falso se A e B falsos ou verdadeiros Eqv Equivalência lógica A Eqv B Verdadeiro se A e B são falsos ou verdadeiros; Falso do contrário Imp Implicação lógica A Imp B Verdadeiro se A falso ou ambos são verdadeiros; Falso se A verdadeiro e B falso Tabela 1.12 Operadores de Strings Operador Descrição Exemplo Resultado & Concatena duas strings “AB”+”CD” “ABCD” + Concatena duas strings “AB”+ “CD” “ABCD” Like Retonra verdadeiro se uma string combina com outra string fornecida “ABC” Like “A*” True 10 Usando Funções e Subs No LotusScript, você pode definir funções e subs que serão chamadas para realizar funções específicas. Por exemplo, você pode definir uma função que converte uma data com dois dígitos de ano para uma data com quatro dígitos. A principal diferença entre uma função e uma sub é que a primeira retorna um valor e a segunda não. 10.1 Declarando funções e subs Você declara uma função usando a palavra-chave function como se segue: Function fIsWeekend(iDay As Integer) As Integer Você dá um nome a função, define a lista de argumentos que serão passados e finalmente define o tipo de valor que será retornado. Para retornar um valor, atribua este valor ao nome da função como é mostrado no exemplo seguinte: Function fIsWeekend(varDate As Variant) As Integer If Weekday(varDate) = 1 Or Weekday(varDate) = 7 then fIsWeekend = True Else fIsWeekend = false End If End Function Para definir subs não é preciso declarar um tipo de retorno. Uma declaração de sub típica é mostrada abaixo: Sub GoToBeach(strResort As String, iMilesToResort As Integer) 10.2 Chamando funções e subs Para chamar uma função basta atribuí-la a uma variável. Por exemplo: Dim fGoToWork As Integer Dim varToday As Variant VarToday = Today ‘ A função “ today ” retorna a data de hoje FGoToWork = fIsWeekend(varToday) Para chamar uma sub você pode usar um dos seguintes métodos: Call SubName(Arg1, Arg2, ...) Call SubName Arg1, Arg2 SubName(Arg1, Arg2, ....) Por exemplo: If fISWeekend(varToday) then Call GotoBeach(“ Maui “, 4000) End If Quando você passa valores a subs e funções, você precisa saber das duas seguintes maneiras que o LotusScript pode passar argumentos: • Por referência: LotusScript passa uma referência do argumento. A função trabalha com o argumento. Qualquer mudança feita no argumento reflete no original; • Por valor: LotusScript passa uma copia do argumento para a função. A função trabalha com a copia. Qualquer mudança na copia não afeta o original. Alguns argumentos, como arrays, listas e objetos são sempre passados por referência. Se você sempre quer um argumento passado por valor, use a palavra-chave ByVal quando você declara o argumento na declaração de uma função ou sub. No exemplo seguinte, o segundo argumento é passado por valor: Sub DeleteDocument(iDocNumber As Integer, ByVal strDocTitle As String) 11 Loop e Branch LotusScript proporciona uma variação de caminhos para controlar o fluxo de execução de um código. Você pode usar loops para executar repetidamente um conjunto de expressões (comandos) a partir de uma certa condição. Você pode usar branches para executar partes diferentes de um código baseado nos resultados de comparações ou no valor de variáveis. 11.1 For...Next Loops Você usa For...Next loop para executar um conjunto de expressões um certo número de vezes. Você especifica: • Uma variável de controle do loop; • Um valor inicial para a variável; • Um valor final para a variável; • Um valor de passo que será adicionado a variável depois de cada execução do loop. Se não especificado, o padrãoé 1. A primeira vez que o loop é executado, a variável de controle tem o valor inicial. Depois de cada execução, a variável de controle é atualizada adicionando o valor de passosa variável. Se você usa um valor de passo positivo, o loop acaba quando a variável de controle é maior ou igual ao valor final. Por exemplo: Dim iCount As Integer For iCount = 1 To 10 Step 2 ‘ Faz alguma coisa Next Neste exemplo, o loop é executado 5 vezes com iCount tendo os valores 1, 3, 5, 7 e 9. 11.2 ForAll Loops Nós já tivemos um primeiro contato com este tipo de loop quando falamos do uso de listas no LotusScript. Porém, você não usa ForAll loops apenas com listas. Por exemplo, você pode usá-lo para percorrer todas as visões de um banco de dados Notes: Dim session As New NotesSession Dim db As NotesDatabase Set db = session.CurrentDatabase ForAll varView In db.Views ‘ Faz alguma coisa End ForAll 11.3 Do...While Loops Use este tipo de loop para executar um bloco de expressões repetidamente enquanto uma condição especial é verdadeira. Antes do loop ser executado, a condição é testada. Se for verdadeira, o bloco é executado então. Se a condição for falsa, o loop não será executado e o controle é passado para a próxima expressão ou comando depois do loop. Por exemplo, o loop seguinte é executado três vezes e mostra 17, 18 e 19: Dim iCount As Integer Dim iMax As Integer iMax = 20 iCount = 17 Do While iCOunt < iMax Print iCount iCount = iCount + 1 Loop Uma alternativa para o loop acima é testar a condição depois do loop ser executado. Aqui, o loop é executado pelo menos uma vez. Por exemplo: Dim iCount As Integer Dim iMax As Integer iMax = 20 iCount = 17 Do Print iCount iCount = iCount + 1 Loop While iCOunt < iMax 11.4 Do...Until Loops Com este tipo de loop, o conjunto de expressões dentro dele é executado até que sua condição seja verdadeira. Veja o exemplo: Dim iCount As Integer Dim iMax As Integer iMax = 20 iCount = 17 Do Until iCount < iMax Print iCount iCount = iCount + 1 Loop Neste exemplo o loop nunca será executado porque a condição é verdadeira antes de entrar no loop. A condição pode ser executada depois do loop ser executado. Aqui, o loop também é executado pelo menos uma vez. Por exemplo: Dim iCount As Integer Dim iMax As Integer iMax = 20 iCount = 17 Do Print iCount iCount = iCount + 1 Loop Until iCount < iMax 11.5 If...Then...Else branches Você pode usar If...Then...Else para selecionar qual expressão ou comando que é executado a partir de uma condição específica. Se a condição for verdadeira, um conjunto de expressões é executada; se a condição for falsa, um conjunto diferente é executado. Por exemplo: If iCount > iMax Then Print “ Muitos itens “ Else Print iCount; “ iten(s) “ End If Você pode omitir a parte Else da expressão se você quer somente 6executar um conjunto de expressões quando uma condição é verdadeira. Por exemplo: If iDaysOverdue > 14 Print “ Tempo de comprar mais peças “ End If 11.6 Select...Case branches Esta expressão deixa você selecionar um bloco de expressões para executar baseado no valor de uma expressão. Por exemplo: Select Case iBoxesOrdered Case Is <= 0 : Call ProcessInvalidOrder(iBoxesOrdered) Case 1 : ProcessSmallOrder(iBoxesOrdered) Case 2 to 15 : Call ProcessMediumOrder(iBoxesOrdered) Case 16 to 31 : Call ProcessLargeOrder(iBoxesOrdered) Case Else : Call ProcessHugeOrder(iBoxesOrdered) End Select 11.7 GoSub and On...GoSub Com uma sub ou uma função, você pode usar GoSub and On...GoSub para desviar para uma label específica no procedimento. Uma label é simplismente uma maneira de identificar um lugar no seu código. O código na label pode executar um comando de retorno para a expressão seguinte ao GoSub. Por exemplo, o código seguinte desvia para label lblLogError se a quantidade do pedio for negativa: Sub ProcessInvalidOrder(iOrderQuantity As Integer) If iOrderQuantity < 0 Then GoSub lblLOgError End If Exit Sub lblLogError: Call LogError Return End Sub Você pode usar On...GoSub para desviar para uma label de um conjunto de labels a partir de um valor fornecido. Veja o exemplo: On iErrorNumber GoSub lblA, lblB, lblC Se iErrorNumber é 1, o programa desvia para lblA; se iErrorNumber é 2, o programa desvia para lblB; se iErrorNumber é 3, o programa desvia para lblC. Se iErrorNumber é 0 ou maior que 3, a expressão On...GoSub é ignorada. A desvantagem de usar o comando GoTo(On...GoTo) ao invés de GoSub(On...GoSub) é que naquele não podemos usar o comando return. 12 Trabalhando com Strings LotusSript tem uma grande quantidade de funções que você pode usar para manipular string. Nesta sessão nós veremos: • Criação de SubStrings; • Formatando Strings; • Achando e comparando Strings. A tabela 1.13 exibe uma lista de comandos e funções que você pode usar. Tabela 1.13 Funções e Comandos para String Funções e Comandos Descrição Asc Dado uma string, retorna o código de caracter da string Chr Dado um código de caracter, retorna o caracter correspondente ao código Format Formata uma string de acordo com o tipo de formato especificado InStr Dado duas strings, retorna a posição do caracter(InStr) onde uma string ocorre primeiro em outra. Lcase Converte os caracteres de uma string em minúsculos Left Dado uma string e um número n, retorna n caracteres mais a esquerda da string Len Retorna o número de caracteres de uma string Lset Adiciona uma string A a outra B onde A é truncada se for maior que B ou é preenchido com espaços a direita quando A menor que B. Ltrim Remove os espaços excedentes a esquerda de uma string Mid Retorna uma substring de uma string dado o início e o fim da substring Right Dado uma string e um número n, retorna n caracteres mais a direita da string Rset Adiciona uma string em uma outra alinhada a direita. Se a primeira for maior que a Segunda, é colocado espaços adicionais no seu lado esquerdo. Do contrário, só os elementos mais a esquerda da substring permanecem na string Rtrim Remove os espaços em brancos a direita de uma string Space Adiciona n espaços a um string StrCompare Compara duas strings de acordo com o método de comparação Trim Remove espaços a direta e a esquerda de uma string Ucase Converte os caracteres de uma string em maiúsculos Uchr Retorna o caracter correspondente a um número no código Unicode Uni Dado uma string, retorna o código de caracter Unicode, para o primeiro caracter na string Ustring Dado uma dimensão e também um código, Unicode ou um caracter, retorna uma string dos caracteres especificados do tamanho fornecido 12.1 Criando strings Você usa Dim para declarar variáveis do tipo string. O tamanho de uma string pode ser fixo ou variado. Veja o exemplo: Dim strVariableLength As String Dim strFixedLength As String * 20 Como declarado, strFixedLength contem 20 caracteres. Se você quer alterar uma string para um tamanho particular após ela ser declarada, você pode usar a função Space$ para atribuir a string um número específico de espaços. Por exemplo: Dim strName As String StrName = Space$(32) De forma alternativa, você pode usar a função String$ para atribuir a string qualquer número de um caracter específico, código ASCII e UniCode. Strname = String$(32, “ x ” ) NOTA A função Asc retorna o código de caracter ASCII correspondente ao caracter fornecido. Da mesma forma, a função Uni retorna o código de caracter Unicode de um caracter. Se você realmente sabe o código apropriado, você pode usar o caracter correspondente usando Chr para ASCII e Uchr para código Unicode. 12.2 Criando substrings A partir de uma string você pode usar tipos diferentes de funções para criar substrings. Com as funções Left e Left$, você pode substrings consistindo de um número específico de caracteres iniciando a esquerda da string. O exemplo seguinte mostra como: Dim strName As String Dim strFirstName As String StrName = “ John G Testar “ StrFirstname = Left$(strName, 4) ‘ O strFirstNamepassa a ser John Da mesma forma, você pode usar as funções Right e Right$ para extrair caracters do lado direito da string. Por exemplo: StrSurname = Right$(strName, 6) ‘ O strSurName passa a ser Testar Use as funções Mid e Mid$ para extrair caracteres de qualquer parte da string. Você fornece a posição inicial e o número de caracteres como mostrado: StrMiddleInitial = Mid$(strName, 6, 1) ‘ O strMiddleInitial passa a ser G Para achar o tamanho de uma string, você pode usar a função Len. Por exemplo: Dim iLength As Integer ILength = Len(strName) ‘ A variável recebe o valor 13 NOTA Muitas funções LotusScript têm duas versões, uma que termina com $ e outra que não termina com $. Se você usa a primeira versão, o tipo de dado de retorno é String. Se você usa a segunda versão, o tipo de dado de retorno é Variant. Você pode remover espaços em branco de uma string usando Trim, LTrim, e RTrim. Como seus nomes sugerem, Trim remove espaços a esqueda e direita de uma string, LTrim remove espaços a esquerda da string e RTrim remove espaços a direita da string. CUIDADO Muitas funções de string tem uma versão que trabalha com caracteres, tal como Left, e outra que trabalha com bytes, tal como LeftB. Isto é bom quando um caracter é armazenado em um byte. Porém, por causa do método de codificação UniCode usado pelo LotusScript representar cada caracter por dois bytes de código de caracter, você dever estar precavido ao usar as funções de string orientadas a bytes como LeftB, LenB, MidB e RightB. Elas podem dar resultados inesperados com strings Unicode. Use Left, Mid e Right ao invés delas. 12.3 Formatando strings Você pode mudar os caracteres de uma string para minúsculo usando a função Lcase ou para maiúsculo usando a função Ucase. Para formatos mais avançados use a função Format. Você pode usar esta função para formatar string, data/tempo ou números de acordo com uma string. Se você quer ter certeza que strings estão corretamente alinhadas, use as funções LSet ( alinhamento a esquerda ) e RSet ( alinhamento a direita ). Por Exemplo: Dim strLabel As String StrLabel = Space$(8) LSet strLabel = “ABC” ‘ Atribui a strLabel “ABC “ porque o tamanho corrente da variável é 8. RSet strLabel = “XYZ” ‘ Atribui XYZ a variável StrLabel = “ABC” 12.4 Encontrando e comparando strings Se você precisa encontrar uma string dentro de outra string, você pode usar a função Instr para achar a posição do primeiro caracter da string procurada, fornecendo o seguinte: • A posição inicial onde será feito a busca na string. O padrão é o início da string; • A string a ser verificada; • A string a ser procurada; • Um número para indicar se a procura faz distinção entre caracteres maiúsculos e minúsculos ou não. Você pode comparar duas strings usando a função strCompare. Para usuá-la basta fornecer o seguinte: • As duas strings a serem comparadas; • Um número para identificar o tipo de comparação. A função retorna: • -1 se a primeira string é menor que a segunda; • 0 se as strings são iguais; • 1 se a primeira string for maior que a Segunda. 13 Manipulação de Datas e Horas As funções LotusScript que você pode usar para manipular datas e horas são mostradas na tabela 1.14 Tabela 1.14 Funções de manipulação de datas e horas Comandos e Funções Descrição Date Retorna a data e hora corrente do sistema ou altera a mesma DateNumber Dado um ano, mês e dia do mês, retorma o valor data/hora correspondente DateValue Dado uma string representando uma data, retorna um um valor data/hora correspondente Day Dado um valor data/hora, retorna o dia do mês Hour Dado um valor data/hora, retorna a hora IsDate Retorna verdadeiro se uma expressão dada representa uma data Minute Dado um valor data/hora, renorta os minutos Month Dado um valor data/hora, renorta o mês Now Retorna a data corrente do sistema como um valor data/hora Second Dado um valor data/hora, renorta os segundos Time Retorna o hora de sistema corrente como um valor data/hora TimeNumber Dado uma hora, minuto e segundo, retorna o valor data/hora correspondente Timer Retorna o número de segundos que tenham decorrido desde meia-noite TimeValue Dado uma string representando uma hora, retorna o valor data/hora correspondente Today O mesmo da função Date Weekday Dado um valor data/hora, retorna um número representando um dia da semana Year Dado uma valor data/hora, retorna o ano. Veja os exemplos: Print DateNumber(1992, 5, 29) ‘ Exibe 5/29/92 Print DateValue(“May 29, 1992”) ‘ Exibe 5/29/1992 Print DateNumber(1992-2,5-3,29-12) ‘ Exibe 2/17/90 Print TimeNumber(20,40,3) ‘ Exibe 8:40:3 PM PrintTimeValue(“20:40”) ‘ Exibe 8:40 PM DICA Você pode usar a Função Timer para cronometrar partes de seu programa. Por exemplo, para checar quanto tempo é necessário para ler um arquivo grande de um servidor de arquivo, chame a função Timer antes e depois de ler o arquivo e subtraia os dois valores. Uma vez tendo um valor data/hora, você pode usar Year, Day, Hour, Minute e Segundos para extrair suas partes. Você usa a função WeekDay para retornar um número que representa o dia da semana. 14 Trabalhando com Arquivos Há muitas maneiras de trabalhar com arquivos usando LotusScript. A tabela 1.15 mostra as funções disponíveis. Tabela 1.15 Funções para arquivos Comandos e Funções Descrição Close Fecha um ou mais arquivos abertos. EOF Indica se chegou o fim do arquivo. A condição exata para determinar o fim do arquivo depende do tipo de arquivo a ser lido. FileAttr Dado um número de arquivo e um flag, retorna o tipo de acesso para um arquivo, ou o título de arquivo de sistema operacional para o arquivo. FileCopy Copia um arquivo. FileDateTime Dado um nome de arquivo, retorna uma string que contem a data e a hora que o arquivo foi criado ou modificado FileLen Dado um nome de arquivo, retorna seu tamanho em bytes FreeFile Retorna um número de arquivo que pode ser usado para abrí-lo Get Usado para ler dados de um arquivo randômico ou binário GetFileAttr Dado um nome de arquivo ou diretório, retorna seus atributos Input # Dado um número de arquivo, lê dados de um arquivo sequencial Input Dado um número de arquivo, lê um número específico de caracteres de um arquivo seqüencial ou binário InputB Dado um número de arquivo, lê um número específico de bytes de um arquivo sequencial ou binário Kill Deleta um arquivo Line Input# Dado um número de arquivo, retorna uma linha de um arquivo sequencial LOC Dado um número de arquivo, retorna a posição do arquivo de ponteiro no arquivo Lock Dado um número de arquivo, loca o arquivo, ou um registro ou uma seqüência de bytes de um arquivo. Outro processo não pode atualizá-lo(s). LOF Dado um número de arquivo, retorna o tamanho do arquivo Name Renomeia um arquivo ou diretório Open Abre um arquivo Print # Imprime uma lista de variáveis de um arquivo Put Escreve dados em um arquivo randômico ou binário Reset Fecha todos os arquivos abertos Seek Dado um número de arquivo, retorna a posição atual do arquivo de ponteiro. Também, dado um número de arquivo e uma posição, posiciona o ponteiro o ponteiro do arquivo de ponteiro SetFileAttr Altera os atributos de sistema de arquivo de um arquivo Spc Insere um número específico de espaços em um comando Print ou Print(#) Tab Move a posição de impressão para uma coluna específica Width # Usado para especificar o tamanho da linha de um arquivo Write # Escreve uma lista de variáveis para um arquivo Unlock Libera um arquivo locado pelo comando Lock. LotusScript pode trabalhar com três tipos de arquivos mostrados na tabela 1.16. Tabela 1.16 Tipos de Arquivos Tipo de Arquivo Descrição Seqüencial Um arquivo de texto Randômico Um arquivo com registros formatados Binário Um arquivo com uma estrutura de definição de programa 14.1 Obtendo informações de arquivo Se você tem o nome de um arquivo, você pode usar os comandos GetFileAttr, FileDateTime e FileLen para acessar informações de arquivo. Use GetFileAttr para checaros atributos de um arquivo. A função FileDateTime retorna a data de última modificação do arquivo e FileLen o tamanho do arquivo em bytes. Por exemplo, o código seguinte checa se um arquivo está ocultado, e se estiver, modifica seus atributos de ocultação: %Incluce “LSCONST.LSS” Dim iAttributes As Integer IAttributes = GetFileAttr(“C:\TEMP.TXT”) If (iAttributes And ATTR_HIDDEN) Then Call SetFIleAttr(“C:\TEMP.TXT”, ATTR_READONLY) End If 14.2 Criando e abrindo arquivos Para abrir um arquivo seqüencial, use os comandos FreeFile e Open. Use FreeFile para alocar um novo número de arquivo para o arquivo. Por exemplo, para abrir um novo arquivo seqüencial para gravação: Dim iFileNumber As Integer IFileNumber = FreeFile Open “C:\RESULTS.TXT” For Output As iFileNumber Você pode abrir um arquivo seqüencial para leitura e gravação. Um vez o arquivo aberto, você usa o número de arquivo para se referenciar a ele. Para abrir um arquivo randômico, você usa os comandos FreeFile e Open, e especifica as opções randômicas no comando Open. Por exemplo: Dim iFileNumber As Integer IFileNumber = FreeFile Open “C:\RECORDS.DAT” For Random As iFileNumber Len = 80 A função Len é usada para indicar o número de bytes por registro no arquivo. Use a opção Binary no comando Open para abrir um arquivo binário. Por exemplo: Dim iFileNumber As Integer IFileNumber = FreeFile Open “C:\RECORDS.DAT” For Binary As iFileNumber Uma vez tendo aberto o arquivo, você pode usar a função LOF para checar o número de bytes no arquivo. 14.3 Lendo arquivos Você pode usar os comandos Line Input # e Input #, ou a função Input, para ler dados de um arquivo seqüencial aberto. Line Input # lê uma linha de dado de um arquivo. Por exemplo: Do Until EOF(iFileNumber) Line Input #iFileNumber, strInputLine Loop A função EOF retorna verdadeiro quando chega no fim do arquivo. Use Input # para ler dados de uma linha em um arquivo e colocá-la em um conjunto de variáveis. Por exemplo, se seu arquivo tem linhas no formato: 14829, “Chris”, “Edwards”, 100.00 25674, “Marlene”, “Metcalfe”, 850.00 Você pode usar o código abaixo para ler a linha de um arquivo: Dim lID As Long Dim strFirstName As String Dim strSurname As String Dim curBalance As Currency ‘ . . . Abre um arquivo como no exemplo anterior Input #iFileNumber, lID, strFirstName, strSurName, curBalance A função Input é outra opção para ler dados de um arquivo sequencial. Com Input, você fornece o número de caracteres a ler. Por exemplo, você poderia ler o número de ID do início de uma linha no arquivo usando o código seguinte: StrID = Input$(5,iFileNumber) Quando você está trabalhando com arquivos binários ou randômicos, use os comandos Seek e Get para achar e ler registros de um arquivo. 14.4 Escrevendo em arquivos Você pode usar Write # para escrever os conteúdos de um conjunto de variáveis para um arquivo seqüencial. Por exemplo, para escrever uma linha em um arquivo aberto: Dim strFirstName As String Dim strSurname As String Dim curBalance As Currency ‘ . . . Abre o arquivo para gravação como no exemplo anterior ‘ . . . Adiciona valores para as variáveis Write #iFileNumber, lID, strFirstName, strSurname, curBalance Write # automaticamente adiciona caracteres formatados para a linha de gravação onde os valores estarão separados por vírgulas. Você também pode usar o comando Print # para escrever dados em um arquivo sequencial. Porém, quando você usa Print #, você deve adicionar seus próprios caracteres formatados. Há poucas funções que você pode usar com Print # para ajudar a formatar a linha. Use Spc para adicionar um número específico de espaços na linha e Tab para mover a posição de impressão para uma posição específica na linha. Por exemplo: StrFirstName = “Pat” StrSurname = “Green” Print #iFileNumber, “*”; Tab(4); strFirstname; Spc(2); strSuname;”*” ‘ Grava Pat Green Use Put para escrever dados em arquivos binários ou randômicos. Em alguns casos você pode querer bloquear acesso a um arquivo até seu programa terminar de usá-lo. LotusScript proporciona os comandos Lock e UnLock para você fazer isso. 14.5 Fechando arquivos Ao terminar de usar um arquivo, você pode fechá-lo usando o comando Close. Se você quer fechar todos os arquivos que estão abertos, você pode usar o comando Reset. 14.6 Excluindo arquivos Para deletar um arquivo use o comando Kill. Use o comando com o nome do arquivo como se segue: Kill “C:\TEMP.TXT” 15 Leitura/Gravação Quando você está usando LotusScript com Notes, você muitas vezes usa formulários Notes para obter informações de usuários e exibir os resultados. Mas, algumas vezes, você precisa usar métodos diferentes para se comunicar com o usuário. As funções mostradas na tabela 1.17 oferece a você algumas alternativas: Tabela 1.17 Funções de Leitura/Gravação Comandos e Funções Descrição Beep Alarma InputBox Mostra uma caixa de diálogo onde o usuário pode entrar com um valor MessageBox Mostra uma caixa de mensagem ao usuário Print Escreve algum texto na barra de status do Notes Use InputBox para mostrar uma caixa de diálogo com um campo de entrada. O usuário pode entrar com uma string no campo e clicar OK. Você pode acessar a string digitada como se segue: StrName = InputBox$(“ Por favor, entre com su nome “) Se você quiser, você pode espesificar um título para a caixa de diálogo. Por exemplo: IOrderQuantity = Cint(InputBox$(Entre com a quantidade requisitada”, “ Quantidade requisitada”, “10”) Você pode mostrar valores de seu código usando tanto a função MessageBox como Print. Use MessageBox para exibir uma caixa de diálogo contento uma mensagem de sua escolha. Por exemplo, se você quer mostrar uma mensagem para confirmar o pedido, você pode usar: MessageBox( “Você está para confirmar um pedido ” & & CStr(iOrderQuantity) & “ Está correto?”, MB_YESNO, “ Confirmar pedido “) A constante MB_YESNO é uma entre muitas constantes relativas a função MessageBox, definida no arquivo LSCONST.LSS. Constantes adicionais estão disponíveis e você pode usar para adicionar ícones e botões a caixa de diálogo. Veja a ‘MsgBox parameters’ no arquivo LSCONST.LSS para mais detalhes. A função Print exibe uma linha de texto na barra de status do Notes. Isto pode ser bastante interessante se você está escrevendo um agente LotusScript que pode levar algum tempo para executar, porque isto pode lhe dar uma forma para manter o usuário informado sobre o progresso do agente. Por exemplo, em um agente que processa documentos em um banco de dados, você pode usar: Print “ Documento processando “ & CStr(iCurDoc) & “ de “& CStr(iTotalDocs) & “ . . . O código fica dentro do loop de processamento principal mostrando uma constante atualização da mensagem contida na barra de status. 16 Funções Mátemáticas As funções matemáticas do LotusScript são mostradas na tabela 1.18 Tabela 1.18 funções matemáticas Comandos e Funções Descrição Abs Retorna o valor absoluto de um número Acos Dado um número entre 1 e –1, retorna seu arco coseno em radianos Asin Dado um número entre 1 e –1, retorna seu arco seno em radianos Atn Dado um número, retorna sua arco tangente em radianos Atn2 Dado as coordenadas de um ponto no plano cartesiano, retorna o ângulo em radianos Cos Dado um ângulo em radianos, retorna seu coseno Exp Dado um número, retorna o exponencial de um número Fix Retorna a parte inteira de um número Fraction Retorna a parte fracional de um número Int Retorna o número inteiro que é menor ou igual ao fornecido Log Retorna o logarítmo natural de um número Round Arredonda um número Sgn Retorna –1, 0 ou 1 se o número for negativo, zero ou positivo Sin Dado um número em radianos, retorna seu seno Sqr Retorna a raiz quadrada de um número Tan Dado um ângulo em radianos, retorna sua tangente 16.1 Ocultando Erros em Tempo de Execução LotusScript detecta dois tipos de erros: • Erros de compilação; • Erros em tempo de execução. Erros de compilação são devidoerros em seu código de LotusScript. Você não pode executar seu código até consertar todos os erros de compilação detectados. Nós olharemos o Ambiente de Desenvolvilmento Integrado do Notes (IDE) no próximo capítulo e verificar algumas das características que ajudam a reduzir o número de erros de compilação que você deve consertar. Erros em tempo de execução são erros que ocorrem quando o código está em execução. Por exemplo, erro ocorre quando o script tenta abrir um arquivo que foi deletado. LotusScript identifica muitos erros em tempo de execução e atribui a cada um um número e uma mensagem de erro descrevendo o erro. Você pode adicionar código aos seus programas para proporcionar ocultação especial para todos os erros. Você pode definir seus próprios erros se quiser e atribuir um número de erro e uma mensagem. A tabela 1.19 mostra as funções que estão relacionadas com ocultação de erros. Tabela 1.19 Funções de ocultação de erros Comandos e Funções Descrição Erl Retorna o número da linha do erro mais recente Err Retorna o número do erro dependendo como ele ocorra Error Retorna uma mensagem do erro dependendo como ele ocorra On Error Desvia a execução do código para uma função quando ocorre um erro Resume Determina onde o programa recomeça a execução de pois de um erro Além de detectar um erro em tempo de execução, o LotusScript armazena as seguintes informações: • O número da linha onde ocorreu o erro; • O número do erro; • A mensagem de erro. Você pode usar a função Erl para obter o número da linha onde ocorreu o erro mais recente. A função Err retorna o número de erro mais recente e Err$ a mensagem de erro associada. Uma vez o LotusScript tendo armazenado estas informações, ele procura por um comando On Error, no procedimento corrente, que possa ocultar o erro. Se ele não achá-lo, o LotusScript mostra sua própria mensagem de erro associada ao erro que parou a execução do script. Se um comando On Error for achada, LotusScript transfere o controle para ele. O comando On Error pode também fazer o seguinte: • Ignorar o erro. Se você especificar On Error Resume Next, é ignorado a linha onde ocorreu o erro e executada a linha logo depois; • Especifica uma Label para executar seu código. Se você especificar On Error Go To seguido do nome de uma label, o LotusScript transfere o controle para o código na label. O código deve ocultar o erro. Use o comando Resume para reiniciar o script. O exemplo seguinte mostra como definir seu próprio erro e criar um código que oculte o erro. O exemplo Sub define um erro com número 600 e inicializa a rotina de ocultação do erro que mostra o número do erro e o número da linha onde ocorreu o erro. O controle é então retornado para a linha seguinte a que ocorreu o erro forçado: Sub ErrorTest Const ERR_MY_ERROR = 600 ‘ Define um erro On Error ERR_MY_ERROR GoTo lblHandleError ‘ Define o comando que vai detectar este erro Error ERR_MY_ERROR ‘ Força o erro Print “Finished” ‘ Retorna a execução para este ponto Exit Sub LblHandleError: Print “ Número do erro “; Err; “ ocorreu na linha “ ; Erl Resume Next End Sub. CAPÍTULO 2 - USANDO O LOTUS SCRIPT NO LOTUS NOTES • Aprenda como usar o Ambiente de Desenvolvimento Integrado do Notes para usar o LotusScript. Você usa o Ambiente de Desenvolvimento Integrado para entrar, compilar e depurar seus programas do LotusScript. • Aprenda como usar o editor Script. O editor Script permite a você entrar e atualizar scripts. Ele entende a sintaxe do LotusScript e lhe ajuda formatando automaticamente seu código e checando erros de sintaxe à medida que você digita. • Aprenda como usar o depurador do LotusScript. O depurador do LotusScript é uma poderosa ferramenta que você pode usar para examinar seus programas LotusScript que estão rodando. Você pode percorrer seu código uma linha por vez, se necessário, bem como checar e atualizar conteúdos de variáveis a qualquer momento. • Veja as técnicas de depuração do LotusScript. Examinamos algumas técnicas úteis que você pode utilizar quando está testando e depurando programas LotusScript. • Entendendo como acessar bibliotecas de links dinâmicos no LotusScript Você pode extender o poder do LotusScript chamando as funções dentro de bibliotecas de links dinâmicos. Nós olharemos como fazer isto. • Aprenda como incluir extensões LotusScript em seus scripts. Extensões de LotusScript são adicionais as características básicas do LotusScript. Capítulo 1, “LotusScript Básico”, introduziu você ao LotusScript e explicou algumas de suas característica básicas e sintaxe. Neste capítulo você usará estas características e aprende como usar o LotusScript com o Notes. O LotusScript estende a interface de programação do Notes além de @functions e @commands. Você usa o LotusScript para escrever scripts para executar várias funções e tarefas no Notes. Você adiciona scripts à vários objetos no Notes, dependendo do que você necessita alcançar. Por exemplo você pode usar o LotusScript para criar um agente para atualizar documentos de forma programada. O LotusScript proporciona algumas capacidades que as fórmulas do Notes não têm, como a habilidade de manipular bancos de dados ACL do Notes, e a habilidade de imprimir uma lista de todos os bancos de dados que residem em um servidor ou disco rígido local. Você entra com o código LotusScript dentro do Notes usando o Ambiente de Desenvolvimento Integrado do Notes(IDE). O Notes contém um compilador LotusScript integral que traduz seu código em um LotusScript executável. Neste capítulo você irá: • Aprender como usar o Ambiente de Desenvolvimento Integrado do Notes para usar o LotusScript; • Aprender como usar o editor Script; • Aprender como usar o depurador do LotusScript; • Ver algumas técnicas de depuração do LotusScript; • Entender como acessar Bibliotecas de Links Dinâmicos (DLL) a partir do LotusScript. • Aprender como incluir extensões de LotusScript no seu script 1 Ambiente de Desenvolvimento Integrado do Notes O Ambiente de Desenvolvimento Integrado no Notes (IDE) permite à você criar formulários, visões e agentes de maneira consistente. No entanto, para cada formulário, visão ou agente que você crie, você utilizará um diferente IDE. Apesar de cada IDE ser diferente, eles compartilham muitas características comuns, tais como o Editor Script e características do Depurador. Descreveremos o IDE para Formulários, mas o Editor Script e o Depurador trabalham de forma similar nos outros IDE’s. Os IDE’s de Formulários são mostrados conforme a Figura 2.1. Figura 2.1 Aqui está um exemplo de Formulários IDE. A tela está dividida em três áreas ou janelas. 1.1 Área de Layout do Formulário A janela no lado esquerdo superior da tela é a Janela de Layout do Formulário (Form Layout Pane). Você usa esta área para criar o layout de seu formulário. 1.2 Painel de Ação O painel no lado direito superior da tela é a Janela de Ação (Action Pane). Você pode usar esta janela para definir as ações que estão associadas ao formulário. Por default, a Janela de Ação não é visível quando você abre o IDE pela primeira vez. Para mostrar a Janela de Ação, selecione menu Exibir/Painel de Ação utilizando a barra de menu do Notes, ou arraste a barra vertical da borda direita da tela para a esquerda até que a janela de Ação esteja do tamanho que você deseja. Finalmente, se você é um fã do “SmartIcon” você pode clicar as janelas Exibir /Mostrar/Hide Action usando o SmartIcon. Para esconder a janela de Ação, você pode tanto selecionar as janelas Exibir/Painel de Ação novamente para desabilitar o menu de opções como arrastar a barra vertical para o lado direito da tela ou pode clicar no botão Exibir/Mostrar/Ocultar Painel de Ação usando o SmartIcon. 1.3 Painel de Estrutura O Painel de Estrutura é o painel mostrada na parte inferior da tela. É nestaárea que você digita seu código do LotusScript. Por default, o Painel de Estrutura é visível. Se você deseja ocultá-la, selecione as janelas Exibir/Painel de Estrutura utilizando a barra de menu do Notes ou arraste a barra horizontal (aquela que separa o Painel de Estrutura do restante da janela) para baixo da parte inferior da tela. O Painel de Estrutura consiste de um número de componentes que você usa para digitar o seu código do LotusScript. Vamos ver cada um por vez. 1.3.1 Caixa de Desenho A Caixa de Desenho, mostrada na figura 2.2, é uma caixa “drop-down” que você usa para selecionar o objeto ou a ação que você deseja programar. Figura 2.2 A Caixa de Definição mostra o nome do objeto ou ação que você está programando. Por exemplo, a Figura 2.2 mostra que o objeto formulário está constantemente sendo programado para exibir uma mensagem no seu título. Você pode usar a Caixa de Definição para escolher rapidamente outro objeto ou ação. Para programar um objeto diferente, clique a seta da Caixa de Definição. Será exibido uma lista de ações ou objetos que você pode programar como mostrado na Figura 2.3. Então, selecione o objeto ou ação que você deseja programar. Figura 2.3 Usando a Caixa de Definição para selecionar um objeto para programar. 1.3.2 Caixa de Eventos O Painel de Estrutura contém uma segunda caixa “drop-down”, a Caixa de Evento, como mostrado na Figura 2.4. Fig. 2.4 A Caixa de Eventos mostra o nome do evento que você está programando. A Caixa de Evento mostra tudo dos eventos que estão associados com o objeto ou ação correntemente selecionados. A Caixa de Evento mostra o evento correntemente sendo programado. Por exemplo, na Figura 2.4, o evento que está sendo programado é o evento “Título da Janela” no formulário. Para programar um evento diferente, simplesmente selecione-o da lista contida na Caixa de Evento. Note que se o objeto ou ação selecionados não possuam eventos associados com eles, tais como uma das ações de formulários padrões, a Caixa de Eventos não é mostrada. A Figura 2.5 mostra a aparência do Painel de Estrututa quando a ação do documento de edição padrão é selecionada. Figura 2.5 Este é a aparência do Painel de Estrututa quando uma ação de formulário padrão é selecionada. NOTA Se você adicionar suas próprias funções e “subs” LotusScript à um formulário, eles serão mostrados na Caixa de Evento quando você selecionar os objetos Globais para o formulário. 1.3.3 Run Radio Button Dependendo do tipo do objeto que você selecionou na Caixa de Definição, você pode usar o “Run Radio Button”(Figura 2.6) para selecionar o tipo de programação para o objeto (veja Figura 2.6). Você possui três escolhas: • Ação(ões) Simple(s) • Fórmula • Script Figura 2.6 O Run Radio buttons deixa-o selecionar LotusScript como uma opção de programação 1.3.4 O Script Browser Depois que você selecionar o botão “Script radio” você poderá mostrar o Script Browser através da caixa de visualização do Browser (Show Browser Check Box). O Script Browser é mostrado na Figura 2.7. Figura 2.7 Este é o Script Browser. O browser permite-lhe mostrar o seguinte: • Uma lista de funções e características disponíveis no LotusScript. • Todas as classes do Notes e seus métodos, propriedades e eventos associados (falaremos de todos esses assuntos no próximo capítulo). • Todas as classes “OLE2” e “ActuveX” que estão disponíveis para você. Você seleciona o que você deseja mostrar usando “browser combo box”. Você pode selecionar o seguinte: • Linguagem LotusScript • Classes do Notes • Constantes do Notes • Funções e subs do Notes • Variáveis do Notes • Classes OLE2 Por exemplo, se você deseja ver quais as funções que o LotusScript tem disponíveis para tratar erros, siga os seguintes passos: 1. Se a opção ainda não estiver selecionada, selecione Linguagem LotusScript no browser combo box. Uma lista de categorias de funções será mostrada; 2. Clique na seta próximo Tratamento de Erros (Error Handling). Os nomes e sintaxe das funções de Tratamento de Erros do LotusScript serão mostradas (veja Figura 2.8). Fig. 2.8 As funções de Tratamento de Erros (Error-handling functions) do LotusScript mostradas no Script Browser. Se você deseja adicionar um item do browser ao código, (tal como um nome de função), siga os seguintes passos: 1. Posicione o cursor no código do LotusScript aonde você deseja inserir o item; 2. No Script Browser, clique duas vezes no item que deseja inserir. O item é inserido dentro do código aonde você colocou o cursor. O browser pode ser muito útil quando você deseja fazer o seguinte: • Checar a disponibilidade de uma função específica; • Checar parâmetros para uma função; • Checar as propriedades, métodos e eventos de uma classe Notes, OLE2 ou ActiveX. 1.3.5 O Editor Script Você vai digitar seu código de LotusScript na área de Painel de Estrutura chamada o Editor Script. O Editor Script entende a sintaxe do LotusScript e lhe ajuda revisando o script assim que você digita. O Editor Script: • Checa erros de sintaxe assim que você entra no Script; • Automaticamente torna maiúsculas palavras chaves do LotusScript; • Formata o script indentando automaticamente blocos do código; • Completa certos tipos de “statements”, do tipo “If...Then” e “For...Next” loops; • Fornece cores para mostrar diferentes tipos de expressões no seu script. Veremos mais detalhadamente como usar o Editor Script posteriormente neste capítulo. 1.3.6 Caixa de Erros A Caixa de Erros (Error combo box) é usada para mostrar erros de sintaxe e compilação. Por exemplo, Figura 2.9 mostra como um simples erro de sintaxe é detectado e apresentado. Fig. 2.9 Como um erro de sintaxe é mostrado. 2 Usando o Editor Script Se você pode usar um editor de texto, você pode usar o Editor Script! Ele trabalha exatamente igual à maioria dos editores de texto e contém as combinações familiares de teclas para mover o cursor e para cortar, copiar e colar textos. Por exemplo: • “Home” move o cursor para o início da linha corrente. • “End” move o cursor para o fim da linha corrente. • “Ctrl+C” copia o texto selecionado • “Ctrl+V” cola o texto selecionado CUIDADO O Editor Script não tem a função “Undo”, então tenha cuidado quando estiver editando algo. 2.1 Configurando o Editor Script Novo para o Editor Script apartir da versão 4.5 do Notes é sua habilidade para escolher a fonte usada pelo mesmo e para mostrar diferentes tipos de “statements” em cores diferentes. Você pode escolher a cor para: • Identificadores; • Palavras chave; • Comentários; • Diretivas; • Erros. Para definir fontes e cores, siga os seguintes passos: 1. “Right-click” no Editor Script. Um menu “Pop-up” será mostrado. 2. Selecione propriedades na janela de Desenho. As propriedades da janela de Desenho são mostradas nas propriedades “InfoBox”, como mostrado na Figura 2.10. Fig. 2.10 Você usa as Propriedades “InfoBox” da Painel de Estrutura para configurar o Editor Script. 1. Selecione o “Script radio buttom”. 2. Selecione o tipo e tamanho da fonte que você deseja usar. 3. Escolha uma cor para cada tipo de expressão. 2.2 Dando entrada em um código Siga os seguintes passos para dar entrada em um código: 1. Selecione o objeto ou ação com os quais você deseja trabalhar; 2. Selecione o evento ao qual o código será anexado; 3. Digite o código no Editor Script. Você pode selecionar o objeto ou a ação para serem programados de diferentes formas. Por exemplo, para selecionar um objeto você pode escolher uma das seguintes opções: • Selecione o nome do objeto utilizando a “drop-down list” na caixa de definição; • Clique no objeto na Janela de Layout de formulário. Para selecionar uma ação para programar você pode escolher uma das seguintes opções: • Selecione o nome da ação utilizando a“drop-down list” na caixa de definição; • Clique na ação na Janela de ação. O Editor Script checa automaticamente a sintaxe de seus códigos assim que você entra com eles. Por exemplo, na hora que você comete um erro de digitação, o Editor Script lhe dá conhecimento mostrando o erro na caixa de erros. Se você tiver configurado as cores para o Editor Script, o erro é sublinhado na cor que você escolheu para erros. Palavras- chave, identificadores, comentários e diretivas também serão sublinhados na cor escolhida. O código que você dá entrada utilizando o Editor Script é armazenado no módulo do LotusScript. O Notes armazena um módulo separado para cada formulário, visão e agente que você cria. Alguns dos nomes listados na Caixa de Definição referem-se mais a partes do módulo LotusScript que a objetos e ações. As partes do que você usa são: • A parte (Options) da seção (Globals); • A parte (Declaration) da seção (Globals). Você usa parte Options para definir opções que afetam o código LotusScript que você está digitando. Por exemplo, se você deseja usar a expressão Option Declare para assegurar que todos os nomes variáveis estão declarados, você os adiciona na parte Options da seção Globals. A seção Declarations é onde você define os tipos de dados e variáveis usados pelo seu módulo. O Editor Script tenta completar blocos de códigos e os move para a posição correta. Por exemplo, se você começa uma definição de tipo em uma nova linha do seu Script escrevendo Type MyTypeName e pressionando Enter, o Editor Script automaticamente o move para a parte Declaration e adiciona a expressão End Type. O Editor Script automaticamente move os blocos de códigos seguintes ao local correto. • Type – Entre com TYPE seguido do nome e pressione Enter. O Editor Script cria um bloco Type...End Type vazio e o adiciona ao final da seção Declarations; • Dim – Se você digitar uma expressão Dim em qualquer lugar fora de um sub ou função, o Editor Scritpt move a expressão Dim para o fim da seção Declaration; • Function – Digite Function seguido do nome da função e pressione Enter. O Editor Script cria um bloco Function...End Function vazio e adiciona o nome da função à Caixa de Evento; • Sub – Digite Sub seguido do nome do Sub e pressione Enter. O Editor Script cria um bloco Sub...End Sub vazio e adiciona o nome do Sub à Caixa de Evento; • Option – Digite uma das expressões Option do LotusScript, tais como Option Declare ou Option Base e o Editor Script move a expressão para o fim da seção Options; • Class - Se você começa uma definição de classe digitando Class seguido por um nome de classe e pressionando Enter, o Editor Script move a definição para a seção Declaration e adiciona um End Class statement para você; • Property – Tanto para Property Set como para Property Get, o Editor Script automaticamente cria um novo bloco de propriedades e adiciona o seu nome para a Caixa de Evento. O Editor Scritpt também completa os seguintes blocos de códigos para você: • For loops – Digite na primeira linha de um “loop” e pressione Enter. A terminação “Next” é automaticamente adicionada para você; • Forall loops – A terminação End Forall é adicionada quando você pressiona Enter após a digitação da primeira linha; • Expressões If – O End If é adicionado para você; • Expressões Select - O End Select é automaticamente adicionado. • Do While loops – A terminação “Loop statement” é adicionada; • Statments While – A terminação Wend é adicionada. 2.3 Compilando um Script O Editor Script automaticamente compila seu LotusScript. Ele o faz nos seguintes momentos: • Assim que você dá entrada no Script, o Editor Script parcialmente compila o script. É assim que ele detecta erros e sabe quando completar blocos de códigos; • Quando você salva o script ou quando você clica fora do Editor Script, o Editor Script compila o módulo inteiro do LotusScript. Ele encontra aqueles erros que não pode detectar durante compilações parciais. Por exemplo, este é o momento que pode ser detectada uma chamada para uma função ou sub não existente. Você não pode salvar um script que contém erros de compilação, você deve corrigir todos antes de salvar o script. DICA Se você quer salvar um script contendo erros você pode colocar diretivas “%REM” e “%END REM” em volta da parte do script que contém erros. Este comentário oculta o erro e permite-lhe salvar o script. 3 Usando o LotusScript com o Notes O Notes usa um modelo de programação orientado a objeto e a evento. A Interface entre o LotusScript e o Notes é através de um conjunto de classes de objeto, as classes de objetos Notes. Objetos de cada classe geram e respondem a diferentes eventos. Por exemplo, o objeto botão pode responder ao ser pressionado, ou o objeto campo pode responder com o cursor sendo posicionado no mesmo. Quando você programa usando o LotusScript no Notes, você cria um LotusScript que responde a esses eventos. Você pode anexar o LotusScript a eventos nos seguintes tipos de objetos: • Botões; • Ações; • Pontos de Acesso; • Campos; • Formulários; • Visões e Pastas; • Banco de Dados; • Agentes. Para cada objeto, você precisa conhecer os eventos aos quais ele (objeto) responde. 3.1 Botões, Ações e “Pontos de Acesso” Botões, ações e Pontos de Acesso respondem aos eventos mostrados na tabela 2.1. O evento Click é o que você vai usar com maior freqüência. Ele é gerado sempre que botão, ação ou ponto de acesso são clicados. O evento ObjectExecute é criado para que uma aplicação de servidor OLE2 possa usar o NotesFlow para executar ações do Notes. Tabela 2.1 Eventos Botão, Ação e Ponto de Acesso Evento Trigger Click Quando é selecionado botão, ação ou ponto de acesso ObjectExecute Quando a ação é ativada por um servidor OLE2 que usa FX/NotesFlow para executar ações. O exemplo seguinte mostra como adicionar um botão e escrever LotusScript para tratar o evento “Click”. 1. Crie um novo banco de dados vazio; 2. Crie um novo formulário no banco de dados. A estrutura do formulário é mostrada; 3. Selecione “Criar - Ponto de Acesso - Botão”. Um botão é adicionado ao formulário e a caixa de informação com suas propriedades são mostradas; 4. Dê um título ao botão digitando “Ola turma” no campo “Rótulo do botão”; 5. Clique na janela do editor de Script; 6. Selecione o “Script radio buttom”. Pelo padrão (default), a posição fórmula é selecionada para um novo botão; 7. Adicione o seguinte código ao evento “Click”. Messagebox “Olá Turma !”, 0, “Botão de teste”. 8. Selecione a opção “Estrututa – Visualizar no Notes”. Você é solicitado a entrar com o nome para o novo formulário; 9. Entre com “Test” como o nome do formulário e clique OK. O novo formulário é salvo e mostrado. 10. Clique o botão “Olá Turma”. Sua caixa de mensagem “Olá Turma” é mostrada. 3.2 Campos Você pode anexar o LotusScript aos eventos de campos mostrados na tabela 2.2. Tabela 2.2 Eventos de campos Evento Trigger Entering Quando um usuário coloca o curso no campo. Exiting Quando o cursor é movido para fora do campo. O evento Entering é útil para responder ao usuário colocando o cursor no campo. Por exemplo, assim que um usuário coloca o cursor em um campo, você pode colocar alguns dados dentro do campo ou limpar seu conteúdo. Você pode usar o evento Exiting para ver se um campo foi corretamente preenchido assim que o usuário move o cursor para fora do campo, ao invés de esperar até que o documento seja salvo. Os exemplos seguintes mostram como usar o Existing para ajudar a validar o campo: 1. Crie um novo banco de dados vazio; 2. Crie um novo formulário no banco de dados. A estrutura do formulário é mostrado; 3. Selecione “Create”, “Field”. Um campo é adicionado ao formulário e sua caixa de propriedades é mostradas; 4. Use
Compartilhar