Tivoli Service Desk 6.0 Developer's Toolkit - Guia de Programação do Script

Capítulo 6: Como Utilizar o Sistema de Janelas do TSD Script

Retornar ao Índice


Introdução

Utilizando o TSD Script, você pode criar janelas genéricas, janelas de rolagem virtual e formulários. O sistema de janelas do TSD Script é composto de um número de instruções TSD Script que permitem a criação de uma interface com o usuário personalizada.

Este capítulo:

Descrição de janela

Janela é uma parte da tela ou desktop que contém seu próprio documento ou sua própria mensagem. Os termos a seguir são utilizados para descrever as partes de uma janela genérica.

Como Utilizar WinCreate

Como criar uma janela genérica

WinCreate é utilizado para criar janelas genéricas. Janela genérica é a janela mais simples e flexível fornecida pelo TSD Script. As janelas genéricas também podem conter suas próprias mensagens.

VARIABLES 
  mainWindow: Window; 
ACTIONS 
WinCreate($Desktop,mainWindow,MainEvent, 
            1,1,100,30,'',0); 

Exemplo de argumentos do WinCreate

A explicação a seguir descreve os argumentos do WinCreate utilizados na seção de ações do exemplo anterior:

O sistema de coordenada começa com (1,1) localizado no canto superior esquerdo da tela. Coordenadas X aumentam à direita; coordenadas y aumentam conforme se movem para baixo da tela.

Os dois próximos argumentos são a largura e a altura (respectivamente) da área de exibição da nova janela. Estes estão em unidades de caracteres.

A janela criada no exemplo possui seu canto superior esquerdo no canto superior esquerdo da tela. Possui largura de 100 caracteres e altura de 30 caracteres.

Como utilizar a criação de sinalizadores

No exemplo a seguir, o último argumento é uma expressão de inteiro onde cada posição de bits representa um sinalizador ativado/desativado. Por exemplo:

WinCreate($Desktop,mainWindow,MainEvent, 
          1,1,100,30,'',
          BitOr($WinTitle,$WinBorder,$WinMinMax)); 

O resultado da função BitOr significa que esta janela foi criada com três itens: uma barra de título, uma moldura e um conjunto de botões minimizados/maximizados no canto superior direito.

Para obter informações mais detalhadas sobre a criação de sinalizadores fornecida pelo TSD Script, consulte TSD 6.0 Developer's Toolkit - Referência de Linguagem do Script.

Como criar uma janela

Você pode criar a janela principal do aplicativo no TSD Script. Em TSD Script, a criação de uma janela envolve as seguinte as etapas:

  1. A rotina de tratamento de eventos associada à janela é chamada de um evento $MsgSize. Isso ocorre antes da janela ser adicionada na tela.
    Além disso, outras duas informações são passadas para a rotina de tratamento de eventos: a largura e a altura da nova janela, expressas em caracteres. Estes valores são passados no primeiro parâmetro de evento sem nome (INTEGER) e no segundo parâmetro de evento sem nome (INTEGER), respectivamente.
  2. A rotina de tratamento de eventos é então chamada com um evento $MsgCreate. Isso informa à rotina de tratamento de eventos que a janela está prestes a ser adicionada na tela. Neste momento, a rotina de tratamento de eventos deve executar ações para adicionar os comandos de menu, ferramentas e outros elementos visuais.

Nota: Se a rotina de tratamento de eventos executar ações que alterem o tamanho da área de exibição da janela, será gerada uma nova mensagem $MsgSize. A área de exibição de uma janela é a área onde um usuário final trabalha. Os elementos que não estão incluídos na área de exibição são:

  1. A moldura da janelas é adicionada na tela.
  2. A rotina de tratamento de eventos é chamada com uma mensagem $MsgPaint. Neste momento, a rotina de tratamento de eventos deve adicionar quaisquer outras informações que apareçam dentro da área de exibição da janela.

Destas quatro etapas, a maioria das janelas estão envolvidas apenas com segunda e a quarta. A mensagem $MsgCreate é importante pois identifica a hora apropriada para a rotina de tratamento de eventos fazer os ajustes finais na janela antes que seja exibida e para inicializar valores nos dados de ocorrência.

