Tivoli Service Desk 6.0 Developer's Toolkit - Referência da Linguagem de Script
Voltar para Página Principal
Nota: Todas as funções Win têm os mesmos códigos de retorno. Essa tabela de códigos aparece na função WinAboutBox e um link para essa tabela aparece com cada função do Win.
Voltar para Página Principal
Nota:
Esta é a primeira seção das funções de Tratamento de Janela. Esta seção
termina com WinSetColor, enquanto a segunda seção
começa
com WinSetFont.
Retorna um identificador para a janela do desktop. Esse valor é permanente durante a sessão atual. Entretanto, esse valor não é armazenado permanentemente. Da próxima vez que o programa executar, essa constante tem um novo valor.
FUNCTION $Desktop: WINDOW;
Cuidado: No OS/2, existem mensagens válidas que podem ser enviadas para o desktop, causando uma pausa no processamento. Por exemplo, enviar $MsgClose para o desktop causa uma pausa na execução do programa. Esse comportamento é controlado pelo sistema operacional.
$Desktop é uma constante pré-definida do sistema que contém o identificador para o desktop do OS/2 ou do Windows. Normalmente é especificada como o pai nas instruções de janela e caixa de diálogo.
KNOWLEDGEBASE Desktop;
ROUTINES PROCEDURE Example;
PRIVATE ROUTINES
(* Create a scroll window parented by the desktop with default event processing *) PROCEDURE Example IS VARIABLES whdl: WINDOW;
ACTIONS WinCreateScrollWindow($Desktop, (*Window is a child of OS/2 desktop *) whdl, (* return handle of new window *) $NullHandler, (* Default event processing *) 5, 5, 80, 20, (* Window location and size *) 'Example', (* Window title *) '', (* Use default font *) 0, (* Point size is ignored for default *) BitOr($WinTitle, $WinBorder, $WinSysMenu )); WinWait(whdl); END;
Indica a tecla pressionada pelo usuário quando ocorre um evento $MsgChar.
TSD Script define diversas constantes para teclas especiais como as teclas de controle do cursor, teclas modificadas (isto é, teclas que são pressionadas em combinação com outras, como Control ou Alt), etc.
Nota: Para obter mais informações, consulte Constantes do TSD Script.
EVENT MyEvent IS ACTIONS WHEN $Event IS $MsgChar THEN WHEN $KeyCode IS $KeyUpArrow THEN MoveUp; ELSWHEN $KeyDownArrow THEN MoveDown; ELSWHEN $KeyLeftArrow THEN MoveLeft; ELSWHEN $KeyRightArrow THEN MoveRight; END; END;
Esta função exibe um quadro padrão "Sobre" para um aplicativo.
FUNCTION WinAboutBox( VAL Icon : STRING, VAL AppName : STRING, VAL Version : STRING ) : INTEGER;
As informações exibidas contêm uma mensagem de copyright do Tivoli Service Desk e não se destinam a aplicativos de terceiros.
Nome do Argumento | Descrição |
Icon | O nome do arquivo .bmp associado a ser exibido com seu aplicativo. Se o arquivo não puder ser encontrado ou se o nome do arquivo for inválido, o quadro é exibido sem a figura. Nas variáveis de ambiente SAIPATH e PATH são procurados arquivos especificados por esse comando. |
AppName | O nome do aplicativo. |
Version | O número da versão do aplicativo. |
KNOWLEDGEBASE aboutbox;
CONSTANTS
AppName IS 'Pink Elephant Word Processor'; AppVersion IS 'Version 3.1';
ROUTINES
Procedure DisplayAboutBox;
PRIVATE ROUTINES
Procedure DisplayAboutBox IS
VARIABLES ACTIONS WinAboutBox('pink.bmp', AppName, AppVersion); END;
Código de Retorno | Descrição |
1 | Conclusão bem-sucedida. |
0 | Abortado pelo usuário. O usuário fechou a janela ou abortou a operação. Normalmente, isso é feito pressionando a tecla Esc ou o botão Cancel, o fechando a janela no menu do sistema. |
-1 | O identificador da janela não faz referência a uma janela válida. A janela pode não existir mais ou não suporta o comando. |
-2 | Valor desconhecido. |
-3 | Memória insuficiente. |
-4 | Sem criação. O sistema operacional não pôde criar o objeto solicitado. Um motivo possível é que um identificador de janela pai faz referência a uma janela que não existe mais. |
-7 | O controle mencionado de uma caixa de diálogo não pôde ser encontrado na caixa de diálogo indicada pelo identificador da janela. |
-8 | O comando da caixa de diálogo solicitado pode não ser executado no tipo de controle indicado. |
-10 | Uma chamada falhou no nível do sistema operacional. O motivo pode ser uma configuração imprópria ou recursos inadequados. |
-12 | A instrução SendMessage ou PostMessage foi chamada com uma mensagem que não é suportada pelas instruções NETx. As mensagens devem ser uma das mensagens $MsgNetx suportadas ou uma mensagem $MsgUser + n definida pelo usuário, definida especificamente para ser usada com as instruções NETx. |
Limpa toda a área do cliente de uma janela ou de uma janela de rolagem para a cor do background atual.
FUNCTION WinClear(VAL whdl: WINDOW): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela a ser limpa. Esse identificador pode fazer referência a uma janela padrão ou a uma janela de rolagem. |
A cor do background atual pode ser alterada com a função WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); WinWrite($Handle,'Black');
Limpa a janela da posição atual do cursor até o fim da linha, utilizando a cor do background atual.
FUNCTION WinClearEOL(VAL whdl: WINDOW): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela a ser limpa. O identificador pode fazer referência a uma janela padrão ou a uma janela de deslocamento. |
WinClearEOL limpa da posição atual do cursor até o fim da linha atual. A posição do cursor não é alterada. A área limpa é pintada na cor do background atual.
Nota: A cor do background atual pode ser alterada utilizando a função WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlue); WinGoToXY($Handle,2,2); WinClearEOL($Handle);
Limpa a janela da posição atual do cursor até a parte inferior da janela, utilizando a cor do background atual.
FUNCTION WinClearEOW(VAL whdl: WINDOW): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela a ser limpa. Esse
identificador pode fazer referência a uma janela padrão ou a uma janela
de rolagem. |
WinClearEOW limpa a janela indicada da posição atual do cursor até o fim da janela. A área limpa é pintada com a cor do background atual. A posição do cursor não é alterada.
Nota: A cor do background atual pode ser alterada usando a instrução WinSetColor.
WHEN $Event IS $MsgPaint THEN WinGoToXY($Handle,5,10); WinSetColor($Handle,$WinWhite,$WinLightBlue); WinClearEOW($Handle);
Limpa uma região retangular de uma janela, utilizando a cor do background atual.
FUNCTION WinClearRectangle(VAL whdl: WINDOW, VAL xLoc, yLoc, width, height: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela a ser limpa. O identificador pode fazer referência a uma janela padrão ou a uma janela de deslocamento. |
xLoc | A localização X do canto superior esquerdo da região a ser limpa. As coordenadas X são células de caracteres especificadas. |
yLoc | A localização Y do canto superior esquerdo da região a ser limpa. As coordenadas Y são especificadas em células de caracteres. |
width | A largura da região a ser limpa. A largura é medida em células de caracteres. |
height | A altura da região a ser limpa. A altura é medida em células de caracteres. |
WinClearRectangle limpa uma região retangular específica dentro de uma determinada janela. A região limpa é pintada com a cor do background atual. O cursor não é movido.
Nota: A cor do background atual pode ser alterada usando a instrução WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClearRectangle($Handle,5,10,40,8); END:
Fecha uma caixa de diálogo ou uma janela.
FUNCTION WinCloseWindow(VAL whdl: WINDOW): INTEGER;
Nome do Argumento | Descrição |
whdl | Identificador da caixa de diálogo ou janela a ser fechada. |
Essa função é implementada também como uma mensagem que pode ser passada para uma caixa de diálogo ou janela ($MsgClose).
KNOWLEDGEBASE close;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Window will close shortly...', $WinDefaultStyle); SysDelay(1000); WinCloseWindow(Handle); END;
Cria uma janela padrão ou genérica.
FUNCTION WinCreate(VAL parent: WINDOW, REF whdl: WINDOW, VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, style: INTEGER): INTEGER;
Se a função do evento não processar a mensagem de pintar e limpar a janela, esta retém a imagem que estava sob ela quando a janela foi criada.
WinCreate não retorna até que $MsgCreate seja processado. Portanto, o valor do identificador da janela retornada não é definido até que $MsgCreate seja processado. Entretanto, $Handle ainda pode ser usado durante o processamento de WinCreate.
Nome do Argumento | Descrição |
parent | Pai da nova janela a ser criada. |
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 que processa eventos gerados pela janela ou caixa de diálogo. Se não for necessário nenhum processamento de evento, $NullHandler pode ser usado. |
xLoc | A localização X do canto superior esquerdo da janela. As coordenadas X são especificadas em células de caracteres. |
yLoc | A localização Y do canto superior esquerdo da janela. As coordenadas Y são especificadas em células de caracteres. |
width | A largura (dimensão X) da janela, excluindo a moldura. |
height | A altura (dimensão Y) da janela, excluindo a moldura, a barra de título, a barra de menus, a barra de ferramentas e a barra de status. |
title | O título 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 um estilo que contém $WinTitle. |
style | Uma máscara de bit de inteiro que representa um
conjunto de sinalizadores de estilo utilizados para controlar a
aparência da janela. Para obter uma lista dos sinalizadores de estilo disponíveis, consulte Estilos de Janelas. |
Primeiras Mensagens Recebidas
Quando uma janela é criada, as seguintes mensagens são recebidas, na ordem mostrada:
Como Personalizar uma Janela com Estilos
WinCreate pode se usado para criar janelas padrão ou genéricas. Essas janelas podem conter barras de menus, barras de status e outros elementos de janelas.
A aparência e comportamento exatos da janela criada com WinCreate são determinados principalmente pelo argumento de estilo. Esse argumento de inteiro é uma máscara de bit montada de diversos sinalizadores (relacionados na próxima seção). Normalmente, o argumento é montado com o operador BITOR (por exemplo, BITOR($WinBorder, $WinTitle)). O método de adição deve ser usado com cuidado; ele pode trazer resultados não desejados se o mesmo sinalizador for adicionado duas vezes.
Nota: Para obter mais informações, consulte Estilos de Janelas.
Como Criar uma Rotina de Tratamento de Eventos para uma Janela
Em geral, uma rotina de tratamento de eventos é associada a uma janela criada através de WinCreate. Uma rotina de tratamento de eventos é uma rotina que processa algumas das mensagens enviadas para a janela. Por exemplo, se a janela tiver uma barra de ícones, sua rotina de tratamento de eventos recebe mensagens $MsgMenu (eventos) sempre que o usuário clica em um dos ícones. O parâmetro do primeiro evento (inteiro) contém um número entre um (1) e o número de ícones, indicando qual ícone foi selecionado. A rotina de tratamento de eventos pode, em seguida, chamar uma determinada rotina.
Nota: As diversas mensagens que podem ser recebidas por janelas criadas com WinCreate são documentadas em Mensagens TSD-Script.
EVENT MainEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetIconBar($Handle,{'FILE.ICO', 'REPORT.ICO','HELP.ICO'}: LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $EventParm(1,INTEGER) IS 1 THEN HandleFileIcon; ELSWHEN 2 THEN HandleReportIcon; ELSWHEN 3 THEN HandleHelpIcon; END; END; END;
PROCEDURE MainProgram IS VARIABLES mainWindow: WINDOW; ACTIONS WinCreate($Desktop,mainWindow,MainEvent,0,0,80,20, 'Main Window', BitOr($WinBorder,$WinTitle,$WinResize, $WinSysMenu, $WinIconBar, $WinAutoPos,$WinTaskList)); WinWait(mainWindow); END;
Cria uma janela de relógio ou temporizador.
FUNCTION WinCreateClock(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL xLoc, yLoc, width, height, style, id: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdlParent | O pai da nova janela a ser criada. |
whdl | O identificador da nova janela é retornado neste parâmetro. Se houver um erro, a variável será definida como $Unknown. |
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. A largura é medida em células de caracteres. |
height | A altura (dimensão Y) da janela, excluindo a moldura, a barra de título, a barra de menus, a barra de ferramentas e a barra de status. Altura medida em células de caracteres. |
style | O estilo da janela do relógio. Os sinalizadores de
estilo são combinados com o operador BITOR. Selecione uma ou mais das seguintes opções:
Selecione uma ou mais das seguintes opções:
Sinalizador opcional: $ClkHidden - O relógio não é exibido na tela. |
ID | Número de identificação utilizado em mensagens de notificação para a janela principal. Você pode criar temporizadores em janelas genéricas utilizando a mensagem $MsgStartTimer. |
WinCreateClock pode ser usado para criar relógios que se atualizam no tempo real (a cada segundo). Por padrão, um relógio começa a exibir a hora real com base no clock do sistema. Entretanto, você pode definir um relógio para que exiba uma hora atual enviando para ele a mensagem $MsgClockSet com um valor de tempo.
Por exemplo, a linha a seguir pode ser usada para configurar um relógio de tempo decorrido:
SendMessage(clockWindow,$MsgClockSet,{0,0,0}: TIME);
As janelas de relógio também respondem a mensagens $MsgShow. Isso permite que você crie uma janela de relógio, a oculte, altere seu valor de tempo e a exiba. Considere o seguinte exemplo:
WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clockWindow, 1,1,13,2, $Clk24Hour,0); SendMessage(clockWindow,$MsgShow,FALSE); ELSWHEN START_TIMER THEN SendMessage(clockWindow,$MsgClockSet, {0,0,0}: TIME): SendMessage(clockWindow,$MsgShow,TRUE); END;
Neste exemplo, você está dentro do processamento de eventos para outra janela. Quando a janela é criada, ela cria um relógio mas o oculta. Quando a janela recebe uma mensagem START_TIMER, define a hora do relógio como 00:00:00 e mostra o relógio. O usuário vê um relógio de tempo decorrido.
VARIABLES clock: WINDOW; ROUTINES EVENT WindowEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clock,1,1,13,2,$ClkBorderIn,1); END; END;
Cria uma janela de exibição de Interface de Documentos Múltiplos (MDI) com recursos básicos de hipertexto. As barras de menu disponíveis com os menus Arquivo, Editar e Janela permitem que você:
As opções de menus popup podem ser acessadas pressionando o botão direito do mouse em um visualizador de hipermídia. Esses itens de menu permitem que você selecione:
FUNCTION WinCreateHyperViewer(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL EventFunc: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdlParent | O pai da nova janela a ser criada. |
whdl | O identificador da janela criada recentemente é retornado neste parâmetro. Se houver erro, o argumento whdl é definido como $Unknown. |
fileName | O nome do arquivo a ser exibido. Se o arquivo não
estiver no diretório atual, o SAIPATH é procurado. O arquivo pode ser um
ASCII simples ou pode ter links de hipertexto incorporados. Consulte a seção Notas para obter mais informações. |
EventFunc | Uma rotina de tratamento de eventos para processar eventos que é gerada pela janela ou caixa de diálogo. Se não for necessário nenhum processamento de eventos, a palavra-chave $NullHandler pode ser usada. |
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. A largura é medida em células de caracteres. |
height | A altura (dimensão Y) da janela, excluindo a moldura, a barra de título, a barra de menus, a barra de ferramentas e a barra de status. A altura é medida em células de caracteres. |
title | O título exibido na barra de título da janela. A janela deve ter uma barra de título para um título a ser exibido. |
style | Uma máscara de bit de inteiro que representa uma lista
de sinalizadores de estilo utilizados para controlar a aparência da
janela. Para obter mais informações, consulte as Notas para esta instrução |
WinCreateHyperViewer pode ser usado para criar um visualizador de hipertexto. Além de criar uma janela com a posição, tamanho e estilos indicados, WinCreateHyperViewer exibe o conteúdo do arquivo indicado. Supõe-se que esse arquivo contém texto em ASCII com botões incorporados. Um botão, que parece ao usuário uma palavra destacada, é um link para outro objeto como um arquivo de texto, arquivo de som, figura ou programa.
Um botão é definido no seguinte formato:
[[<Button text> | <command>]]
<Button text> é o texto a ser exibido como texto destacado para o usuário, e <command> indica a ação iniciada pelo clique.
Quebra de linha
O controle de hipertexto espera que o arquivo fornecido esteja formatado como arquivo de hipermídia Tivoli Systems. Isso significa que ele quebra linhas em todas as linhas de texto (ignorando retornos do carro) até encontrar dois retornos do carro seguidos.
Como Desligar Quebra de Linha e Formatar Padrões
Para desativar a quebra de linha e os padrões de formatação para uma janela de hipertexto, você pode usar aseview.exe para passar os sinalizadores /NOWORDWRAP /NOFORMAT como argumentos da linha de comandos. Essa é a única forma de desativar de forma programada a quebra de linha e os padrões de formatação para uma janela de hipertexto.
A tabela a seguir mostra as opções de comandos para a instrução
WinCreateHyperViewer e descrições:
Opção de Comando | Descrição |
ID | Se o comando for um inteiro, supõe-se que seja um ID de
botão. Quando o usuário clica no botão, uma mensagem $MsgButton
é enviada para a rotina de tratamento de eventos da janela do
visualizador de hipertexto. O texto do botão está no parâmetro de evento
um (cadeia) e o ID do botão, no parâmetro de evento dois (inteiro). Se não forem fornecidos comandos (se o botão estiver na forma [[Button-text]]), a rotina de tratamento de eventos ainda recebe uma mensagem $MsgButton quando o botão é selecionado. Entretanto, o ID do botão (parâmetro de evento dois, inteiro), é 0. Nesse caso, se a rotina de tratamento de eventos retornar zero, o visualizador modifica o texto do botão para que formButtonTextand execute uma operação de pesquisa (ver abaixo). |
JUMP | JUMP <nome do marcador> procura na lista de marcações um marcador que corresponda ao texto após Jump (consulte a marcação Marcador para obter mais informações). Se for encontrada uma correspondência, a linha que contém o marcador é posicionada na parte superior do visualizador e é gerado um EventJump. A exibição de hipertexto processa o EventJump para manter uma lista de marcadores "visitados" em um arquivo. |
LABEL | LABEL <texto da etiqueta> pode ser qualquer cadeia de caracteres. Uma mensagem $MsgLabel é enviada para a rotina de tratamento de eventos da janela com o texto do botão no parâmetro do evento um (cadeia) e o texto da etiqueta no parâmetro do evento dois (cadeia). |
MARKER | MARKER <nome do marcador> coloca um marcador invisível no texto. |
SEARCH | SEARCH <texto da pesquisa> procura o arquivo
atual a partir do início do <texto da pesquisa>. O texto pode não
cruzar linhas, a não ser que o texto da pesquisa tenha novas linhas
incorporadas. A pesquisa faz distinção entre maiúsculas e minúsculas,
exceto no Windows. Se o texto for encontrado, o visualizador é posicionado de forma que a linha que contém o texto apareça na linha superior da janela do visualizador. |
FILE | FILE <nome do arquivo> [NEW|REPLACE]
[NOWORDWRAP|NOFORMAT] abre um novo arquivo de texto. Por padrão, o novo
arquivo substitui o que está atualmente no visualizador. Este também é o
caso se a palavra-chave REPLACE estiver após <nome do arquivo>. Se a palavra-chave NEW vier após <nome do arquivo>, é aberta uma nova janela do visualizador para exibir o novo arquivo. O tamanho do visualizador é determinado pelo sistema. Por padrão, é usada quebra de linha, para que todas as linhas que não sejam separadas por no mínimo uma linha em branco sejam tratadas como parágrafo da seqüência. A primeira linha em branco após qualquer linha que não seja em branco é descartada. A palavra-chave NOWORDWRAP pode ser usada para excluir esse comportamento. NOFORMAT usado juntamente com a quebra de linha padrão evita que linhas adjacentes sejam combinadas mas ainda quebra linhas longas. |
IMAGE | IMAGE <arquivo de imagem>.BMP [SCROLL | SCALE]abre um visualizador de imagens e exibe o arquivo de imagem indicado. Por padrão, a imagem é cortada para caber no tamanho do visualizador. A palavra-chave SCALE causa o dimensionamento da imagem para o tamanho do visualizador. A palavra-chave SCROLL corta a imagem mas inclui barras de rolagem que podem ser usadas para deslocar através da imagem completa. |
PLAY | PLAY <arquivo de som>.WAV reproduz o arquivo de áudio indicado. Aparece uma janela de exibição de hipertexto, que o usuário pode manipular para controlar a reprodução de áudio. |
RUN | RUN <nome do aplicativo> executa o aplicativo indicado. <nome do aplicativo> pode ser uma cadeia que contém não apenas o nome de um executável ou arquivo de comandos como também argumentos da linha de comandos ([[Windows NT|RUN F:\DOC\DOCMAN.EXE WINDOWS_NT]]). |
Para obter uma lista completa dos diversos tipos de mensagens que podem ser
recebidas por janelas genéricas, consulte Mensagens do TSD
Script.
Para uma discussão de sinalizadores de estilo de janela, consulte a instrução WinCreate.
KNOWLEDGEBASE WinHyper;
ROUTINES PROCEDURE HyperTextExample;
PRIVATE
CONSTANTS MENU_LIST {'File' ,'Open','/L ','Exit',''}: LIST OF STRING;
ROUTINES EVENT HyperTextEvent IS VARIABLES fileName: STRING; ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); WinSetIconBar($Handle,{'hyp_text.ico', 'hypimage.ico', 'hypsound.ico','search.ico'}:
LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 1, 101 THEN IF WinFileDialog($Desktop,fileName,'*.*', 10,10, 'Select file to view',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgOpenFile,fileName, fileName,0); END; ELSWHEN 2 THEN IF WinFileDialog($Desktop,fileName,'*.bmp', 10,10, 'Select bitmap to view',0) < 0 THEN WinMessageBox( $Handle, 'Error', $MBOk+ $MBIconError,fileName ); ELSE SendMessage($Handle,$MsgDisplayImage,fileName, fileName,0); END; ELSWHEN 3 THEN IF WinFileDialog($Desktop,fileName,'*.wav',10,10, 'Select sound to play',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgPlaySound,fileName, fileName,0); END; ELSWHEN 4 THEN IF WinEditField($Desktop,fileName,0,0,30, 'Search for?', BitOr($WinAutoPos, $WinBorder, $WinTitle)) < 1 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgSearch,fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgChar THEN WHEN $KeyCode IS $KeyAltT THEN SendMessage($Handle,$MsgMenu,1); ELSWHEN $KeyAltI THEN SendMessage($Handle,$MsgMenu,2); ELSWHEN $KeyAltA THEN SendMessage($Handle,$MsgMenu,3); ELSWHEN $KeyAltS THEN SendMessage($Handle,$MsgMenu,4); ELSE WinMessageBox($Handle,'Hypertext Key',$MBOK, $KeyCode ); END; ELSWHEN $MsgButton THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text' & $EventParm(1,STRING) & 'Button ID ' & $EventParm(2,INTEGER)); ELSWHEN $MsgLabel THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text ' & $EventParm(1,STRING) & 'Button Label ' & $EventParm(2,STRING)); END; END (* Hypertext Event *); PROCEDURE HyperTextExample IS VARIABLES whdl: WINDOW; ACTIONS WinCreateHyperViewer($Desktop,whdl,'formman.hlp', HyperTextEvent,1,1,80,25, 'Hyertext Test', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinIconBar,$WinSysMenu, $WinMinMax, $WinAutoPos,$WinAutoSize)); WinWait(whdl); END (* Hypertext Example *);
Para obter mais informações sobre como formatar arquivos de hipermídia, consulte o Tivoli Service Desk Developer's Toolkit - Guia de Ferramentas e Utilitários.
Para obter mais informações sobre SAIPATH, consulte Busca de Arquivos utilizando SAIPATH.
Cria uma janela que exibe uma imagem.
FUNCTION WinCreateImage(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style, id: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdlParent | Pai da nova janela a ser criada. |
whdl | O identificador da janela criada recentemente é retornado neste parâmetro. Se houver um erro, a variável será definida como $Unknown. |
fileName | O nome do arquivo da imagem exibida. A imagem pode ser um arquivo bitmap do OS/2, um bitmap do Windows ou um arquivo de imagem .PCX. |
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. A largura é medida em células de caracteres. |
height | A altura (dimensão Y) da janela, excluindo a moldura, a barra de título, a barra de menus, a barra de ferramentas e a barra de status. A altura é medida em células de caracteres. |
title | O título 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 $ImgTitle. |
style | Um bitmap de inteiro que controla o procedimento da janela de imagem. Consulte a seção Notas para obter informações sobre opções do indicador de estilo. |
id | O ID (inteiro) utilizado pela mensagem $MsgImage para identificar a imagem ao relatar um evento. |
O estilo da janela de imagem pode ser montado a partir dos seguintes
estilos com o operador BITOR:
Style | Descrição |
$ImgScroll | A imagem aparece do tamanho que ela tem no arquivo. A janela tem barras de rolagem. Se a imagem for maior que a janela, pode ser deslocada. |
$ImgClip | A imagem aparece do tamanho que ela tem no arquivo. Os lados superior e direito da imagem são cortados para caber na janela, se necessário. |
$ImgScale | A imagem é dimensionada na largura e na altura para caber no tamanho da janela requerido. O processo de dimensionamento pode distorcer a imagem. |
$ImgBorder | A janela de imagem possui uma moldura. |
$ImgTitle | A janela de imagem possui um título. $ImgBorder
também deve ser especificado. As janelas de imagem podem responder a mensagem $MsgSetImage. Essa mensagem, quando acompanhada do nome de um arquivo de imagem, faz com que a janela de imagem carregue e exiba o arquivo indicado. |
KNOWLEDGEBASE WinImage;
TYPES ImageRec IS RECORD fileName: STRING; whdlImage: WINDOW; END;
ROUTINES PROCEDURE ImageExample;
PRIVATE
ROUTINES EVENT ImageEvent(REF imageData: ImageRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,{'File','Open','/L','Exit',''}: LIST OF STRING); WinCreateImage($Handle,imageData.whdlImage, 'os2logo.bmp',1,1,WinWidth($Handle), WinHeight($Handle),'',$ImgScroll,1); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN IF WinFileDialog($Handle,imageData.fileName,'*.bmp', 10,10,'Select new image', 0 ) >= 1 THEN SendMessage(imageData.whdlImage, $MsgSetImage,imageData.fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgSize THEN SendMessage(imageData.whdlImage,$MsgSetSize, $EventParm(1,INTEGER),$EventParm(2,INTEGER)); ELSWHEN $MsgImage THEN WinMessageBox($Handle,'Image',$MBOK,$EventParm(1, INTEGER)); END; END (* Image Event *);
PROCEDURE ImageExample IS VARIABLES whdl: WINDOW; data: ImageRec ACTIONS WinCreate($Desktop,whdl,ImageEvent{data},0,0,0,0, 'Image test', BitOr($WinBorder,$WinTitle,$WinResize, $WinMenu,$WinMinMax,$WinTaskList, $WinSysMenu,$WinAutoPos, $WinAutoSize)); WinWait(whdl); END (* Image Example *);
Cria uma região retangular sensível a cliques do mouse.
FUNCTION WinCreateMouseRect(VAL whdl: WINDOW, VAL xLoc, yLoc, xLen, yLen, id: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdl | Identificador da janela onde o retângulo está sendo criado. O argumento whdl pode fazer referência a uma janela padrão ou a uma janela de rolagem. |
xLoc | Coordenada X do canto superior esquerdo da região do mouse. |
yLoc | Coordenada Y do canto superior esquerdo da região do mouse. |
xLen | Largura da região do mouse. |
yLen | Altura da região do mouse. |
id | Inteiro utilizado para identificar uma determinada região do mouse. |
Por padrão, o TSD Script não relata eventos do mouse dentro de uma janela. Entretanto, você pode fazer com que eventos como deslocamentos do mouse e cliques sejam relatados, criando uma região do mouse. A região do mouse é uma região retangular dentro de uma janela. Quando você cria uma região do mouse, atribui um ID inteiro a ela. O ID é relatado à janela principal juntamente com todos os eventos do mouse dentro dessa região.
Sempre que ocorrer atividade dentro de uma região do mouse, a mensagem $MsgMouse é enviada ao pai dessa região, juntamente com esses quatro parâmetros de evento inteiros:
Dica:
WinSetMousePointer pode ser chamado sempre que uma de suas janelas
processar um evento $MsgMouse.
KNOWLEDGEBASE WinMouse;
ROUTINES PROCEDURE MouseExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' , 'Exit','', 'Pointer type', 'MouseDefaultPtr', 'MouseuLArrowPtr', 'MouseURArrowPtr', 'MouseDRArrowPtr', 'MouseDLArrowPtr', 'MouseUPResizePtr', 'MouseURResizePtr', 'MouseRTResizePtr', 'MouseDRResizePtr', 'MouseDNResizePtr', 'MouseDLResizePtr', 'MouseLTResizePtr', 'MouseULResizePtr', 'MouseCrossPtr', 'MouseHandPtr', 'MouseHourGlassPtr', 'MouseIBeamPtr',''}: LIST OF STRING;
ROUTINES EVENT MouseEvent(REF pointerType: INTEGER) IS ROUTINES
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN pointerType := $MouseDefaultPtr; ELSWHEN 202 THEN pointerType := $MouseuLArrowPtr; ELSWHEN 203 THEN pointerType := $MouseURArrowPtr; ELSWHEN 204 THEN pointerType := $MouseDRArrowPtr; ELSWHEN 205 THEN pointerType := $MouseDLArrowPtr; ELSWHEN 206 THEN pointerType := $MouseUPResizePtr; ELSWHEN 207 THEN pointerType := $MouseURResizePtr; ELSWHEN 208 THEN pointerType := $MouseRTResizePtr; ELSWHEN 209 THEN pointerType := $MouseDRResizePtr; ELSWHEN 210 THEN pointerType := $MouseDNResizePtr; ELSWHEN 211 THEN pointerType := $MouseDLResizePtr; ELSWHEN 212 THEN pointerType := $MouseLTResizePtr; ELSWHEN 213 THEN pointerType := $MouseULResizePtr; ELSWHEN 214 THEN pointerType := $MouseCrossPtr; ELSWHEN 215 THEN pointerType := $MouseHandPtr; ELSWHEN 216 THEN pointerType := $MouseHourGlassPtr; ELSWHEN 217 THEN pointerType := $MouseIBeamPtr; END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); WinCreateMouseRect($Handle,1,1, WinWidth($Handle), WinHeight($Handle),1); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); ELSWHEN $MsgMouse THEN WinSetMousePointer($handle,pointerType); END; END (* Mouse Event *);
PROCEDURE MouseExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MouseEvent{ $MouseDefaultPtr}, 0,0,60,20, 'Mouse example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Mouse Example *);
Para obter mais informações, consulte Indicadores do Mouse e Mensagens do Mouse.
Cria uma janela de rolagem sem modelo, que pinta a si mesma automaticamente conforme necessário.
WinCreateScrollWindow(VAL whdlParent: WINDOW, REF whdl: WINDOW,| VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title, font: STRING, VAL pointSize, style: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdlParent | Pai da janela de rolagem. |
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 não for necessário nenhum processamento de evento, $NullHandler pode ser usado. |
xLoc | A localização X do canto superior esquerdo da janela. As coordenadas X e Y são medidas em células de caracteres. |
yLoc | A localização Y do canto superior esquerdo da janela. |
width | A largura (dimensão X) da janela, excluindo a moldura. A largura é medida em células de caracteres. |
height | A altura (dimensão Y) da janela, excluindo a moldura, a barra de título, a barra de menus, a barra de ferramentas e a barra de status. A altura é medida em células de caracteres. |
title | O título exibido na barra de título da janela. A janela deve ter uma barra de título para que o título seja 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. Consulte a seção Notas da instrução WinCreate para obter mais informações. |
Primeiras Mensagens Recebidas
Quando uma janela de rolagem é criada, as seguintes mensagens são recebidas na ordem mostrada:
Como Rastrear e Pintar Janelas de Rolagem
WinCreateScrollWindow pode ser usado para criar uma janela de rolagem virtual. Em janelas genéricas, o programador é responsável por saber o conteúdo da janela e exibir novamente a janela ao receber uma mensagem $MsgPaint. As janelas de rolagem "sabem" seu conteúdo. Os programadores gravam informações através de WinWrite, WinWriteLN, etc.
Nota: Para uma lista das mensagens que as janelas de rolagem podem gerar e receber, consulte Mensagens do TSD Script.
Como Personalizar Janelas de Rolagem
As janelas de rolagem podem conter barras de ferramentas, barras de menus, barras de status e todos os outros elementos disponíveis em janelas genéricas.
KNOWLEDGEBASE Scroll;
CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','E~xit',''}: LIST OF STRING;
TYPES EditorData IS RECORD statusLine: STRING; lines: LIST OF STRING; END;
ROUTINES PROCEDURE FileView;
PRIVATE
ROUTINES
EVENT EditorEvent(REF editorData: EditorData) IS ROUTINES PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS VARIABLES fileName: STRING; editFile: FILE; result: INTEGER; ACTIONS WHEN selection IS MENU_OPEN THEN WinFileDialog($Handle,fileName,'*.KB',5,5, 'Select file to edit',0); IF FOpen(editFile,fileName,$Read) > 0 THEN FReadText(editFile,editorData.lines); FClose(editFile); editorData.statusLine := ' File: ' & fileName; WinClear( $Handle ); WinWriteLN($Handle,editorData.lines); PostMessage($Handle,$MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Process Main Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); editorData.statusLine := 'File:'; ELSWHEN $MsgMenu THEN ProcessMainMenu($MenuSelection); ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,editorData.statusLine); END; END (* Editor Event *);
PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,EditorEvent, 0,0,0,0, 'KML File viewer', $SystemMonospaced,10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinStatus, $WinAutoPos,$WinAutoSize, $WinVScroll,$WinHScroll, $WinTaskList)); WinWait(whdl); END (* File View *);
Para obter mais informações, consulte Estilos de Janelas.
Exibe um editor de uma linha para o tipo de dados do valor de edição.
FUNCTION WinEditField(VAL parent: WINDOW, REF value: ANY, VAL xLoc, yLoc, length: INTEGER, title: STRING, VAL style: INTEGER): INTEGER;
Nome do Argumento | Descrição |
parent | Pai da nova janela a ser criada. No Windows, se a
janela principal estiver desativada quando WinEditField for
chamado, a janela WinEditField não limita a janela principal. No Windows, se $Desktop for especificado como pai em combinação com $WinModal, a janela criada com WinEditField é sem modelo. A seção a seguir descreve os sinalizadores de estilo, como $WinModal. |
xLoc | A localização X do canto superior esquerdo da janela. |
yLoc | A localização Y do canto superior esquerdo da janela. |
length | A largura (dimensão X) da janela, excluindo a moldura. |
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. No Windows, a constante $WinTitle é incluída automaticamente se não for especificada. |
style | Um inteiro que contém uma lista de sinalizadores de estilo que controlam a aparência da janela. Consulte a seção a seguir sobre os sinalizadores de estilo disponíveis para obter detalhes. |
Os sinalizadores de estilo disponíveis para WinEditField estão
relacionadas na tabela.
Sinalizador de Estilo | Descrição |
$WinAutoPos | O sistema determina a melhor posição para a janela. Os parâmetros xLoc e yLoc são ignorados. |
$WinAutoSize | O sistema determina o melhor tamanho para a janela. Os parâmetros xLen e yLen são ignorados. |
$WinBorder | A janela tem uma moldura semelhante a uma caixa de diálogo. Diversos estilos requerem uma moldura. No Windows, a constante $WinBorder é incluída automaticamente caso não seja especificada. |
$WinDefaultStyle | Um estilo padrão definido pelo sistema montado a partir de $WinBorder, $WinResize, $WinTitle e $WinSysMenu. |
$WinField | A janela tem uma moldura de um pixel (como os contornos das caixas de diálogo). Esse estilo é mutuamente exclusivo com $WinBorder. |
$WinInvisible | A janela é criada oculta. Ela deve receber uma $MsgShow para tornar-se visível. |
$WinModal | Quando o campo de edição é criado, é uma janela modal. O pai da janela do campo de edição e todas as outras janelas filhas são desativados. |
$WinNone | A janela é simples, sem moldura, barra de título ou outros elementos. |
$WinTaskList | O título da janela é digitado na lista de tarefas do sistema. O usuário pode ativar a janela da lista de tarefas. Esse estilo deve ser usado genericamente para a janela principal de um aplicativo. |
$WinTitle | A janela possui uma barra de título. Se esse estilo não estiver presente, não é exibido título, mesmo que seja especificado um título como um dos parâmetros. Uma barra de título torna a janela móvel. |
VARIABLES intVal: INTEGER; ACTIONS WinEditField($Desktop,intVal,0,0,30,'Integer', $WinAutoPos+$WinBorder+ $WinTitle);
DlgBox
Ativa ou desativa uma caixa de diálogo ou uma janela.
FUNCTION WinEnableWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
Nome do Argumento | Descrição |
whdl | Identificador da caixa de diálogo ou da janela cujo estado ativado deve ser alterado. |
state | Definido como TRUE se a janela deve ser "ativada", definido como FALSE se deve ser "desativada" |
Essa função também é implementada como uma mensagem que pode ser passada para a forma de caixa de diálogo ou janela ($MsgEnable).
KNOWLEDGEBASE enable;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Test Window', $WinDefaultStyle); WinEnableWindow(Handle, FALSE); SysDelay(1000); WinEnableWindow(HANDLE, TRUE); WinWait(Handle); END;
Exibe uma caixa de diálogo de seleção de arquivos.
FUNCTION WinFileDialog(VAL whdlParent: WINDOW, REF fileName: STRING, VAL startMask: STRING, VAL xLoc, yLoc: INTEGER, VAL title: STRING, VAL style: INTEGER ): INTEGER;
Nome do Argumento | Descrição |
whdlParent | Pai da nova janela a ser criada. |
fileName | Retorna o nome do arquivo selecionado pelo usuário. Se o usuário cancelar a caixa de diálogo, o valor é inalterado. |
startMask | A máscara de seleção do arquivo inicial, caracteres curinga * e ? podem ser utilizados. |
xLoc | A localização X do canto inferior esquerdo da janela. |
yLoc | A localização Y do canto inferior esquerdo da janela. |
title | O título 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. |
style | O estilo da caixa de diálogo do arquivo. Os valores possíveis são:
|
Você pode usar WinFileDialog sempre que desejar solicitar dos usuários um nome de arquivo, ao abrir um novo arquivo ou ao permitir que o trabalho seja salvo em um novo arquivo. Definindo o argumento startMask, você pode utilizar WinFileDialog para selecionar tipos específicos de arquivos (por exemplo, utilize *.kb para bases de informações).
Dica: Os parâmetros xLoc e yLoc não têm efeito no Windows.
VARIABLES fileName: STRING; ACTIONS IF WinFileDialog($Desktop,fileName,'*.TXT', 10,10, 'Select file to edit',0) > 0 THEN LoadAndEdit(fileName); END;
Consulta a posição da coordenada X de qualquer identificador de janela válido (janela ou caixa de diálogo). A posição 00 é o canto superior esquerdo.
FUNCTION WinGetXPos (VAL whdl: Window): Integer;
Nome do Argumento | Descrição |
whdl | Identificador da janela para consultar a posição X |
WinGetXPos difere de WinX porque consulta o canto superior esquerdo da janela ou da caixa de diálogo, enquanto WinX retorna uma posição de caractere dentro da janela. A posição da coordenada X retorna se houver êxito.
KNOWLEDGEBASE GetPos;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; x,y : INTEGER; ACTIONS WinCreateScrollWindow($Desktop, Handle, $Nullhandler, 10,10,75,25, 'Test', $SystemMonospaced,10, $WinDefaultStyle); x := WinGetXPos(Handle); y := WinGetYPos(Handle); WinWriteLN(Handle, 'The upper left corner of the window is at (' & x & ', ' & y & ')'); WinWait(Handle); END;
WinGetYPos
Consulta a posição da coordenada Y de qualquer identificador de janela válido (uma janela ou uma caixa de diálogo). A posição 00 é o canto superior esquerdo da janela ou caixa de diálogo.
FUNCTION WinGetYPos (VAL whdl: Window): Integer;
Nome do Argumento | Descrição |
whdl | Identificador da janela para consultar a posição Y |
WinGetYPos difere de WinY porque consulta o canto superior esquerdo de uma janela ou caixa de diálogo, enquanto WinY retorna uma posição de caractere dentro de uma janela.
Consulte o exemplo da instrução WinGetXPos.
WinGetXPos
Move o indicador de posição para uma nova localização.
FUNCTION WinGoToXY(VAL whdl: WINDOW, VAL xLoc, yLoc:
INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela onde a operação deve ser executada |
xLoc | Nova localização X do indicador de posição atual |
yLoc | Nova localização Y do indicador de posição atual |
WHEN $Event IS $MsgChar THEN WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1); ELSWHEN $KeyRightArrow THEN WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle)); END; END;
Consulta a altura de uma janela e retorna a altura, expressa em células de caracteres.
FUNCTION WinHeight(VAL whdl: WINDOW): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela onde a operação deve ser executada. |
WinHeight retorna a altura da área do cliente atual de uma determinada janela.
WinCreateMouseZone($Handle,1,1, WinWidth($Handle),WinHeight($Handle),1);
Carrega um menu de um arquivo de recurso e o anexa a uma janela específica. (Qualquer menu anexado anteriormente é substituído).
FUNCTION WinLoadMenuBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nome do Argumento | Descrição |
win | Formulário, genérica, rolagem ou hipertexto |
resource | Cadeia de recursos no formato padrão |
Um atalho para anexar um menu a um formulário é dar ao menu o nome do formulário dentro do mesmo arquivo .df. O menu é carregado automaticamente se o formulário tiver o estilo do menu.
KNOWLEDGEBASE loadmenu;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (*load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadMenuBar(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
Carrega um recurso de menu de um arquivo .df e o associa como menu popup da janela, substituindo qualquer menu popup existente. O menu popup aparece automaticamente e utiliza a ação correta do mouse para a plataforma. As opções do menu popup são relatadas por $MsgMenu.
FUNCTION WinLoadPopupMenu( VAL whdl: WINDOW, VAL menu: STRING, ): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador do formulário da caixa de diálogo ou da janela cujo texto do título deve ser alterado |
menu | O nome completamente qualificado do arquivo de especificação que descreve o menu para o menu criado |
Quando se usa WinLoadPopupMenu, o menu aparece automaticamente com a ação correta do mouse para a plataforma. Quando o usuário seleciona um item do menu, $MsgMenu é enviado para a janela. Essa ação difere da função antiga WinPopup. Em WinPopup, o usuário precisaria capturar a ação correta do mouse e chamar WinPopup para exibir o menu popup. WinPopup retornaria o id do item de menu selecionado.
KNOWLEDGEBASE loadpop;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadPopupMenu(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
WinSetPopupMenu
Carrega uma barra de ferramentas de um arquivo de recursos e a anexa a uma janela específica. (Qualquer barra de ferramentas anexada anteriormente é substituída).
FUNCTION WinLoadToolBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nome do Argumento | Descrição |
win | Formulário, genérica, rolagem ou hipertexto |
resource | Cadeia de recursos no formato padrão |
Um atalho para anexar uma barra de ferramentas a um formulário é especificar uma barra de ferramentas com o nome do formulário dentro do mesmo arquivo .df. A barra de ferramentas é carregada automaticamente se o formulário tiver o estilo da barra de ferramentas.
KNOWLEDGEBASE loadtool;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the toolbar with id MAIN_TOOLBAR from the file loadtool.df *) WinLoadToolBar(mainWindow, 'loadtool[MAIN_TOOLBAR]'); WinWait(mainWindow);
END;
Define o estado verificado de um item do menu.
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nome do Argumento | Descrição |
whdl | Identificador de uma janela com uma barra de menus |
id | O ID do item do menu a ser definido |
newState | O novo estado do item do menu |
WinMenuCheckItem permite que você verifique e elimine a verificação de um item do menu. O status verificado atual de uma determinada opção pode ser testado quando você chamar WinMenuItemIsChecked.
Nota: Os itens do menu podem ser identificados com cadeias ou inteiros.
WinMenuCheckItem($Handle,204,TRUE);
Define o estado ativado ou desativado de um item do menu.
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nome do Argumento | Descrição |
whdl | Identificador de uma janela com uma barra de menus |
id | O ID do item do menu a ser definido |
newState | O novo estado do item do menu |
WinMenuEnableItem pode ser usado para ativar ou desativar um item do menu. Os itens desativados não estão disponíveis. A constante $SysMenuCloseItem pode ser usada para ativar ou desativar o item Fechar do menu do sistema de uma janela da seguinte forma:
(* This line enables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, TRUE); (* This line disables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, FALSE);
Nota: Os itens do menu podem ser identificados com cadeias ou inteiros.
WinMenuEnableItem($Handle,204,TRUE);
Testa se um item de menu está verificado.
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: STRING): BOOLEAN;
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: INTEGER): BOOLEAN;
Nome do Argumento | Descrição |
whdl | Identificador de uma janela com uma barra de menus |
id | O ID do item do menu a ser definido |
O TSD Script permite que você configure uma barra de menus de itens de seleção. Você pode verificar um determinado item do menu para saber se está selecionado, chamando WinMenuItemIsChecked e passando dois itens:
Nota: Os itens do menu podem ser identificados com cadeias ou inteiros.
IF WinMenuItemIsChecked($Handle,204) THEN CarryOutAction; END;
Exibe uma caixa de mensagens e retorna uma seleção do usuário. (O texto da mensagem é limitado a 512 caracteres).
FUNCTION WinMessageBox(VAL whdlParent: WINDOW, VAL title: STRING, VAL style: INTEGER, VAL message: STRING): INTEGER;
Rotinas de Tratamento de Eventos e DDE
Não use WinWait ao processar uma mensagem $MsgDDEInitiate. $MsgDDEInitiate distribui uma mensagem para os aplicativos e bloqueia a fila de mensagens até que uma resposta seja retornada. Enquanto isso, a instrução WinWait inicia uma rotina de tratamento de eventos que também aguarda uma resposta da fila de mensagens. WinWait impede que os outros aplicativos enviem mensagens para a fila de mensagens. O resultado é um bloqueio e o travamento efetivo da interface com o usuário.
Nome do Argumento | Descrição |
whdlParent | O pai da caixa de mensagens. Se for $Desktop, a caixa de mensagens não pode ser modal. |
title | O título exibido na barra de título da janela. A janela deve ter uma barra de título para que o título seja exibido. Utilize o estilo $WinTitle. |
style | O estilo da caixa de mensagens. Este é uma máscara de
bit que controla a aparência e o comportamento da caixa de mensagens. Consulte a seção Notas para obter uma explicação das opções de estilo. |
messageText | Texto da mensagem para exibição. São suportados quebra de linha e nova linha. (Limitado a 512 caracteres). |
Descrição de uma Caixa de Mensagens
Uma caixa de mensagens é uma caixa de diálogo simples que você cria com WinMessageBox. Não é necessário criar um arquivo .df ou utilizar o Criador de Interface.
Ao utilizar WinMessageBox, você pode incluir apenas um título, uma cadeia de texto (a mensagem) e até três botões. Você não pode incluir nenhuma outra caixa de texto ou controle.
Como Personalizar Caixas de Mensagens
O estilo de uma caixa de mensagens é uma combinação das seguintes
definições:
Nome do Estilo | Descrição |
Estilo do botão | Indica as opções de botão que aparecem dentro da caixa de mensagens. |
Estilo do ícone | Indica um tipo de ícone a ser exibido dentro da caixa de mensagens. |
Botão padrão | Indica qual dos botões deve ser o padrão. |
Modo | Indica a modalidade da caixa de mensagens. Isso determina se o usuário pode fazer algo antes de responder a caixa de mensagens. |
Título | No OS/2, se você deseja incluir uma barra de título na janela, deve especificar a constante $WinTitle. No Windows, todas janelas têm uma barra de título automaticamente. |
Para criar o estilo de uma caixa de mensagens, selecione um dos seguintes estilos de botão:
Selecione alguns dos seguintes estilos de ícone, ou nenhum deles:
Selecione um dos seguintes estilos de ícone, ou nenhum deles:
Selecione um dos seguintes modos, ou nenhum deles:
Se a caixa de mensagens tiver um botão Cancelar, a tecla Esc fecha a caixa de mensagens e WinMessageBox retorna $MBResultCancel. Se não houver um botão Cancelar, a tecla Esc não tem efeito. $MBResultError é retornado apenas no caso de uma condição de erro interno.
A caixa de mensagens dimensiona automaticamente, com base no texto da mensagem e do comprimento do título. A caixa de mensagens pode ter até dois terços da altura da tela.
WinMessageBox ($Desktop,'Error',$MBOK+$MBIconError, 'Unable to open file');
Para obter uma lista de sinalizadores de estilo, consulte Estilos da Caixa de Mensagens.
Pai da janela passada como seu argumento.
FUNCTION WinParent(VAL whdl: WINDOW): WINDOW;
Nome do Argumento | Descrição |
whdl | O identificador da janela cujo pai é requisitado |
VARIABLES parent: WINDOW; ACTIONS parent := WinParent($Handle);
Retorna o pai da janela passada como seu argumento.
Define as cores atuais de desenho de uma janela. As cores de desenho determinam a cor do texto e a cor do background.
FUNCTION WinSetColor(VAL whdl: WINDOW, VAL foreGround: INTEGER; VAL backGround: INTEGER): INTEGER;
Nome do Argumento | Descrição |
whdl | O identificador da janela onde a operação deve ser executada. |
foreGround | A nova cor de desenho do primeiro plano. Consulte a seção Notas para obter uma lista completa das constantes de cor. |
backGround | A nova cor de desenho do background. Consulte a seção Notas para obter uma lista completa das constantes de cor. |
Constantes de Cor Pré-Definidas
As seguintes constantes de cor pré-definidas estão disponíveis:
Nota: $WinDefaultColor seleciona o primeiro plano e o background padrão do sistema para a janela.
$WinTransparent faz com que todas as operações de saída de texto escrevam texto transparente até uma chamada para WinSetColor com $WinOpaque como cor do background. O texto transparente é o padrão.
$WinOpaque faz com que todas as operações de saída de texto escrevam texto opaco. Isso é, um retângulo em torno do texto é limpo com a cor do background atual. $WinOpaque permanece ativo até uma chamada para WinSetColor com $WinTransparent como cor do background.
Como Acessar Cores Definidas pelo Sistema Operacional
Utilize as seguintes constantes pré-definidas para acessar cores configuráveis pelo usuário para o sistema operacional:
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); END;
Tivoli Service Desk 6.0 Developer's Toolkit - Referência de Linguagem de Script