DDK GUI Parte 6 Tecnologia 1 Agenda 1 Parte 9 Nomenclatura 9 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 9 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 9 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 9 Validações Validações de Tela Validações Triggers de Dicionário 9 Mensagens Regras para Criação de Mensagens 10 Agenda Mensagens em Outros Idiomas 9 Procedures Reutilizáveis 9 Portabilidade de RCODES 9 Customizações API - Application Program Interface UPC - User Program Call 11 Relatórios 9 O relatório é constituído por dois programas: O primeiro, com o nome do formato xxp/xx9999.w, é o que faz a interface com o usuário apresentando todas as opções e entradas de dados necessárias à geração do relatório; O segundo programa, com nome de formato xxp/xx9999rp.p, executa a geração do relatório propriamente dito, conforme os parâmetros passados pelo primeiro programa. 12 Relatórios 1. Em Arquivo | Novo, selecionar o estilo Window Relatórios; 13 Relatórios 9 Preparação do Relatório - Interface 1. Verificar quais são as páginas que devem ser necessárias ao programa. Se as cinco páginas forem necessárias desconsiderar as tarefas 2, 3, 4 e 5. Eliminar as frames das páginas desnecessárias com base na tabela abaixo. 2. 14 Relatórios 3. Eliminar ‘n’ imagens com as "orelhas" mais a direita, onde ‘n’ é o número de páginas desnecessárias, renomeando as remanescentes conforme a tabela abaixo: Folder Frame Imagem Preprocess Seleção f-pg-sel im-pg-sel PGSEL Classificação f-pg-cla im-pg-cla PGCLA Parâmetros f-pg-par im-pg-par PGPAR Digitação f-pg-dig im-pg-dig PGDIR Impressão f-pg-imp im-pg-imp PGIMP 15 Relatórios 4. Em 'Definitions‘, limpar o conteúdo dos pré-processadores das páginas desnecessárias, assim se está informando ao estilo que estas páginas não existem no relatório. Exemplo, onde a página de digitação não é necessária: &GLOBAL-DEFINE &GLOBAL-DEFINE &GLOBAL-DEFINE &GLOBAL-DEFINE &GLOBAL-DEFINE PGSEL PGCLA PGPAR PGDIG PGIMP f-pg-sel f-pg-cla f-pg-par f-pg-imp 16 Relatórios 5. Se a página de seleção não existir, no 'Main-block' do programa, corrigir a chamada do include i-rpmbl.i, adicionando o nome da imagem associada à página que se deseja apresentar como inicial, exemplo: {include/i-rpmbl.i im-pg-par} 17 Relatórios 9 Página de Seleção 1. Colocar os fill-in´s de inicial e final, para cada campo que precisa de faixa. A sugestão é criar como 'Database Fields' e, após, convertê-los para variáveis para obter automaticamente os labels, formatos e tamanhos do dicionário de dados. 18 Relatórios 2. Corrigir os 'initial values' das variáveis de inicial e final. 3. Retirar possíveis queries que o AppBuilder automaticamente queira associar à frame. 19 Relatórios 9 Página de Classificação 1. Redefinir o 'list-items' do radio-set rs-classif , com as opções de classificação de seu relatório; 2. Se necessário, adicionar mais opções de classificação. 20 Relatórios 9 Página de Parâmetros 1. Colocar as variáveis necessárias na representação desejada (radio-set, toggle-box, fill-in), definindo label, formato, initial e help para as mesmas. 21 Relatórios 2. Caso seja necessário, implementar retângulos com label, estes labels devem ser fill-in´s view-as text, e o seu valor deve ser informado no seu initial e private-data. As propriedades 'Display' e 'Enable' devem ser retiradas. 22 Relatórios 9 Página de Digitação 1. Em 'Definitions', corrigir a definição da temp-table de digitação tt-digita inserindo os campos necessários; 2. Em 'Section Editor', para o objeto browse br-digita, adaptar os seguintes gatilhos para a nova definição da temp-table ttdigita e outras necessidades: 23 Relatórios 'Display': define os campos da temp-table a serem apresentados e quais devem ficar habilitados; 'Row-entry': determina valores iniciais para os campos da temp-table na inclusão de novas linhas, exceto quando se trata da primeira linha do browse; 'Row-leave': salva as alterações feitas pelo usuário. 24 Relatórios 3. Ainda em 'Section Editor', mas para os botões bt-inserir e btalterar, adaptar os seus gatilhos de 'Choose', na linha que aplica um evento 'Entry', sobre o primeiro campo habilitado no browse; 4. Todas as validações do browse br-digita devem ser feitas na procedure pi-executar no local indicado pelo comentário; 25 Relatórios 5. Opcionalmente, os gatilhos de 'leave' (para atributos de referência), 'f5' e 'mouse-select-dblclick' (para acionamento do zoom), para as colunas do browse podem ser necessários. (Para mais detalhes sobre esta técnica, ver Como implementar Zoom e campos de referência para campos de chave estrangeira.) 26 Relatórios 9 Página de Impressão Na página de impressão não é necessário que se tenha qualquer função adicional para o seu correto funcionamento. Porém, se necessário, seguir a técnica Como implementar Parâmetros de Impressão em Relatórios. 27 Relatórios 9 Gravação e Validação 1. Em “Definitions”, implementar os campos de parâmetros e seleção na definição da temp-table tt-param. 28 Relatórios 2. Na procedure 'pi-executar', colocar as validações necessárias às opções do usuário para execução do relatório no local indicado pelo comentário, lembrando que elas devem apresentar uma mensagem de erro cadastrada, posicionar na página com problemas, colocando o focus no campo com problemas. 29 Relatórios if input frame f-pg-par i-nr-nivel > 19 then do: run utp/ut-msgs.p (input "show", input 73, input " "). apply 'mouse-select-click' to im-pg-par in frame frelat. apply 'entry' to i-nr-nivel in frame f-pg-par. return error. end. 30 Relatórios 3. Na procedure 'pi-executar', no local indicado pelo comentário, colocar a lógica de gravação dos parâmetros e seleção na temp-table tt-param. 4. Ainda na procedure 'pi-executar', substituir na chamada do include {include/i-rprun.i} a literal 'XXP/XX9999RP.P' pelo programa que deve imprimir o relatório. 31 Relatórios 9 Relatórios no formato RTF O template está preparado para gerar a saída do relatório no formato RTF (Rich Text Format). Para isto, não é necessário realizar nenhuma alteração no programa de interface. Caso não deseje que o relatório possua esta funcionalidade, basta seguir os procedimentos descritos abaixo para que o programa funcione corretamente: 32 Relatórios 1. Em definitions, deve-se alterar o valor do pré-processador RTF para “NO”. Ex: &GLOBAL-DEFINE RTF NO 2. Na página de impressão(f-pg-imp), é necessário remover os componentes referentes à funcionalidade de RTF. Os componentes são: text-rtf, l-habilitaRtf, text-modelo-rtf, cmodelo-rtf, bt-modelo-rtf e rect-rtf. 33 Relatórios 3. Reposicionar os componentes de execução de acordo com o especificado a seguir: text-modo para column 1,14 e row 4,17, rect-9 para column 2,00 e row 4,46, e rs-execucao para column 2,86 e row 4,83. 34 Relatórios Também é possível passar, durante a inicialização do programa, um arquivo de modelo padrão para o relatório. Neste caso, o usuário não será obrigado a informar um modelo manualmente. Para isto, basta incluir no Main Block do programa, antes da chamada da procedure “enable_UI”, a linha abaixo: ASSIGN c-modelo-default = SEARCH("<pasta>\<modelo.rtf>"). 35 Relatórios ASSIGN c-modelo-default = SEARCH("<pasta>\<modelo.rtf>"). 9 Onde: <pasta> = sub-pasta na qual se encontra o arquivo de modelo no propath <modelo.rtf> = arquivo que contém o modelo no formato rtf 36 Relatórios 9 Programa RP.P do Relatório O programa de execução do relatório (rp.p) é um programa procedural sem qualquer tipo de interface com o usuário, exceto pela própria impressão/visualização do relatório e pela caixa de acompanhamento de execução (ut-acomp/ut-perc) quando necessário. 37 Relatórios Nenhum programa chamado a partir de um rp.p deve possuir qualquer tipo de interface. Todas as validações ou informações com necessidade de intervenção do usuário devem ser tratadas pelo programa .w. 38 Relatórios 1. Copiar a definição das temp-tables tt-param e tt-digita (esta última se houver digitação) do programa de interface (.W) para o programa que deve gerar o relatório (rp.p); 2. Se a implementação for uma conversão de um programa originário do MAGNUS: 1. Retirar a chamada para o include {cdp/cd9000.i} e substituir as seguintes chamadas: 39 Relatórios Include Velho Include Novo Cdp\cd9500.i Include\i-rpvar.i Cdp\cd9500.fl Include\i-rpcab.i Cdp\cd9520.i Include\i-rpout.i Cdp\cd9540.i Include\i-rpclo.i 40 Relatórios 2. Caso haja opção de digitação, substituir, com base no programa original, o work-file de digitação pela temp-table tt-digita. 3. Substituir, as variáveis de parâmetro, seleção e classificação pelos respectivos campos da temp-table ttparam. 3. Utilizar um stream padrão definido como STR-RP, para impressão do relatório; 4. Deve-se passar o parâmetro &stream com o nome da stream para os includes i-rpcab.i, i-rpcb80, i-rpc256.i, i-rpout.i e irpclo.i. 41 Relatórios {include/i-rpcab.i &stream = "str-rp"} {include/i-rpcb80.i &stream = "str-rp"} {include/i-rpc256.i &stream = "str-rp"} {include/i-rpout.i &stream = "stream str-rp"} {include/i-rpclo.i &stream = "stream str-rp"}. 4. Nas seleções, ao invés de utilizar a palavra "à", para dar idéia de faixa, substituí-la pelos caracteres "|< >|" semelhantes às imagens utilizadas na tela de seleção, e que não necessitam ser traduzidos. 42 Relatórios 5. Todos os labels que não forem do dicionário de dados e que apareçam no relatório devem ser tratados através dos includes {utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}. 6. Em todos os forms/frames de impressão deve-se colocar a cláusula stream-io. 7. Para utilizar a funcionalidade de impressão para arquivo RTF: 43 Relatórios 1. Definir o pré-processador conforme abaixo: &GLOBAL-DEFINE RTF YES 2. Definir o pré-processador abaixo setando o tamanho da página: &SCOPED-DEFINE pagesize N N é o número de linhas por página e por default seu valor é 42. Este número deve ser ajustado para cada relatório conforme o tamanho do modelo RTF que vai ser utilizado. Caso este tamanho não esteja correto ocorrerá problema na quebra da página. 44 Relatórios 3. A definição da temp-table tt-param deve ser idêntica à definição da mesma no programa de interface. 4. Condicionar o VIEW das frames de cabeçalho/rodapé no início do programa, para que, quando o destino for para RTF, as mesmas não sejam apresentadas. 45 Relatórios IF tt-param.l-habilitaRTF <> YES THEN DO: VIEW STREAM str-rp FRAME f-cabec. VIEW STREAM str-rp FRAME f-rodape. END. 46 Relatórios 9 Laboratório Seleção: <variable Cust-Num> Parâmetros: <variable Sales-Rep> Classificação: Cust-Num Name 47 Relatórios Programa RP: Campos: Customer.Cust-Num Customer.Name Customer.Credit-Limit Customer.Discount Customer.Balance Customer.Phone Customer.Sales-rep 48 Importação 1. Em Arquivo | Novo, selecionar o estilo Window Importação/Exportação; 49 Importação 9 Preparação do programa 1. Verificar quantas páginas são necessárias. As páginas de layout, parâmetros e log são obrigatórias e somente a página de seleção é opcional. Caso haja seleção, desconsiderar as tarefas 2, 3 e 4. 2. Eliminar a frame f-pg-sel. 50 Importação 3. Eliminar a imagem im-pg-log e renomear as imagens: im-pg-par > im-pg-log im-pg-sel > im-pg-par 4. Em 'Definitions' limpar o conteúdo dos preprocessadores PGSEL: &GLOBAL-DEFINE PGLAY f-pg-lay &GLOBAL-DEFINE PGSEL &GLOBAL-DEFINE PGPAR f-pg-par &GLOBAL-DEFINE PGLOG f-pg-log 51 Importação 5. Se a página de seleção não existir, no 'Main-block' do programa, corrigir a chamada do include i-immbl.i, passando como parâmetro a imagem da página inicialmente; {include/i-immbl.i im-pg-par} 52 Importação 9 Página de Layout 1. No 'Main Block', existe a chamada para um include denominado {include/i-imvrf.i}, que possui dois parâmetros. Informar neste o nome do programa no formato XX9999 e a versão do layout no formato 999 (o valor inicial da versão é 001). Exemplo: { include/i-imvrf.i &programa=CP0406 &versãolayout=001 } 53 Importação 2. Criar um arquivo que contenha o layout de importação, nos padrões do Produto Datasul EMS. Este arquivo tem o seguinte nome e path: LAYOUT/LOXX9999.001. 54 Importação 9 Página de Seleção 1. Colocar os fill-in´s de inicial e final, para cada campo que precisar de faixa. A sugestão é criá-los como 'Database Fields', e após, convertê-los para variáveis para obter automaticamente os labels, formatos e tamanhos do dicionário de dados. 55 Importação 2. Corrigir os 'initial values' das variáveis de inicial e final. 3. Retirar possíveis queries que o AppBuilder automaticamente queira associar à frame. 56 Importação 9 Página de Parâmetros 1. Colocar as variáveis necessárias na representação desejada (radio-set, toggle-box, fill-in), definindo label, formato, initial e help para as mesmas. 2. Caso seja necessário implementar retângulos com label, estes labels devem ser fill-in´s view-as text, e o seu valor deve ser informado no seu initial e private-data. As propriedades 'Display' e 'Enable' devem ser retiradas 57 Importação 3. No on choose do bt-arquivo-entrada, pode ser adicionado um terceiro parâmetro na include i-imarq.i , onde é possível passar como parâmetro os filtros que serão utilizados na sistem dialog. Se não for passado nada neste parâmetro a include assumirá como padrão o tipo de arquivo *.lst e todos os tipos de arquivos. DO: {include/i-imarq.i c-arquivo-entrada f-pg-par "'*.XLS' '*.xls' , 'todos' '*.*'" } END. 58 Importação 9 Página de Log Não existem tarefas. 59 Importação 9 Gravação e Validação 1. Em 'Definitions', implementar os campos de parâmetros e seleção na definição da temp-table tt-param. 60 Importação 2. Na procedure 'pi-executar', colocar as validações das páginas de parâmetros e seleção, lembrando que elas devem apresentar uma mensagem de erro cadastrada, posicionar na página com problemas, colocando o focus no campo com problemas. 61 Importação if input frame f-pg-par i-nr-nivel > 19 then do: run utp/ut-msgs.p (input "show", input 73, input " "). apply 'mouse-select-click' to im-pg-par in frame frelat. apply 'entry' to i-nr-nivel in frame f-pg-par. return error. end. 62 Importação 3. Na procedure 'pi-executar', colocar a lógica de gravação dos parâmetros e seleção na temp-table tt-param. 4. Substituir na chamada do include {include/i-imrun.i} a literal 'XXP/XX9999RP.P' pelo programa que deve importar os registros. 63 Importação 9 Programa RP.P de Importação O programa de execução de importação (rp.p) é um programa procedural sem qualquer tipo de interface com o usuário, exceto pela caixa de acompanhamento de execução (utacomp/ut-perc) quando necessário. 64 Importação Nenhum programa chamado a partir de um rp.p deve possuir qualquer tipo de interface. Todas as validações ou informações com necessidade de intervenção do usuário devem ser tratadas pelo programa .w que o chama. 65 Importação 1. Definir uma stream para a importação, deixando a stream padrão definido, como STR-RP para a impressão do log. 2. Se a implementação for uma conversão de um programa originário do MAGNUS: 1. Retirar a chamada para o include {cdp/cd9000.i} e substituir as seguintes chamadas: 66 Importação Include Velho Include Novo Cdp\cd9500.i Include\i-rpvar.i Cdp\cd9500.fl Include\i-rpcab.i Cdp\cd9520.i Include\i-rpout.i Cdp\cd9540.i Include\i-rpclo.i 67 Importação 2. 3. Substituir, as variáveis de parâmetro, seleção e classificação pelos respectivos campos da temp-table ttparam. Na chamada do include i-rpout.i, passar o parâmetros {&tofile}. Exemplo: {include/i-rpout.i &tofile=tt-param.arq-destino} 68 Importação 4. Todos os labels que não forem do dicionário de dados e que apareçam no relatório devem ser tratados através dos includes {utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}. 5. Em todos os forms/frames de impressão, deve-se colocar a cláusula stream-io. 69 Importação 6. Nas seleções, ao invés de utilizar a palavra "à", para dar idéia de faixa, substituí-la pelos caracteres "|< >|" semelhantes às imagens utilizadas na tela de seleção, e que não necessitam ser traduzidos. 70 Exportação 1. Em Arquivo | Novo, selecionar o estilo Window Importação/Exportação; 71 Exportação 9 Preparação do programa 1. Verificar quantas páginas são necessárias. As páginas de layout, parâmetros e log são obrigatórias e somente a página de seleção é opcional. Caso haja seleção, desconsiderar as tarefas 2, 3 e 4. 2. Eliminar a frame f-pg-sel. 72 Exportação 3. Eliminar a imagem im-pg-log e renomear as imagens: im-pg-par > im-pg-log im-pg-sel > im-pg-par 4. Em 'Definitions' limpar o conteúdo dos preprocessadores PGSEL: &GLOBAL-DEFINE PGLAY f-pg-lay &GLOBAL-DEFINE PGSEL &GLOBAL-DEFINE PGPAR f-pg-par &GLOBAL-DEFINE PGLOG f-pg-log 73 Exportação 5. Se a página de seleção não existir, no 'Main-block' do programa, corrigir a chamada do include i-immbl.i, passando como parâmetro a imagem da página inicial , exemplo: {include/i-immbl.i im-pg-par} 74 Exportação 9 Página de Layout 1. No 'Main Block', existe a chamada para um include denominado {include/i-imvrf.i}, que possui dois parâmetros, informar neste o nome do programa no formato XX9999 e a versão do layout no formato 999 (o valor inicial da versão é 001). Exemplo: { include/i-imvrf.i &programa=CP0406 &versãolayout=001 } 75 Exportação 2. Criar um arquivo que contenha o layout de exportação, nos padrões do Produto Datasul EMS. Este arquivo tem o seguinte nome e path: LAYOUT/LOXX9999.001. 76 Exportação 9 Página de Seleção 1. Colocar os fill-in´s de inicial e final, para cada campo que precisar de faixa. A sugestão é criá-los como 'Database Fields' e, após, convertê-los para variáveis para obter automaticamente os labels, formatos e tamanhos do dicionário de dados. 77 Exportação 2. Corrigir os 'initial values' das variáveis de inicial e final. 3. Retirar possíveis queries que o AppBuilder automaticamente queira associar à frame. 78 Exportação 9 Página de Parâmetros 1. Colocar as variáveis necessárias na representação desejada (radio-set, toggle-box, fill-in), definindo label, formato, initial e help para as mesmas. 2. Caso seja necessário implementar retângulos com label, estes labels devem ser fill-in´s view-as text, e o seu valor deve ser informado no seu initial e private-data. As propriedades 'Display' e 'Enable' devem ser retiradas 79 Exportação 3. No on choose do bt-arquivo-entrada, pode ser adicionado um terceiro parâmetro na include i-imarq.i , onde é possível passar como parâmetro os filtros que serão utilizados na sistem dialog. Se não for passado nada neste parâmetro a include assumirá como padrão o tipo de arquivo *.lst e todos os tipos de arquivos. DO: {include/i-imarq.i c-arquivo-entrada f-pg-par "'*.XLS' '*.xls' , 'todos' '*.*'" } END. 80 Exportação 9 Página de Log 1. Remover o retângulo, o label e o radio-set com as opções "Todos" e "Rejeitados". 2. Mover todos os outros objetos desta frame para cima. Não esquecer do botão "Configurar Impressora". 81 Exportação 9 Gravação e Validação 1. Em 'Definitions', implementar os campos de parâmetros e seleção na definição da temp-table tt-param. 82 Exportação 2. Na procedure 'pi-executar', colocar as validações das páginas de parâmetros e seleção, lembrando que elas devem apresentar uma mensagem de erro cadastrada e posicionar na página com problemas, colocando o focus no campo com problemas. 83 Exportação if input frame f-pg-par i-nr-nivel > 19 then do: run utp/ut-msgs.p (input "show", input 73, input " "). apply 'mouse-select-click' to im-pg-par in frame frelat. apply 'entry' to i-nr-nivel in frame f-pg-par. return error. end. 84 Exportação 3. Na procedure 'pi-executar', substituir o código de validação do arquivo de entrada: run utp/ut-vlarq.p assign file-info: file-name (input frame = input frame f-pg-par c-arquivo-entrada). f-pg-par c-arquivo-entrada. if return-value file-info:pathname = "nok" = then ? then do: do: run utp/ut-msgs.p (input "show", input input326, 73, input inputc-arquivo-entrada). ""). apply 'mouse-select-click' to im-pg-par in frame f-import. im-pg-log apply 'entry' to c-arquivo-destino c-arquivo-entrada in frame f-pg-log. f-pg-par. return error. end. end. 85 Exportação 4. Na procedure 'pi-executar', colocar a lógica de gravação dos parâmetros e seleção na temp-table tt-param. 5. Substituir, na chamada do include {include/i-imrun.i}, a literal 'XXP/XX9999RP.P' pelo programa que exportará os registros. 86 Exportação 9 Programa RP.P de Exportação O programa de execução de exportação (rp.p) é um programa procedural sem qualquer tipo de interface com o usuário, exceto pela caixa de acompanhamento de execução (utacomp/ut-perc) quando necessário. 87 Exportação Nenhum programa chamado a partir de um rp.p deve possuir qualquer tipo de interface. Todas as validações ou informações com necessidade de intervenção do usuário devem ser tratadas pelo programa .w. 88 Exportação 1. Definir uma stream para a exportação, deixando a stream padrão definida como STR-RP para a impressão do log. 2. Se a implementação for uma conversão de um programa originário do MAGNUS: 1. Retirar a chamada para o include {cdp/cd9000.i} e substituir as seguintes chamadas: 89 Exportação Include Velho Include Novo Cdp\cd9500.i Include\i-rpvar.i Cdp\cd9500.fl Include\i-rpcab.i Cdp\cd9520.i Include\i-rpout.i Cdp\cd9540.i Include\i-rpclo.i 90 Exportação 2. 3. Substituir as variáveis de parâmetro, seleção e classificação pelos respectivos campos da temp-table tt-param. Na chamada do include i-rpout.i, passar o parâmetros {&tofile}. Exemplo: {include/i-rpout.i &tofile=tt-param.arq-destino} 91 Exportação 4. Todos os labels que não forem do dicionário de dados e que apareçam no relatório devem ser tratados através dos includes {utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}. 5. Em todos os forms/frames de impressão, deve-se colocar a cláusula stream-io. 92 Exportação 6. Nas seleções, ao invés de utilizar a palavra "à", para dar idéia de faixa, substituí-la pelos caracteres "|< >|" semelhantes às imagens utilizadas na tela de seleção, e que não necessitam ser traduzidos. 93 CustomBrowser Digitação 1. Em Arquivo | Novo, selecionar o estilo CustomBrowser Digita; 94 CustomBrowser Digitação 2. Alterar a definição da temp-table no bloco de definitions conforme necessidade. Não eliminar o campo "line"; 3. Alterar a trigger de open_query, substituindo a cláusula <temptable> pelo nome da temp-table definida anteriormente; 95 CustomBrowser Digitação 4. Alterar a trigger de display, substituindo as cláusulas <campo1> <campo2> pelos campos que devem estar no browse; após o comando enable substituir as cláusulas <campo1> <campo2> pelos campos editáveis do browse; 96 CustomBrowser Digitação 5. Alterar a pi-salva-rel para que esta possa gravar todos os valores do browse. Não é necessário gravar o campo "line"; 6. Na chamada da pi-busca-valor, informar o nome das variáveis que estão na viewer e das quais se deseja retornar o valor para o browse. Os valores serão retornados por intermédio do comando return-value, sendo que a lista retornada será gravada numa variável e o usuário deve utilizar esta variável e o comando ENTRY para trabalhar com estes valores; 97 CustomBrowser Digitação 7. Colocar todas as validações na pi-salva-rel, validando assim os valores informados no browse a cada inclusão de um novo registro; 8. Na pi-cria-registro deve ser feita a leitura dos registros da temp-table e criados os registros na tabela física. Esta pi é chamada no choose do botão OK; 9. Salvar o browse com o nome definido para Browse de Digitação Rápida. 98 Digitação Rápida 9 Pré-requisitos CustomViewerDigita que atenda às necessidades (CustomViewerDigita); CustomBrowserDigita que atenda às necessidades (CustomBrowserDigita). 99 Digitação Rápida 1. Em Arquivo | Novo, selecionar o estilo Window Digitação Rapida; 100 Digitação Rápida 2. Verificar se já existe uma CustomViewerDigita que atenda às necessidades. Caso não exista, deve ser criada uma nova, utilizando o estilo CustomViewerDigita, lembrando-se que a única condição para esta viewer é a utilização de variáveis, e não a utilização de DBFields; 3. Instanciar a CustomViewerDigita na página 1 da WindowDigitaçãoRápida; 101 Digitação Rápida 4. Verificar se já existe um CustomBrowserDigita que atenda às necessidades, caso não exista, deve ser criado um novo, utilizando o estilo CustomBrowserDigita. Este browser deve utilizar uma temp-table; 5. Instanciar o CustomBrowserDigita na página 2 da WindowDigitaçãoRápida; 102 Digitação Rápida 6. Redimensionar a WindowDigitaçãoRápida de acordo com os objetos que foram colocados nela; 7. Salvar a WindowDigitaçãoRápida com o nome definido para Janela Digitação Rápida; 103 Obrigada Obrigada! [email protected] 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. 104