Quando a rotina MainEvent retém uma mensagem $MsgCreate, ele executa duas ações:

Nota: O sinalizador $WinIconBar na instrução WinCreate do programa principal determina se a nova janela está dimensionada corretamente para que a área de exibição esteja correta quando a barra de ferramentas for adicionada.

Menus Sobrepostos

Como criar sistema de menu sobreposto

Esta seção discute como criar um sistema de menu. Imagine que deseja construir um sistema de menu com três menus: Arquivo, Editar e Auxílio. No menu Arquivo há os seguintes comandos:

No menu Editar há os seguintes comandos:

Finalmente, há os seguintes comandos no menu Auxílio:

Opções de menu

A estrutura do menu bidimensional é convertida em uma lista dimensional adicionando opções da parte superior para a inferior, da esquerda para a direita.

ListInsert(menuList,''); 
ListInsert(menuList,'Save ~As'); 
WinSetMenuBar($Handle,{'File','New','Open',...,
'General Help''}: LIST OF STRING); 
WinSetMenuBar($Handle,{'File','New','Open',..., '/L-',
'General Help'}: LIST OF STRING);


Parâmetros do evento e comandos de menu

Quando um usuário seleciona um comando de menu, a rotina de tratamento de eventos da janela retém uma mensagem $MsgMenu. O primeiro parâmetro de evento (INTEGER) $MenuSelection contém um inteiro indicando o comando de menu selecionado. Este inteiro é codificado como:

major*100 + minor 

Major é o número do comando de menu horizontal selecionado (100 para a extrema esquerda), e minor é o número do comando de menu vertical selecionado (101 para a parte superior). Dessa forma, se o usuário escolheu o comando Colar no menu Editar, o primeiro parâmetro de evento sem nome (inteiro) teria o valor 203 pois Editar é o segundo comando horizontal e Colar é o terceiro comando vertical. Os números de 1 a 99 representam ferramentas, porque os eventos de ferramentas também são identificados pelo $MsgMenu.

Janelas Genéricas

Posição do cursor em uma janela genérica

O TSD Script fornece um número de instruções que alteram a aparência da área de exibição de uma janela genérica. Internamente, as janelas genéricas mantêm o controle de uma posição atual do cursor. É uma posição (x,y) onde determinadas operações de saída (como WinWrite) ocorrem.


A posição de inclusão no sistema de coordenada selecionado atualmente pode ser medido a partir da posição (1,1), que está no canto superior esquerdo da área de exibição. A posição de inclusão pode ser medida em:

As posições da coordenada X aumentam para a direita e as posições da coordenada y aumentam para baixo.

Instruções da Janela

As instruções que podem ser utilizadas com as janelas genéricas estão listadas na tabela que segue. Os parâmetros estão listados no Tivoli Service Desk 6.0 Developer's Toolkit - Guia de Programação do Script.

Instrução Descrição
WinGoToXY Move a posição atual para uma determinada coordenada (x,y).
WinWrite Escreve uma cadeia em uma posição atual.
WinWriteAt Escreve uma cadeia em uma determinada posição.
WinWriteLN Escreve uma cadeia na posição atual e avança o ponteiro da posição para o início da próxima linha.
WinX Retorna a coordenada x da saída de texto atual.
WinY Retorna a coordenada y da saída de texto atual.
WinWidth Retorna a largura da janela em caracteres.
WinHeight Retorna a altura da janela em coordenadas.
WinClear Limpa a janela inteira da cor do background atual.
WinClearEOL Limpa a janela da cor de background atual (começando da posição atual do cursor até o final da linha atual).
WinClearEOW Limpa a janela para ficar da cor do background atual (começando à direita da posição atual do cursor até abaixo da posição atual do cursor).
WinClearRectangle Limpa uma determinada região retangular da cor de desenho do background atual.
WinGetXPos Retorna a posição da coordenada x de um identificador de janela válido.
WinGetYPos Retorna a posição da coordenada y de um identificador de janela válido.
WinSetColor Define as cores de desenho de primeiro plano e de background para a janela.

Instruções de criação da janela

As instruções a seguir são as funções utilizadas para criar janelas.

Instrução Descrição
WinSetIconBar Define o conteúdo da barra de ícones.
WinSetMenuBar Define o conteúdo da barra de menus.
WinCreateClock Cria uma janela de relógio ou de temporizador dentro da janela genérica.
WinCreateImage Cria um visualizador de imagem dentro da janela genérica que exibe um determinado arquivo de imagem.
WinCreateMouseRect Cria um "ponto ativo" retangular na janela em uma determinada localização. Cliques no mouse nesta região gera eventos para a rotina de tratamento de eventos da janela genérica.

Como reconstruir janela genéricas

O evento $MsgPaint (também mencionado como uma mensagem de reconstrução) indica que alguma parte da janela genérica precisa ser redesenhada.

Se um usuário fecha outra janela ou clica na janela genérica, o gerenciador de janelas precisará reexibir o conteúdo da janela genérica. Ele executa isso enviando a mensagem $MsgPaint. Uma vez que o gerenciador de janelas não lembra o conteúdo de cada janela aberta no desktop, ele espera que cada janela saiba como se reconstruir.

Por exemplo, suponha que:

Se um usuário clicar naquela outra janela, ela vem para o primeiro plano e parte (ou toda) de sua janela genérica é solta atrás dela. Para atualizar a exibição, as próprias janelas devem se reconstruírem.

Uma rotina de tratamento de eventos pode, em qualquer momento, reter uma mensagem $MsgPaint para uma janela que ela serve. Há dois gatilhos básicos que resultam na mensagem de reconstrução:

Nota: Em geral, as janelas genéricas que gravam na parte da janela do cliente devem proceder dessa forma apenas na parte da rotina de tratamentos de eventos que serve o evento $MsgPaint.

Janelas de Rolagem Virtual

As janelas genéricas devem ser capazes de manusear mensagens de reconstrução e gerar novamente o conteúdo. O TSD Script fornece uma janela de rolagem virtual que executa o seguinte:

Uma janela de rolagem virtual é completamente virtual. Você pode escrever informações em qualquer lugar em seu espaço bidimensional e utilizar as barras de rolagem (horizontal e vertical) para visualizá-las.

Nota: Uma janela de rolagem virtual não conhece nada a respeito da estrutura de seus dados. É mais fácil de ser utilizada do que uma janela genérica, mas pode ser menos eficiente.

Como criar uma janela de rolagem virtual

Uma janela de rolagem virtual é criada com a instrução WinCreateScrollWindow. Esta instrução tem os seguintes argumentos:

Nome do Argumento Descrição
whdlParent O identificador para o principal de uma janela criada recentemente.
whdl O identificador da janela criada recentemente é retornado neste parâmetro. Se houver um erro, a variável será definida como $Unknown.
EventHandler Uma rotina de tratamento de eventos para processar eventos que é gerada pela janela ou caixa de diálogo. Se nenhum processamento de evento for necessário, a palavra-chave $NullHander pode ser utilizada.
xLoc A localização X do canto superior esquerdo da janela. As coordenadas X são medidas em células de caracteres.
yLoc A localização Y do canto superior esquerdo da janela. As coordenadas Y são medidas em células de caracteres.
width A largura (dimensão X) da janela, excluindo a moldura. As coordenadas X são medidas em células de caracteres.
height A altura (dimensão Y) da janela, excluindo a moldura, barra de título, barra de menu barra de ícones e barra de status. As coordenadas Y são medidas em células de caracteres.
title O título a ser exibido na barra de título da janela. A janela deve ter uma barra de título para um título a ser exibido. Utilize o estilo $WinTitle.
font O nome de uma fonte do sistema disponível.
pointSize O tamanho do ponto da fonte a ser utilizado dentro da janela de rolagem.
style Uma máscara de bit de inteiro que representa uma lista de sinalizadores de estilo utilizados para controlar a aparência da janela.

Exemplo da janela de rolagem virtual

As janelas de rolagem virtual são úteis para o registro de informações de "uma linha de cada vez". O exemplo a seguir cria uma janela que serve como um "quadro negro" deslocável. A janela é utilizada para listar os nomes e números de seguro social de todos os empregados na tabela EMPLOYEES. Estes nomes e números são escritos na janela uma linha de cada vez, começando na parte superior da janela.

VARIABLES 
  vWin: Window; 
  i: INTEGER; 
  cursor: SQLCursor; 
ACTIONS 
  WinCreateScrollWindow($Desktop,vWin,$NullHandler,
                        1,1, 80,25,'Matches',
                        SystemMonospaced, 10,
                        BitOr($WinDefaultStyle,
                              $WinViscroll,
                              $WinAutoScroll)); 
  i:=SQLSelect(cursor,'SELECT * FROM EMPLOYEES'); 
  WHILE i > 0 DO 
    i:=SQLFetch(cursor,employee);
    IF i > 0 THEN 
    WinWriteLn(vWin,employee.first_name & ' ' & 
             employee.last_name & ' ' & employee.ssn); 
END; 
END; 
  SQLCloseCursor(cursor); 

Em virtude de ser utilizado o estilo $WinAutoScroll, as entradas anteriores ultrapassam a parte superior da janela quando botão da janela é alcançado.

Você pode utilizar a barra de rolamento vertical para retornar e ver as entradas anteriores. Quando um usuário conclui a janela, ele poderá fechá-la como menu do sistema ou a mensagem $MsgClose pode ser enviada explicitamente no aplicativo.

Instruções da janela de rolagem virtual

As instruções a seguir podem ser utilizadas para alterar a aparência e a função de uma janela de rolagem virtual:

Nome da Instrução Descrição
WinGoToXY Move a posição atual para uma determinada coordenada (x,y) virtual.
WinWrite Escreve uma cadeia em uma posição atual.
WinWriteAt Escreve uma cadeia em uma determinada posição.
WinWriteLN Escreve uma cadeia na posição atual e avança o ponteiro da posição para o início da próxima linha. Se a posição atual estiver na parte inferior da janela e você utilizar o estilo $WinAutoScroll, a janela inteira será deslocada uma linha acima.
WinX Retorna a coordenada x da posição de saída de texto atual.
WinY Retorna a coordenada y da posição de saída de texto atual.
WinWidth Retorna a largura da janela (física) em caracteres.
WinHeight Retorna a altura da janela (física) em coordenadas.
WinClear Limpa a janela inteira da cor do background atual.
WinClearEOL Limpa a janela virtual, a partir da posição do cursor até o fim da linha atual, da cor de background atual.
WinClearEOW Limpa a janela para ficar da cor do background atual (começando à direita da posição atual do cursor até abaixo da posição atual do cursor).
WinClearRectangle Limpa uma determinada região retangular da cor do background atual.
WinSetColor Define as cores de desenho de primeiro plano e de background para a janela.
WinSetIconBar Define o conteúdo da barra de ícones.
WinSetMenuBar Define o conteúdo da barra de menus.
WinCreateClock Cria uma janela de relógio ou de temporizador dentro da janela de rolagem. O relógio automaticamente se desloca para dentro da janela de rolagem.
WinCreateImage Cria um visualizador de imagem dentro da janela de rolagem que exibe um determinado arquivo de imagem. Esta imagem automaticamente se desloca para dentro da janela de rolagem.
WinGetXPos Retorna a posição da coordenada x de um identificador de janela válido.
WinGetYPos Retorna a posição da coordenada y de um identificador de janela válido.
WinCreateMouseRect Cria um ponto ativo retangular na janela em uma determinada localização. Cliques no mouse nesta região gera eventos para a rotina de tratamento de eventos da janela de rolagem.

Posição do cursor

Da mesma forma que as janelas genéricas, as janelas virtuais mantêm uma posição interna do cursor (x,y). Esta posição do cursor indica onde determinadas operações de saída (como WinWrite) começam. Após uma operação WinWrite, a posição x do cursor é incrementada pelo número de caracteres escritos.

A posição do cursor pode ser encontrada chamando as funções WinX e WinY. A posição do cursor pode ser alterada chamando a função WinGotoXY( ).


Tivoli Service Desk 6.0 Developer's Toolkit Developer's Toolkit - Guia de Programação do Script

Retornar ao Índice

Copyright