DDK GUI Parte 7 Tecnologia 1
Agenda 1 Parte Nomenclatura Estilos Cadastro Simples Cadastro Simples Alteração Cadastro Simples Inclusão Cadastro Complexo Cadastro Complexo Alteração Pai x Filho Atualiza Filho Manutenção de Filhos 2
Agenda Pai x Filho Atualiza Ambos Manutenção de Pais Consulta Simples Consulta Complexa Consulta Relacionamento Relatórios / Cálculos / Fechamentos Parâmetros Únicos Parâmetros Múltiplos Formação Formação sem Navegação 3
Agenda Importação Exportação Pesquisa Vá Para Digitação Rápida Painéis Funções Relatórios Relacionados Funções Consultas Relacionadas Menu de Barra 4
Agenda Parte 2 Construção SmartQuery SmartViewer Padrão SmartViewer Sem Campos de Tabela SmartViewer Só com Campos Chave Parte 3 CustomBrowser Inclui/Modifica CustomBrowser Zoom Wizard Vá Para Pesquisa 5
Agenda Cadastro Simples Parte 4 Cadastro Simples Alteração Cadastro Simples Inclusão Cadastro Complexo Cadastro Inclui/Modifica Filho Cadastro Pai x Filho Atualiza Filho Cadastro Inclui/Modifica Pai Cadastro Pai x Filho Atualiza Ambos Parte 5 Consulta Simples 6
Agenda Consulta Complexa Consulta Relacionamentos Parâmetros Únicos Formação Parte 6 Relatórios Importação Exportação CustomBrowser Digitação Digitação Rápida 7
Agenda Parte 7 Includes e Utilitários Padrão UT_FIELD.I UT-RTLBL.I UT-RUN.I UT-MSGS.P IND01-10.I, IND11-50.I E IND51500.I UT-TABLE.I UT-LITER.I UT-LIMIT.P 8
Agenda UT-GLOB.I I-FREEAC.I UT-DIR.P BTB917ZX.P BTB917ZY.P BTB917ZZ.P UT-VRBIN.P UT-FINFO.P UT-CMDLN.P 9
Agenda UT-OSVER.I I-COUNTDS.I UT-WIN.I UT-TRACE.P Parte 8 Validações Validações de Tela Validações Triggers de Dicionário Mensagens Regras para Criação de Mensagens 10
Agenda Mensagens em Outros Idiomas Procedures Reutilizáveis Portabilidade de RCODES Customizações API - Application Program Interface UPC - User Program Call 11
UT-FIELD.I Objetivo Retornar propriedades dos campos do dicionário de dados, como label, column-label, etc. 12
UT-FIELD.I Formato {utp/ut-field.i <banco> <tabela> <campo> <propriedade>} Onde: <banco>: nome lógico do banco de dados que contém o campo; 13
UT-FIELD.I <tabela>: nome da tabela que contém o campo; <campo>: nome do campo; <propriedade>: número que identifica a propriedade conforme tabela a seguir: 14
UT-FIELD.I 1 2 3 4 5 6 7 Número Propriedade Label Column-label Help Format Initial Description Data Type 15
UT-FIELD.I O retorno é obtido através do return-value. Exemplo: def var c-tipo as character no-undo. {utp/ut-field.i mgadm conta tipo 1} assign c-tipo:label in browse br-table = returnvalue. 16
UT-RTLBL.I Objetivo Permitir a utilização de literais para colar labels em retângulos na tela minimizando os problemas de internacionalização. 17
UT-RTLBL.I Utilização Campos view-as radio-set ou editor, onde seja necessário emoldurá-lo com retângulo com um label para identificá-lo; Literais utilizados em telas para substituir labels; 18
UT-RTLBL.I Formato {utp/ut-rtlbl.i <banco> <tabela> <campo> <widget fill-in>} Onde: <banco>: nome lógico do banco de dados que contém o campo; 19
UT-RTLBL.I <tabela>: nome da tabela que contém o campo; <campo>: nome do campo; <widget fill-in>: fill-in view-as text colocado na tela Exemplo: {utp/ut-rtlbl.i mgadm conta natureza text-1} 20
UT-RUN.I Objetivo Seu objetivo é executar programas que não possuam interface (.p), através do recurso de RPC (Remote Procedure Call). Deve executar apenas programas (.p), chamados a partir de programas (.w). 21
UT-RUN.I Não deve chamar um programa (.p), a partir de um outro programa (.p) porque o programa chamador (.p) já está rodando no servidor (Application Server) e não é necessário iniciar um novo servidor. 22
UT-RUN.I Utilização Sempre que for chamado algum programa sem interface a partir de um.w, e que este programa seja candidato para ser executado via RPC. Para utilizar os includes é necessário relacionar ao programa os includes {utp/utglob.i} e {btb/btb008za.io} no main-block, para definição de variáveis e funções. 23
UT-RUN.I Formato 1. Modo Simplificado: Include {utp/ut-run.i {1} {2} {3} {4}} Onde: {1}: Nome externo do programa; 24
UT-RUN.I {2}: Parâmetros do programa; {3}: Mostra mensagem de acompanhamento [Opcional]; {4}: Servidor de RPC determinado [Opcional] 1. Para informar parâmetros em branco ou literal, utilize aspas duplas ("") com aspas simples (''). Exemplo: "" ' '. 2. Não sendo informados os parâmetros opcionais estes receberão "yes" e "" ' ' respectivamente. 25
UT-RUN.I Funções Solicita a conexão e cria a instância do servidor, conforme servidor do aplicativo ou parâmetro; Mostra mensagem se ocorrer um erro (por exemplo, de conexão), quando solicitada ({3} = yes); Dispara a execução do programa no servidor; Encerra a conexão e elimina a instância. 26
UT-RUN.I Aplicações Quando o programa API será disparado uma única vez para realizar todo o processo. Exemplo: {utp/ut-run.i cep/ceapi001.p "input-output table ttmvto, input-output table tt-erro" yes ""''} 27
UT-RUN.I 1. Modo Aberto: Include {btb/btb008za.i1 {1} {2} {3}} Onde: {1}: Nome externo do programa; {2}: Mostra mensagem de acompanhamento; {3}: Servidor de RPC determinado 28
UT-RUN.I {btb/btb008za.i2 {1} {2} {3}} Onde: {1}: Nome externo do programa; {2}: Parâmetros do programa; {3}: Nome da variável do tipo "handle" para executar o programa persistente [Opcional] 29
UT-RUN.I {btb/btb008za.i3 {1} {2}} Onde: {1} = Nome externo do programa; {2} = Nome da variável do tipo "handle" utilizada para eliminar a procedure persistente [Opcional] 30
UT-RUN.I Funções Idênticas ao Modelo Simplificado, porém distribuídas em três includes: Solicita a conexão e cria a instância do servidor; Dispara a execução do programa; Encerra a conexão e elimina a instância. 31
UT-RUN.I Aplicações Quando o programa API é disparado n vezes dentro de um laço (repeat, for each...). Existe a API BTAPI008 que possui funções que podem ser utilizadas no Desenvolvimento. 32
UT-RUN.I Exemplo: def var h-handle as handle no-undo. {btb/ btb008za.i1 cep/ceapi001.p yes "rpc-test"} for each cta_ctbl no-lock: /* Prepara tt_movto */ {btb/btb008za.i2 cep/ceapi001.p "input tt_movto, output tt_erro" "h-handle"} end. {btb/btb008za.i3 cep/ceapi001.p "h-handle"} 33
UT-RUN.I Considerações Gerais Caso não seja informado nenhum servidor RPC, será utilizado o servidor RPC definido no aplicativo do programa; Se o processo estiver sendo executado via RPW e o servidor RPC não foi informado, o programa será executado On-line. Quando informado valor parar servidor RPC, caso ocorra algum erro, não será possível a execução On-line. 34
UT-RUN.I Ocorrendo erros na tentativa de execução do programa, estes serão retornados juntamente com a mensagem 16435 (*). Quando for informada a variável do tipo "handle" para a include btb/btb008za.i2, deve-se tomar dois cuidados: Esta variável deve estar previamente definida no programa. Ao final da execução, deve-se eliminar o programa persistente passando o nome da variável para a include btb008za.i3. 35
UT-RUN.I Existe a API que transporta o conteúdo das variáveis de ambiente do Datasul_EMS da sessão client para a sessão do application server (remota) quando o programa solicita a execução de determinado programa via RPC (Remote Procedure Call). Logo, as informações como usuário corrente, grupos de segurança em que o usuário se encontra, empresa do usuário... estarão disponíveis na sessão remota. 36
UT-MSGS.P Objetivo Apresentar para o usuário uma mensagem previamente cadastrada, no Sistema de Mensagens, ou ainda, retornar para o programa propriedades desta mensagem. 37
UT-MSGS.P Ao ser exibida uma mensagem, seu número vai ser exibido na barra de título da caixa de diálogo, juntamente com o tipo de mensagem. Ex.: Pergunta: (10); 38
UT-MSGS.P Antes da exibição de qualquer mensagem, será verificado se ela possui uma substituta. Se houver, a mensagem substituta será exibida ao invés da original; Os números da mensagem original e da mensagem substituta serão exibidos na barra de títulos da caixa de diálogo. Exemplo: Advertência: (134) - (354), onde 134 seria a mensagem exibida e 354 a mensagem original. 39
UT-MSGS.P Utilização Apresentação de mensagens de erro, informação, advertência ou questionamentos ao usuário; Impressão de mensagens em log s. Apresentação da pilha de execução dos programas até o ponto de chamada da ut-msgs, através do botão trace. 40
UT-MSGS.P Formato run utp/ut-msgs.p (input <ação> input <número da mensagem> input <parâmetros>). Onde: <ação>: ação desejada, conforme a tabela a seguir; 41
UT-MSGS.P Ação show msg help type codtype Retorna o texto da mensagem Retorna o texto de ajuda Resultado Apresenta a mensagem, com texto de ajuda no padrão do produto Retorna o tipo da mensagem (Erro, Advertência, Informação ou Questão) Retorna o código do tipo da mensagem 42
UT-MSGS.P <número da mensagem>: número da mensagem desejada. <parâmetros>: são os campos, tabelas e outras palavras que se deseja colocar na mensagem no momento de sua utilização. Cada um dos parâmetros deve ser separado por "~~" 43
UT-MSGS.P Exemplo: run utp/ut-msgs.p (input "show", input 1235, input repres.cod-repres + "~~" + regiao.cod-regiao + "~~" + string(regiao.val-minimo). 44
IND01-10.I, IND11-50.I E IND51500.I Objetivo Viabilizar a utilização de combo-boxe s e radio-set s com representação para campos inteiros. Utilização Nos includes de dicionário de dados criados para cada campo. 45
IND01-10.I, IND11-50.I E IND51500.I Formato {include/ind01-10.i {1} {2} Onde: {1}: indica a função a ser realizada, conforme tabela a seguir; 46
IND01-10.I, IND11-50.I E IND51500.I Função 01 02 03 04 n 05 06 item 07 Objetivo define view-as combo-box define view-as radio-set Lista com os itens separados por vírgula Retorna o item n da lista Retorna o número de itens da lista Retorna a posição do item (número) Retorna valores para a propriedade radio-buttons 47
IND01-10.I, IND11-50.I E IND51500.I {2}: utilizado quando a função necessita de um segundo parâmetro, isto é, nas opções 04 e 06. Exemplo: 48
IND01-10.I, IND11-50.I E IND51500.I 49
IND01-10.I, IND11-50.I E IND51500.I /* i01un195.i - campo: modulo ( tabela: agenda-rpw )***/ {include/i-lgcode.i} &IF "{&LANGUAGE-CODE}" = "POR" &THEN &glob val1 MultiPlanta &glob val2 Coleta Dados &glob val3 EDI &ENDIF &IF "{&LANGUAGE-CODE}" = "ESP" &THEN &glob val1 Multiplanta &glob val2 Colecta Dato &glob val3 EDI &ENDIF &IF "{&LANGUAGE-CODE}" = "ING" &THEN &glob val1 Multi-Plant &glob val2 Data Coll &glob val3 EDI &ENDIF {include/ind01-10.i {1} {2} } /* Fim */ 50
UT-TABLE.I Objetivo Retornar propriedades das tabelas do dicionário de dados. Utilização Nos SmartBrowsers ou Browsers para pôr label em campos calculados; Para utilização de literais ou textos nas telas com função de label, como no retângulo que envolve o radio-set. 51
UT-TABLE.I Formato {utp/ut-table.i <banco> <tabela> <propriedade>} Onde: <banco>: nome lógico do banco de dados que contém a tabela; <tabela>: nome da tabela desejada; <propriedade>: número que identifica a propriedade, conforme tabela a seguir. 52
UT-TABLE.I 1 2 3 Número Propriedade File-Label Dump-Name Desc O retorno é obtido através do return-value. Exemplo: 53
UT-TABLE.I def var c-tipo as character no-undo. {utp/ut-table.i mgadm conta 1} assign c-tipo:label in browse br-table = returnvalue. 54
UT-LITER.I Objetivo Utilizar o cadastro de literais do Datasul EMS, cadastrando automaticamente as literais utilizadas no programa e retornando a tradução da literal no idioma corrente do banco de dados. 55
UT-LITER.I Utilização Em todos os lugares onde literais passíveis de tradução forem apresentadas na interface do programa. 56
UT-LITER.I Formato {utp/ut-liter.i <literal> <modulo contexto> <alinhamento>} Onde: <literal>: Literal a ser utilizada na tela com os espaços substituídos por "_" (undescore); 57
UT-LITER.I <módulo contexto>: Parâmetro opcional que define o contexto de tradução da literal. Se omitido, a literal deve ter o contexto universal de tradução, que é representado pelo valor * (asterisco) <alinhamento>: Parâmetro opcional que define onde é incrementado o espaço extra para tradução. Se omitido, deve reservar o espaço à esquerda da literal. 58
UT-LITER.I L Tipo C R Alinhamento Àesquerda Centralizado Àdireita O retorno é obtido através do return-value. Exemplo: 59
UT-LITER.I def var l-lista-narra as character no-undo. {utp/ut-liter.i Lista_Narrativa MCE R} assign l-lista-narra:label in frame {&frame-name} = return-value. 60
UT-LIMIT.P Objetivo Determinar o valor inicial e final de campos caracter, cujo formato é variável, como, por exemplo, a conta-contábil. 61
UT-LIMIT.P Utilização Na seleção de relatórios, cálculos, atualizações e zooms que tenham faixas de seleção sobre campos caracter com formato variável. 62
UT-LIMIT.P Formato run utp/ut-limit.p (input <opção>, <formato>). Onde: <opção>: indica o limite desejado, MIN = Mínimo e MAX = Máximo; <formato>: formato do campo caracter 63
UT-LIMIT.P O retorno é obtido através do return-value. Exemplo 1: def var c-conta-ini as char no-undo. find first param-global no-lock no-error. run utp/ut-limit.p (input "MIN", input param-global. formatoconta-contabil). Assign c-conta-ini = return-value. => c-conta-ini: 0000000000000 64
UT-LIMIT.P Exemplo 2: def var c-conta-ini as char no-undo. find first param-global no-lock no-error. run utp/ut-limit.p (input MAX", input param-global. formato-conta-contabil). Assign c-conta-ini = return-value. => c-conta-ini: 9999999999999 65
UT-GLOB.I Objetivo Define variáveis globais; Formato Já está definido dentro dos SmartObjects; 66
UT-GLOB.I Exemplo de Variáveis Definidas: i-ep-codigo-usuario: contém a empresa corrente do usuário. l-implanta: variável lógica usada no Zoom, para habilitar o botão implanta. c-seg-usuario: contém o nome do usuário corrente logado no menu. 67
I-FREEAC.I Objetivo Converter strings acentuadas e caracteres especiais para strings não acentuadas e caracteres simples. 68
I-FREEAC.I Utilização Nos Templates de Relatório, Importação, Exportação e em pontos específicos que necessitem que a saída de dados (impressora/arquivo/tela) seja feita sem acentuação; 69
I-FREEAC.I Formato {include/i-freeac.i} assign <variável> = fn-free-accent("<string>"). Onde: <variável>: variável que irá armazenar o valor do retorno da função fn-free-accent; <string>: string acentuada a ser convertida. 70
I-FREEAC.I Exemplo: {include/i-freeac.i} define var c-texto as char no-undo. assign c-texto = fn-free-accent ("ÁÀÃÂÄ-ÉÈÊË-ÍÌÎÏ- ÓÒÔÕÖ-ÚÙÛÜ-ÝŸ-Ç-Ñ"). message fn-free-accent("áàãâä-éèêë-~íìîï-óòõôö-úùûüy y-ç-ñ") chr(10) c-texto view-as alert-box. 71
UT-DIR.P Objetivo Este utilitário deve ser usado sempre que o usuário tiver que informar um diretório. Formato run utp/ut-dir.p (input <título>, output <pasta>, output <cancelado>). 72
UT-DIR.P Onde: <título>: título para a caixa de diálogo para selecionar diretórios. <pasta>: variável do tipo caracter onde será retornada a pasta selecionada. <cancelado>: uma variável do tipo lógica que deve ser retornado se a caixa de diálogo foi cancelada ou não. 73
UT-DIR.P Exemplo: define var c-texto as char no-undo. define var l-result as logical no-undo. run utp/ut-dir.p (input "Escolha um diretório", output c-texto, output l-result). 74
UT-DIR.P 75
BTB917ZX.P Objetivo Permitir a execução de sons do tipo MID e WAV Instalação Como este programa utiliza os recursos de OCX, é preciso que este OCX esteja registrado e instalado na máquina que deve ser utilizada. 76
BTB917ZX.P Para fazer esta instalação proceda da seguinte forma: 1. Executar o SETUP.EXE, que se encontra no diretório \INTERFAC\SOM\; 2. Clicar no botão de 'OK', quando for solicitado; 3. Clicar no botão ; 4. Clicar em OK para terminar. 77
BTB917ZX.P Formato run btb/btb917zx.p (input <som>). Onde: <som>: caminho completo do arquivo de som a ser executado. Exemplo: run btb/btb917zx.p (input "c:\windows\media\start.wav"). 78
BTB917ZY.P Objetivo Permitir a visualização dos seguintes tipos de imagens: Bitmaps (*.bmp; *.dib); Gif Images (*.gif); JPEG Images (*.jpg); Metafiles (*.wmf, *.emf); Icons (*.ico, *.cur). 79
BTB917ZY.P Instalação Como este programa utiliza os recursos de OCX, é preciso que este OCX esteja registrado e instalado na máquina que deve ser utilizada. Para fazer esta instalação proceda da seguinte forma: 1. Executar o SETUP.EXE, que se encontra no diretório \INTERFAC\IMAGEM\; 80
BTB917ZY.P 2. Clicar no botão de 'Ok', quando for solicitado; 3. Clicar no botão ; 4. Clicar em OK para terminar. Formato: run btb/btb917zy.p (input <imagem>). 81
BTB917ZY.P Onde: <imagem>: caminho completo da imagem a ser visualizada. Exemplo: run btb/btb917zy.p (input "c:\windows\egito.bmp"). 82
BTB917ZZ.P Objetivo Permitir a visualização de vídeos do tipo AVI. Instalação Como este programa utiliza os recursos de OCX, é preciso que este OCX esteja registrado e instalado na máquina em que deve ser utilizado. Para fazer esta instalação proceda da seguinte forma: 83
BTB917ZZ.P 1. Executar o SETUP.EXE, que se encontra no diretório \INTERFAC\VIDEO\DISK1; 2. Clicar no botão de 'Ok', quando for solicitado; 3. Clicar no botão ; 4. Clicar em OK para terminar. Formato: run btb/btb917zz.p (input <video>) 84
BTB917ZZ.P Onde: <vídeo>: caminho completo do vídeo a ser apresentado. Exemplo: run btb/btb917zz.p (input "c:\windows\help\explorer.avi"). 85
UT-VRBIN.P Objetivo Este utilitário pode ser usado sempre que for necessário saber a versão de um programa compilado (.R). Formato run utp/ut-vrbin.p (input <arquivo>, input <acomp>, output <versao>). 86
UT-VRBIN.P Onde: <arquivo>: variável do tipo caracter que irá conter o nome do arquivo compilado a ser analisado; <acomp>: variável do tipo lógica que irá definir se a pesquisa deve apresentar a tela de acompanhamento ou não; <versao>: variável do tipo caracter que irá receber a versão do programa passado como parâmetro 87
UT-VRBIN.P Exemplo: run utp/ut-vrbin.p(input "c:\tmp\cd0101.r", input no, output c-versao). 88
UT-VRBIN.P Observações: Programa só conseguirá buscar a versão dos programas que foram construídos conforme os padrões de desenvolvimento da Datasul S.A. e que utilizem as Técnicas e Templates do Datasul EMS 2.0; A tela de acompanhamento deixa o programa sensivelmente mais lento, pois faz interações com a tela, mas em compensação, deixa o usuário informado do que está ocorrendo naquele momento; 89
UT-VRBIN.P Se o retorno da versão for "?", o programa não conseguiu obter a versão. Os principais motivos disto são: Programa a ser pesquisado não for encontrado; Programa não está dentro das técnicas e templates do Datasul EMS 2.0; Programa não possui a versão internamente. 90
UT-FINFO.P Objetivo Este utilitário pode ser usado sempre que for necessário saber a data, a hora ou o tamanho de um arquivo no Windows. Formato run utp/ut-finfo.p (input <arquivo>, output <data>, output <hora>, output <tamanho>). 91
UT-FINFO.P Onde: <arquivo>: variável do tipo caracter que deve conter o nome do arquivo a ser analisado; <data>: variável do tipo data que deve receber a data do arquivo que está sendo analisado; <hora>: variável do tipo caracter que deve receber a hora do arquivo que está sendo analisado; 92
UT-FINFO.P <tamanho>: variável do tipo inteira que deve receber o tamanho do arquivo que está sendo analisado. Exemplo: run utp/ut-finfo.p(input "c:\autoexec.bat", output d-data, output c-hora, output i-tam). 93
UT-FINFO.P Observação: Caso o programa não seja encontrado, o utilitário irá retornar "?", na data e "00:00:00", na hora. 94
UT-CMDLN.P Objetivo: Este utilitário pode ser usado sempre que for necessário saber informações mais detalhadas sobre a linha de comando usada para abrir a sessão corrente. 95
UT-CMDLN.P Formato: run utp/ut-cmdln.p (output <linha-comando>). Onde: <linha-comando>: variável do tipo caracter que irá receber a linha de comando usada para abrir a sessão corrente. 96
UT-CMDLN.P Exemplo: run utp/ut-cmdln.p (output c-linha-comando). 97
UT-OSVER.P Objetivo: Esta técnica pode ser usada sempre que for necessário saber informações mais detalhadas sobre o Sistema Operacional. 98
UT-OSVER.P Formato: run utp/ut-osver.p (ouput <plataforma>, output <versao>, output <release>, output <build>, output <extrainfo>). 99
UT-OSVER.P Onde: <plataforma>: variável do tipo caracter que irá receber o tipo plataforma windows (Windows NT ou Windows 95/98); <versao>: variável do tipo inteira que irá receber, se houver, a versão do Windows; <release>: variável do tipo inteira que irá receber, se houver, a "release" do Windows; <build>: variável do tipo inteira que irá receber, se houver, o "build" do Windows; 100
UT-OSVER.P <extrainfo>: variável do tipo caracter que irá receber informações extras sobre o Windows (Versão do Service Pack, etc...) Exemplo: run utp/ut-osver.p (output c-plataforma, output i-versao, output i-release, output i-build, output c-extrainfo). 101
UT-OSVER.P 102
I-COUNTDS.I Objetivo: Descobrir a quantidade de registros numa tabela de acordo a condição passada. 103
I-COUNTDS.I Utilização: Quando é necessário determinar a quantidade de registros numa tabela, evitando que o OWNER seja incluído antes do nome da tabela no programa compilado, quando o banco de dados é acessado através do DataServer. 104
I-COUNTDS.I Formato: {include/i-countds.i &BANCO=<banco> &TABELA=<tabela> &COND=<condição> &DEST=<variável> } Onde: <banco>: banco de dados onde a tabela se encontra. 105
I-COUNTDS.I <tabela>: tabela que deve ter o número de registros contados. <condição>: cláusula where, que deve ser usada na consulta. Opcional. <variável>: variável que irá armazenar o resultado da consulta. 106
I-COUNTDS.I Exemplo: DEF VAR icount AS INT NO-UNDO. {include/i-countds.i &BANCO=mgadm &TABELA="cheque-pend" &COND="WHERE cod-banco > 20" &DEST=iCount} message icount view-as alert-box. 107
I-COUNTDS.I Observações: Utilize apenas se o banco de dados não for PROGRESS, isto é, for acessado através do DataServer. <condição> e <tabela> devem estar entre aspas. 108
UT-WIN.I Objetivo: A UT-WIN.I define procedures para acesso a funções externas de API s do Windows. 109
UT-WIN.I Procedures: As Procedures definidas para esta include podem ser consultadas no manual de padrões do produto. 110
UT-WIN.I Exemplo: Ver nome do usuário logado. DEFINE VARIABLE chruserid AS CHARACTER NO-UNDO. DEFINE VARIABLE intsize AS INTEGER NO-UNDO. ASSIGN chruserid = FILL(' ',256) intsize = 255. RUN GetUserName{&A} (INPUT-OUTPUT chruserid, INPUT-OUTPUT intsize). MESSAGE TRIM(chrUserID) VIEW-AS ALERT-BOX. 111
UT-TRACE.P Objetivo: Exibir em tela toda a lista de programas e procedures internas executadas até o ponto de execução deste aplicativo. 112
UT-TRACE.P Utilização: Pode ser utilizado em qualquer template da Datasul, independente do programa ser Smart ou Thin Template. 113
UT-TRACE.P Formato: {utp/ut-trace.i} RUN utp/ut-trace.p PERSISTENT SET h-trace. RUN pi-monta-trace IN h-trace (OUTPUT TABLE tt-trace). RUN utp/trace.w (INPUT TABLE tt-trace). 114
UT-TRACE.P Exemplo: 115
Obrigada Obrigada! universidade@datasul.com.br http://universidade.datasul.com.br Este material é de propriedade da DATASUL S.A., sendo proibida a sua reprodução em qualquer meio, total ou parcial, sem aprovação por escrito. Todos os direitos estão reservados. A informação contida aqui é confidencial e não pode ser utilizada fora da empresa ou das franquias que fazem parte da nossa rede, não podendo ser divulgada para clientes, parceiros ou outra empresa ou indivíduo sem o prévio consentimento de um diretor da DATASUL S.A. As opiniões expressas aqui estão sujeitas a modificação sem aviso prévio. 116