GRAPHICAL BUILDER & VISUAL TECH

Flag que liga ou desliga a detecção de erro no Graphical Builder

Ao ser executado o Graphical Builder percebe a ocorrência de erros de execução de seu próprio código e da aplicação que está sendo desenvolvida.
Esta opção pode ser regulada pelo seguinte flag:
Para ligar:
s ^%DD("SYSTEM","DEBUG")=1
Para desligar:
s ^%DD("SYSTEM","DEBUG")=0
O comportamento default é interceptar todas as ocorrências de erro durante a execução do builder e, nestes casos, retorna
r ao seu menu principal.
Fonte para ampliar a tela do modo caractere no Visual Tech

O arquivo
8514fon.zip pode ser obtido no diretório Usuários de nossa BBS.
Considerando uma resolução de 640x480, a tela de modo caractere do Visual Tech se apresentará tal como um terminal ocupando todo o monitor.
O tópico
Windows do arquivo de configuração do Visual Tech, arquivo .INI, deverá conter as seguintes entradas:
[Windows]
TermFontSize=14
TermFontName=8514oem
LogErrorFontSize=14
LogErrorFontName=8514oem
Identificar se uma cópia é cliente

Consulte o valor da constante $v(c,90) que retornará
1 no caso da cópia ser cliente.
Impressão utilizando o Visual Tech

Após a análise periódica que fazemos sobre os dados colhidos pelo nosso suporte, percebemos ser objeto de relativa dificuldade a impressão utilizando o Visual Tech.
Vale observar que os procedimentos que serão descritos aplicam-se unicamente a versões do Visual Tech iguais ou posteriores a 4.2 r 17 e utilitários v 4.2 r17.
Impressão utilizando o comando OPEN na classe de dispositivos 300
Nesta modalidade o Visual Tech envia os caracteres que estão sendo solicitados pelo programador por meio do comando write diretamente para a impressora.
O usuário deve ir na opção de menu do Visual Tech,
Arquivo / Configura impressão, e definir a impressora na qual quer imprimir como específica. Isto feito, certifique-se que no utilitário %CONFIG, o tipo da referida impressora esteja corretamente definido para a porta 300.
Impressão utilizando os recursos do Windows
O Visual Tech for Windows fornece facilidades de impressão avançada, que permitem ao programador elaborar saídas gráficas em impressoras. A idéia implementada visa obter um tipo de interface conhecida como WYSIWYG, do inglês "What You See Is What You Get" ("O que você vê é aquilo que você obtém"). Ou seja, habilitar o programador a construir uma aplicação que seja capaz de mostrar o resultado final em uma janela correspondendo exatamente ao que sairá na impressora.
Assim como em todo ambiente multiprocessado onde é possível executar mais de um processo ao mesmo tempo e mais de um deles imprimindo algo na mesma impressora, o Windows faz uso de um
spooler de impressão. Assim assegura-se que somente um serviço de impressão (ou Job) estará sendo executado por vez. Qualquer aplicação que faz uso da impressora terá que inicializar um serviço de impressão. O spooler obriga que todas as ações pertinentes a um serviço sejam guardadas em disco. Ao término do serviço, o resultado final é enfileirado até que o spooler esteja pronto para imprimi-lo. Finalizada a impressão, os dados guardados em disco serão descartados.
Janelas e Impressoras
Os recursos avançados de impressão do Visual Tech for Windows permitem que os controles do tipo shape, label e picturebox contidos em uma janela, possam ser impressos. Para tanto, basta inicializar um serviço de impressão associando uma janela a ele. Os comandos usados são os seguintes:

ZGW BEGINDOC(ID=expressão): onde a "expressão" corresponde ao número de identificação da janela a ser associada ao serviço de impressão. A janela a ser usada deverá existir antes deste comando. O nome do serviço de impressão que será mostrado na janela do Gerenciador de Impressora (Print Manager), será o texto contido na Barra de Título da janela associada ao serviço. A janela usada como janela de impressão não necessita necessariamente ser uma janela visível. Ela servirá apenas como armazenadora de objetos para impressão. Para imprimir uma página, que na verdade será a imagem da janela na impressora, usa-se o comando:

ZGW EJECT(ID=expressão): onde a "expressão" corresponde ao ID da janela associada ao serviço de impressão. Este comando será executado para todas as páginas do relatório a ser gerado. Obviamente, o conteúdo da janela associada poderá ser alterado entre um página e outra. Para terminar o serviço de impressão e colocar o resultado na fila, usa-se o comando:

ZGW ENDDOC(ID=expressão): onde a "expressão" corresponde ao ID da janela associada ao serviço de impressão. Terminado a sessão de impressão a janela poderá ser fechada.

Medidas da Janela
No Visual Tech for Windows, as coordenadas dos objetos são fornecidas em pontos. Pode-se obter a relação de quantos pontos na tela correspondem a uma polegada utilizando-se a função:
Número de Pontos por Polegada = $ZGW(LOGXPIXELS,ID) para a coordenadas horizontais (X) e
Número de Pontos por Polegada = $ZGW(LOGYPIXELS,ID) para a coordenadas verticais (Y). Normalmente os valores para as coordenadas horizontais e verticais são iguais.
Assim se for necessário imprimir um SHAPE de 2 por 1 polegadas na janela de ID=3, pode-se usar:
S LX=$ZGW(LOGXPIXELS,ID)
S LY=$ZGW(LOGYPIXELS,ID)
ZGW I(TYPE="SHAPE":...:WIDTH=2*LX:HEIGHT=LY:...)
A janela associada estará sempre limitada à área do papel. Assim, se as coordenadas de algum objeto ultrapassar a área útil do papel, o objeto poderá sair cortado ou até não ser impresso.
Evento de Impressão
De modo a dar maior controlabilidade ao processo de impressão durante uma sessão, é gerado um evento que permitirá a interação entre o programa de impressão e o spooler. No caso de falta de espaço em disco por exemplo, o programa pode exibir uma mensagem notificando o fato ao usuário que poderá liberar espaço do disco e continuar a impressão, ou ainda, simplesmente cancelar todo o processo.
O evento gerado chama-se ABORTDOC e funciona como uma função extrínseca, passando como parâmetro a natureza do evento causador do erro ou uma simples verificação do desejo do usuário de interromper o processo. O código de retorno indicará se a impressão deverá prosseguir ou não.
Exemplos de impressão utilizando os recursos do Windows
Um dos exemplos disponíveis pode ser encontrado no arquivo vtexem04.exe localizado no diretório Temporário de nossa BBS ou no nosso site (http://www.xtension.com.br/ftp/vtexem04.exe ).
O arquivo leiame.txt contem esclarecimentos específicos sobre este exemplo.
Em outro caso, é apresentada nesta seção uma aplicação responsável por imprimir cartões de visita de uma empresa fictícia. A figura abaixo mostra o cartão de visitas produzido pela aplicação:
pastedGraphic
No exemplo são criadas duas janelas. A primeira serve de janela de impressão e portanto será associada ao serviço de impressão. Nesta janela, alguns controles do tipo LABEL e SHAPE são inseridos. É importante notar que a janela é criada como não modal, permitindo que o fluxo de instruções corra normalmente após sua criação e a janela possa ser associada ao serviço de impressão nas próximas instruções.
Uma outra janela é criada para perfazer o controle do serviço, permitindo assim ao usuário interromper a qualquer momento a impressão. Para tanto é utilizado o evento ABORTDOC, que neste caso simples tem seu argumento ignorado, e utilizando-se uma janela não modal. A instrução
SET A=$ZGWAITEVENT assegura que, durante a execução do evento, o usuário possa
clicar o botão de cancelamento, que por sua vez irá alterar o valor da variável flag, pondo fim ao ciclo de impressão (linha ploop). A variável especial, $ZGWAITEVENT, permite que um outro evento possa acontecer durante o processamento dos eventos de ABORTDOC.
Este exemplo pode ser encontrado no arquivo vtexem10.exe localizado no diretório Temporário de nossa BBS ou no nosso site (
http://www.xtension.com.br/ftp/vtexem10.exe ).
O arquivo leiame.txt contem esclarecimentos específicos sobre este exemplo.
Utilitários de impressão (%wimpimp)
Um outro exemplo existente permite que o programador trabalhe normalmente como se fosse imprimir por meio da porta 300. O utilitário %wimpimp que é acionado, encarrega-se de imprimir via Windows de modo absolutamente transparente.
Este exemplo pode ser encontrado no arquivo vtexem11.exe localizado no diretório Temporário de nossa BBS ou no nosso site (
http://www.xtension.com.br/ftp/vtexem11.exe ).
O arquivo leiame.txt contem esclarecimentos específicos sobre este exemplo.
Como resultado podemos destacar a impressão utilizando a impressora default do Windows sem qualquer dificuldade adicional já que podemos usar o comando write normalmente. Alem disto, torna-se possível consultar as páginas anteriormente impressas.
Utilitários de impressão (%wprinter / Chamada 1)
Este utilitário tem por intenção facilitar a vida dos programadores.
Relembrando, o conceito é que uma rede contem várias impressoras espalhadas e que estão presas em algumas máquinas cliente e em servidores de impressão. O importante é compreender que elas podem ser enchergadas pelo Windows.
Além disso, o Visual Tech precisa ligar o tipo correspondente a cada uma das referidas impressoras.
O que o utilitário acima faz é permitir o cadastramento prévio de todas as impressoras com as quais o sistema possa trabalhar definindo inclusive os tipos correspondentes.
Isto feito, outras entradas correlatas deste utilitário permitem a especificação da impressora com a qual se quer trabalhar sem qualquer interferência do usuário.
Ativação da impressora básica da estação (Chamada 2)
s x=$$BASICA^%wprinter(Idpai,Estação)
Idpai = Número do Form que chama (0 para telas caracter)
Estação = $SY
Ativação da impressora especifica (Chamada 3)
s x=$$ROTINA^%wprinter(IdPai,Estação,Rotina,OnOff)
Idpai = Número do Form que chama (0 para telas caracter)
Estação = $SY da estação
Rotina = Identificação da Rotina (ex. NF ou TICKET)
OnOff = 1 para ligar (ativar) a impressora especifica ou 0 para retornar para a impressora básica (equivale a chamada 2)
Chamada no modo de uso do aplicativo (após a fase de definição)

Ao entrar no menu do Sistema execute a chamada 2 para ter certeza que a impressora vai estar configurada para o estado normal.

Antes de uma impressão especifica (antigamente na porta 301) execute a chamada 3 passando qual a impressão que se deseja executar seguido dos comandos o 300 u 300


Ex: s x=$$ROTINA^%wprinter(0,$SY,"NF",1) o 300 u 300


Após o término da impressão execute u 0 c 300 s x=$$ROTINA^%wprinter(0,$SY,"",0) para retornar a definição ao estado inicial.

No início da rotina %wprinter, outras informações podem ser encontradas sobre os parametros necessários.

Rotinas pertencentes ao Graphical Builder

A lista segui
nte especifica as rotinas que pertencem ao Graphical Builder:

%DESK

%desk

%DD*

DD*

%W*

%w*