ThinTemplates Parte 4

Documentos relacionados
ThinTemplates Parte 2

ThinTemplates Parte 1

ThinTemplates Parte 3

Construção de Programas

Desenvolvimento de Programas utilizando DDK2000 ThinTemplates + DBOs. Sandro Kellermann de Carvalho Desenvolvedor Progress Acton

Técnicas de Uso de DBOs. Tecnologia

DDK GUI. Parte 4. Tecnologia

Construção de DBOs. Tecnologia

DDK GUI. Parte 2. Tecnologia

DDK GUI. Parte 5. Tecnologia

DDK GUI. Parte 3. Tecnologia

Curso de Técnicas de Desenvolvimento Utilizando o UIB

DDK GUI. Parte 7. Tecnologia

Progress DCA Desenvolvendo Aplicações Caracter Parte 1

DDK GUI. Parte 8. Tecnologia

Progress DCA Desenvolvendo Aplicações Caracter Parte 3

DDK GUI. Parte 6. Tecnologia

PROGRESS ACE Ambiente Visual para Construção de Aplicativos. Tecnologia

Arquitetura ADM - Introdução

Manual de Técnicas de Uso. DBOs 2.0. Novembro/2001

Construção de DBOs 2.0

Boas Práticas de Programação

Construção de Aplicações de Acesso a Banco de Dados Parte II (Relação Mestre/Detalhe)

Microsoft Word 2010 NORMA ABNT para Trabalhos Acadêmicos Conceitos Básicos

A seguir são apresentadas as funções implementadas na linha de produto Microsiga Protheus, expedidas neste pacote de atualização.

Bem-vindo ao tópico sobre valores definidos pelo usuário.

Diferenças na Programação com Dataserver Oracle

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Cópia de Saldos (CTBM300)

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Progress ADE Application Development Environment. Tecnologia

SISTEMA ADM ERP - MANUAL DO USUÁRIO. Conceitos Básicos

Recursos Complementares (Tabelas e Formulários)

Assessoria Técnica de Tecnologia da Informação - ATTI. Projeto de Informatização da Secretaria Municipal de Saúde do Município de São Paulo

Acesso a Dados VS.NET Smart Client (Windows Application)

Manual de utilização do CSPSNet Versão 3.0

RECURSOS HUMANOS. Pagamentos. Lançamentos de verbas

MECDAISY PARA LEITURA DE LIVROS DIGITAIS BENTO GONÇALVES

DDK GUI. Parte 1. Tecnologia

Tutorial 133 DUO Criação de telas e utilização do teclado

Prof. Sergio Koch. Sistema Operacional. Aula 02

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SAP BUSINESS ONE. NFS-e DA PREFEITURA DE PAULISTA - PE MANUAL DO USUÁRIO VERSÃO 1.00

Laboratório de Programação I

Seções de aula (Seminários)

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Sumário APRESENTAÇÃO...3 ACESSO AO SISTEMA...4 FUNCIONALIDADES...5 SIG-PCJ... 3 ACESSANDO O SISTEMA VIA WEB...4 MANUAL DO USUÁRIO...

TUTORIAL ACERTO DE COMISSÕES

Painel Administrativo Westlock

Método dos Elementos Finitos Aplicado à Engenharia de Estruturas Página 1

Utilitário de configuração

Título: Como realizar a importação do Cadastro de Empresas pelo arquivo do SPED Fiscal?

Uniao Educacional e Tecnologica Impacta- Uni Impacta

APRESENTAÇÃO... 3 IGEO... 3 ACESSO AO SISTEMA... 4 MANUAL DO USUÁRIO... 4 FUNCIONALIDADES... 5 NAVEGAÇÃO E CONSULTA... 5 MANIPULAÇÃO DE CAMADAS...

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA total e disjuntiva.

Tutorial 132 CP DUO Configuração MODBUS Escravo

Ambiente de desenvolvimento

Manual Módulo Processos:

Utilização de Base de Dados com BluePlant. Sumário

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Assessoria Técnica de Tecnologia da Informação - ATTI. Projeto de Informatização da. Secretaria Municipal de Saúde do. Município de São Paulo

Novo Sistema de Relatórios. Associado. Informação Confidencial

SUMÁRIO 1. APRESENTAÇÃO FUNCIONALIDADES COMUNS AOS USUÁRIOS... 3

Visual Basic.NET Image Lists, Tree e List Views, Toolbars, Status e Progress Bars e Tab Controls Lista de Exercícios

SoftMatic. Supervisório Seccionadora. Versão 00.

Roteiro da auditoria dos dados para o esocial

PROGRESS DCA. Desenvolvendo Aplicações Caracter

10 Hiperlinks e Mala Direta

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Sistema NetConta I - Guia de Referência

Descrição A finalidade do curso do módulo Domínio Protocolo é apresentar aos nossos usuários:

Administrador Documentos. Gestão de Documentos. Título do documento

Delphi 7 Aula 03 Progressão Geométrica

Cisco Unified Attendant Console Compact Edition v8.6.5

Utilitário de configuração Guia do Usuário

Guia para criar aplicações simples em APEX/ Guide to create simple Apex applications (perte I)

Novo Sistema de Agenda

Tutorial do usuário Alunos Concluintes e Inativos

Tutorial para atualização de notícias/blog

Referência =SOMA(C20:C30) =SOMA(VendasDoPrimeiroTrimestre) Constante =PRODUTO(A5,8.3) =PRODUTO (Preço,ImpostoSobreVendasDeWA)

Utilizando o Word para criar Relatórios

Portal de Cotação da FCC S.A.

ALFACONT 2 Sistema de Contabilidade Versão Eleusmário Mariano Rabelo. Acesso ao Sistema

Linguagem SQL Restrições, Triggers e Views

Transcrição:

ThinTemplates Parte 4 Tecnologia 1

Agenda Parte 1 Conceitos Características ThinMaintenance ThinMasterDetail Parte 2 ThinMaintenanceNoNavigation ThinZoom Parte 3 ThinWindow ThinReport 2

Agenda ThinFormation Parte 4 ThinFormationNoNavigation Técnicas Override de Métodos Pesquisas de Chaves Estrangeiras Pesquisas de Chaves Estrangeiras em Browses Pesquisas de Chaves Estrangeiras com SmartZoom Referências para Chaves Estrangeiras Referências para Chaves Estrangeiras em Browses 3

Agenda Campos Indicadores Exibir Mensagens de Erro Reposicionamento Automático do Browser de Zoom Utilização de OCX Override de eventos do browse no template MasterDetail e Zoom Recursos Avançados do thinfolder 4

ThinFormationNoNavigation ThinFormationNoNavigation 5

ThinFormationNoNavigation 6

ThinFormationNoNavigation Características Algumas das funções são realizadas na própria tela base do programa; Faz uso do sistema de tradução de.r, bastando para tanto identificar as strings que não devem ser traduzidas com :U (Exemplo: CHOOSE :U) 7

ThinFormationNoNavigation Tarefas Definições dos Preprocessadores Definição da Temp-table de Comunicação Instância dos DBOs Disposição dos widgets nas Páginas Criação do Método openqueries Criação do Método saveparentfields Triggers de Botões Padrão 8

ThinFormationNoNavigation Definições dos Preprocessadores &GLOBAL-DEFINE Program hinformationnonavigation &GLOBAL-DEFINE Version 1.00.00.000 &GLOBAL-DEFINE DelTarget YES &GLOBAL-DEFINE AddTarget YES &GLOBAL-DEFINE DelAllTarget YES &GLOBAL-DEFINE AddAllTarget YES 9

ThinFormationNoNavigation &GLOBAL-DEFINE UpdateTarget YES &GLOBAL-DEFINE ttparent &GLOBAL-DEFINE hdboparent &GLOBAL-DEFINE DBOParentTable ttorder hdboorder Order &GLOBAL-DEFINE tttarget &GLOBAL-DEFINE hdbotarget &GLOBAL-DEFINE DBOTargetTable ttorder-line hdboorder-line Order-Line 10

ThinFormationNoNavigation &GLOBAL-DEFINE ttsource &GLOBAL-DEFINE hdbosource &GLOBAL-DEFINE DBOSourceTable ttitem hdboitem Item &GLOBAL-DEFINE page0fields ttorder.order-num ~ ttorder.order-date ~ ttorder.sales-rep &GLOBAL-DEFINE sourcebrowse brsource &GLOBAL-DEFINE targetbrowse brtarget 11

ThinFormationNoNavigation Para definir o número de registros que devem ser retornados para o browse, deve-se utilizar o preprocessor padrão a seguir: Preprocessador NumRowsReturnedSource NumRowsReturnedTarget Descrição Número de registros que devem ser retornados no browse Source Número de registros que devem ser retornados no browse Target 12

ThinFormationNoNavigation Definição da Temp-table de Comunicação Deve-se criar a temp-table de comunicação com o DBO. 13

ThinFormationNoNavigation 14

ThinFormationNoNavigation 15

ThinFormationNoNavigation Instância do DBO As criações das instâncias do DBOs (DBO Pai, DBO Origem e DBO Destino) devem ser feitas manualmente, utilizando ou não o recurso de RPC; Definir as restrições iniciais e a abertura da query do DBO Pai, caso necessário; A instância dos DBOs é feita no método initializedbos. 16

ThinFormationNoNavigation Parâmetros: DBOParentProgram: Nome físico do programa DBO pai (principal); Description: Identifica o nome da constraint a ser utilizada inicialmente para o DBO pai (principal); Query: Identifica o nome da query a ser utilizada para realizar a abertura inicial do DBO pai; DBOSourceProgram: Nome físico do programa DBO origem; 17

ThinFormationNoNavigation DBOTargetProgram: Nome físico do programa DBO destino (formação). 18

ThinFormationNoNavigation PROCEDURE initializedbos: /*--- Verifica se o DBO da tabela Pai já está inicializado ---*/ IF NOT VALID-HANDLE({&hDBOParent}) THEN DO: {btb/btb008za.i1 C:/Programs/DBOOrder.p} {btb/btb008za.i2 C:/Programs/DBOOrder.p '' {&hdboparent}} END. RUN openquerystatic IN {&hdboparent} (INPUT "OrderNum":U). /*--- Verifica se o DBO da tabela Origem já está inicializado ---*/ IF NOT VALID-HANDLE({&hDBOSource}) THEN DO: {btb/btb008za.i1 C:/Programs/DBOItem.p } {btb/btb008za.i2 C:/Programs/DBOItem.p '' {&hdbosource}} END. /*---Verifica se o DBO da tabela Formação já está inicializado ---*/ IF NOT VALID-HANDLE({&hDBOTarget}) THEN DO: {btb/btb008za.i1 C:/Programs/DBOOrder-Line.p } {btb/btb008za.i2 C:/Programs/DBOOrder-Line.p '' {&hdbotarget}} END. RETURN "OK":U. END PROCEDURE. 19

ThinFormationNoNavigation Para os widgets da temp-table de comunicação, deve-se utilizar o botão a seguir: 20

ThinFormationNoNavigation Alterar as propriedades dos widgtes inseridos: Devem estar dispostos em linha, e caso necessário em colunas; Para widgets do tipo fill-in, sua altura deve ser de 0.88; Para widgets dos tipos combo-box, suas alturas devem ser de 1.00; 21

ThinFormationNoNavigation Para widgets dos tipos editores ou list-box ou radio-set, suas alturas devem ser definidas pelo próprio desenvolvedor; Para os widgets que fazem parte da temp-table Pai, devem ser dispostos no retângulo rtparent. 22

ThinFormationNoNavigation Método OpenQueries É responsável por realizar a ligação entre o DBO Pai e o DBO destino (formação) e abrir a query do DBO Origem; Para atualizar os dados do browser Destino utiliza o include formationnonavigation/openqueriestarget.i; Para atualizar os dados do browser Origem utiliza o include formationnonavigation/openqueriessource.i; Traz somente os 40 (quarenta) primeiros registros associados aos browsers. 23

ThinFormationNoNavigation formationnonavigation/openqueriestarget.i Parâmetro Parent Query Descrição Nome da tabela pai, utilizado para designar o método linkto<parent>. Identifica o nome da query a ser utilizada para realizar a abertura do DBO Destino. 24

ThinFormationNoNavigation formationnonavigation/openqueriessource.i Parâmetro Query ConstraintParameters OpenAlways Descrição Identifica o nome da query a ser utilizada para realizar a abertura do DBO Origem Parâmetros a serem utilizados para o método setconstraint{&description} O valor YES indica que o browse Origem deve ser atualizado a cada vez que for efetuada navegação na tabela Pai 25

ThinFormationNoNavigation PROCEDURE openqueries: {FormationNoNavigation/OpenQueriesTarget.i &Parent="Order" &Query="Order-Num"} {FormationNoNavigation/OpenQueriesSource.i &Query="Item-Num" &OpenAlways="no"} RETURN "OK":U. END PROCEDURE. 26

ThinFormationNoNavigation Método saveparentfields É responsável por atualizar a tabela de formação com base nos campos da tabela pai e tabela origem. 27

ThinFormationNoNavigation PROCEDURE saveparentfields: {&tttarget}.order-num = {&ttparent}.order- assign num {&tttarget}.item-num = {&ttsource}.item-num {&tttarget}.qty = 1 {&tttarget}.price = {&ttsource}.price. RETURN "OK":U. END PROCEDURE. 28

ThinFormationNoNavigation Triggers dos Botões Padrão Botão btupdatetarget. Parâmetro ProgramTarget Descrição Nome do programa a ser executado para realizar a alteração de registro da tabela formação ON CHOOSE OF btudpatetarget IN FRAME fpage1 DO: {masterdetail/updatetarget.i &ProgramTarget="C:/Programs/MaintenanceNoNavigationOrder.w" } END. 29

Técnicas Técnicas 30

Override de Métodos A técnica consiste em executar 2 (dois) métodos, sendo chamados no ponto inicial e final de um método básico. Nomenclatura específica para a definição dos métodos de override. <before/after><nome-do-método-básico> 31

Override de Métodos PROCEDURE beforedisplayfields: /*----------------------------------------------- ----- Purpose: Override do método displayfields (before) Parameters: Notes: ------------------------------------------------- --*/ RETURN "OK":U. END PROCEDURE. 32

Override de Métodos PROCEDURE afterdisplayfields: /*----------------------------------------------- ----- Purpose: Override do método displayfields (after) Parameters: Notes: ------------------------------------------------- --*/ RETURN "OK":U. END PROCEDURE. 33

Pesquisas de Chaves Estrangeiras Quando for necessário implementar pesquisas de campos de chave estrangeira deve-se obedecer as seguintes regras: Deve ser incluso ao lado do campo que representa a chave estrangeira, 1 (um) fill-in para conter a descrição desta; Nas triggers de MOUSE-SELECT-DBLCLICK e F5 devem ser feito uso do include method/zoomfields.i; Setar o cursor de pesquisa (image/lupa.cur) para o campo que representa a chave estrangeira. 34

Pesquisas de Chaves Estrangeiras method/zoomfields.i Parâmetro ProgramZoom FieldZoomN FieldScreenN Descrição Nome do programa de Pesquisa a ser executado. Indica o nome do campo que deve ser retornado pelo programa de Pesquisa, N indica um número que pode variar de 1 até 10. Indica o nome do campo (variável) que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10. 35

Pesquisas de Chaves Estrangeiras Parâmetro FrameN FieldHandleN Descrição Indica o nome da frame na qual está o campo (variável) que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10 Indica a variável handle que contém o handle do campo que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10, não se deve utilizar este parâmetro em conjunto com os parâmetros FieldZoomN, FieldScreenN e FrameN 36

Pesquisas de Chaves Estrangeiras Parâmetro RunMethod EnableImplant Descrição Indica a linha de comando, que contém a chamada a um método do programa de pesquisa A variável hprogramzoom contém o handle do programa e pesquisa Os valores YES e NO indicam se o botão Implantar será habilitado ou não. 37

Pesquisas de Chaves Estrangeiras OR F5 OF ttcustomer.sales-rep IN FRAME fpage2 DO: {method/zoomfields.i &ProgramZoom="C:/program/SalesRepZoom.w" &FieldZoom1="Sales-Rep" &FieldScreen1="ttCustomer.Sales-Rep" &Frame1="fPage2" &FieldZoom2="Rep-Name" &FieldScreen2="fiRepName" &Frame2="fPage2" &RunMethod="RUN setavariable IN hprogramzoom (INPUT 'Representante')." &EnableImplant="NO"} END. 38

Pesquisas de Chaves Estrangeiras Na sessão Main Block, deve-se setar o cursor do mouse para lupa; /*- Seta cursor do mouse para lupa, quando estiver posicionado sobre o fill-in -*/ ttcustomer.sales-rep:load-mouse- POINTER("image/lupa.cur":U) IN FRAME fpage2. 39

Pesquisas de Chaves Estrangeiras em Browses Quando for necessário implementar pesquisas de campos de chave estrangeira em Browses deve-se obedecer as seguintes regras: Deve ser incluso ao lado do campo que representa a chave estrangeira, 1 (uma) variável para conter a descrição desta, seguindo as regras de implementação de widgets do template; Nas triggers de MOUSE-SELECT-DBLCLICK e F5 devem ser feito uso do include method/zoomfields.i. 40

Pesquisas de Chaves Estrangeiras em Browses 41

Pesquisas de Chaves Estrangeiras em Browses method/zoomfields.i Parâmetro ProgramZoom FieldZoomN FieldScreenN Descrição Nome do programa de Pesquisa a ser executado Indica o nome do campo que deve ser retornado pelo programa de Pesquisa, N indica um número que pode variar de 1 até 10 Indica o nome do campo (variável) que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10 42

Pesquisas de Chaves Estrangeiras em Browses Parâmetro BrowseN FieldHandleN Descrição Indica o nome do browse no qual está o campo (variável) que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10 Indica a variável handle que contém o handle do campo que deve receber o valor retornado pelo programa de pesquisa, N indica um número que pode variar de 1 até 10, não se deve utilizar este parâmetro em conjunto com os parâmetros FieldZoomN, FieldScreenN e BrowseN 43

Pesquisas de Chaves Estrangeiras em Browses Parâmetro RunMethod EnableImplant Descrição Indica a linha de comando, que contém a chamada a um método do programa de pesquisa A variável hprogramzoom contém o handle do programa e pesquisa. Os valores YES e NO indicam se o botão Implantar será habilitado ou não. 44

Pesquisas de Chaves Estrangeiras em Browses OR F5 OF ttcustomer.sales-rep IN BRWSE brupd1 DO: {method/zoomfields.i &ProgramZoom="C:/program/SalesRepZoom.w" &FieldZoom1="Sales-Rep" &FieldScreen1="ttCustomer.Sales-Rep" &Browse1="brUpd1" &FieldZoom2="Rep-Name" &FieldScreen2="cRepName" &Browse2="brUpd1" &RunMethod="RUN setavariable IN hprogramzoom (INPUT 'Representante')." &EnableImplant="NO"} END. 45

Pesquisas de Chaves Estrangeiras em Browses Para utilizar um programa de Zoom construído em SmartObjects devemos seguir os seguintes passos : Deve ser incluso ao lado do campo que representa a chave estrangeira, 1 (um) fill-in para conter a descrição desta, seguindo as regras de implementação de widgets do template; 46

Pesquisas de Chaves Estrangeiras com SmartZoom Definir variáveis que são utilizadas pela tecnologia smartobjects; DEFINE NEW GLOBAL SHARED VARIABLE adm-broker-hdl AS HANDLE NO-UNDO. DEFINE VARIABLE wh-pesquisa AS HANDLE NO-UNDO. Nas triggers de MOUSE-SELECT-DBLCLICK e F5 devem ser feito uso do include include/zoomvar.i; Setar o cursor de pesquisa (image/lupa.cur) para o campo que representa a chave estrangeira. 47

Pesquisas de Chaves Estrangeiras com SmartZoom include/zoomvar.i Parâmetro prog-zoom Campo Descrição Nome do programa de Pesquisa a ser executado. Indica o nome do campo que deve ser retornado pelo programa de Pesquisa. Caso seja utilizado para mais de um campo, deve-se informar, a partir do segundo campo, um número seqüencial. 48

Pesquisas de Chaves Estrangeiras com SmartZoom Parâmetro Campozoom Descrição Indica o nome do campo no SmartBrowser do zoom de onde o valor é buscado, não deve ser informado o nome da tabela. Caso seja utilizado para mais de um campo, deve-se informar, a partir do segundo campo, um número seqüencial. 49

Pesquisas de Chaves Estrangeiras com SmartZoom Parâmetro Frame Descrição Indica o nome da frame na qual está o campo (variável) que deve receber o valor retornado pelo programa de pesquisa. Este parâmetro é opcional em SmartObjects, mas deve ser utilizado em ThinTemplates. Caso seja utilizado para mais de um campo, deve-se informar, a partir do segundo campo, um número seqüencial. 50

Pesquisas de Chaves Estrangeiras com SmartZoom Parâmetro Parametros Descrição Indica a linha de comando, que contém a chamada a um método do programa de pesquisa A variável wh-pesquisa contém o handle do programa e pesquisa 51

Pesquisas de Chaves Estrangeiras com SmartZoom OR F5 OF ttcustomer.sales-rep IN FRAME fpage2 DO: {include/zoomvar.i &prog-zoom= "C:/program/SalesRepZoom.w" &campo="ttcustomer.sales-rep" &campozoom="sales-rep" &frame="fpage2"} END. 52

Pesquisas de Chaves Estrangeiras com SmartZoom Na sessão Main Block, deve-se setar o cursor do mouse para lupa; /*- Seta cursor do mouse para lupa, quando estiver posicionado sobre o fill-in -*/ ttcustomer.sales-rep:load-mouse- POINTER("image/lupa.cur":U) IN FRAME fpage2. 53

Referências para Chaves Estrangeiras Para implementarmos referências para chave estrangeira deve-se obedecer as seguintes regras: Deve ser incluso ao lado do campo que representa a chave estrangeira, 1 (um) fill-in para conter a descrição desta, seguindo as regras de implementação de widgets do template; 54

Referências para Chaves Estrangeiras Instância do programa DBO que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira. Na trigger de LEAVE deve ser feito uso do include method/referencefields.i; Override do método de displayfields (after); Eliminar instância do programa DBO através de override do método de destroyinterface (after). 55

Referências para Chaves Estrangeiras A instância do programa DBO, que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira, deve ser feita no método initializedbos. {btb/btb008za.i1 <DBOProgram> YES} {btb/btb008za.i2 <DBOProgram> '' <VariableHandle>} RUN openquerystatic IN THIS-PROCEDURE (INPUT "<Query>":U) NO-ERROR. 56

Referências para Chaves Estrangeiras Parâmetro DBOProgram VariableHandle Query Descrição Nome físico do programa DBO Identifica o nome da variável handle que conterá o handle do programa DBO Nome da query a ser utilizada para a abertura de query inicial do programa DBO {btb/btb008za.i1 C:/TMP/DBOSales-Rep.p YES} {btb/btb008za.i2 C:/TMP/DBOSales-Rep.p '' hdbosales-rep} RUN openquerystatic IN THIS-PROCEDURE (INPUT "Sales- Rep":U) NO-ERROR. 57

Referências para Chaves Estrangeiras method/referencefields.i Parâmetro HandleDBOLeave KeyValueN Descrição Indica a variável handle que contém o handle do programa DBO que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira Indica o valor da chave a ser utilizada pelo método gotokey, N indica um número que pode variar de 1 até 10 58

Referências para Chaves Estrangeiras Parâmetro FieldNameN FieldScreenN FrameN Descrição Indica o nome do campo a ser retornado pelo programa DBO, N indica um número que pode variar de 1 até 10 Indica o nome do campo (variável) que deve receber o valor retornado pelo programa DBO, N indica um número que pode variar de 1 até 10 Indica o nome da frame na qual está o campo (variável) que deve receber o valor retornado pelo programa DBO, N indica um número que pode variar de 1 até 10 59

Referências para Chaves Estrangeiras Parâmetro ExcludeVars Descrição Indica se as variáveis utilizadas pelo include devem ser ou não definidas ON LEAVE OF ttcustomer.sales-rep IN FRAME fpage2 DO: {method/referencefields.i &HandleDBOLeave="hDBOSalesRep" &KeyValue1="ttCustomer.Sales-Rep:SCREEN-VALUE IN FRAME fpage2" &FieldName1="Rep-Name" &FieldScreen1="fiRepName" &Frame1="fPage2"} END. 60

Referências para Chaves Estrangeiras Override do método de displayfields (after): PROCEDURE afterdisplayfields: /*----------------------------------------------------- ----- Purpose: Override do método displayfields (after) Parameters: Notes: ------------------------------------------------------- ---*/ APPLY "LEAVE":U TO ttcustomer.sales-rep IN FRAME fpage2. RETURN "OK":U. END PROCEDURE. 61

Referências para Chaves Estrangeiras Override do método de destroyinterface (after) RUN PROCEDURE afterdestroyinterface: /*----------------------------------------------------- ---- Purpose: Override do método destroyinterface (after) Parameters: Notes: ------------------------------------------------------- ---*/ IF VALID-HANDLE(hDBOSalesRep) RUN destroy IN hdbosalesrep. RETURN "OK":U. END PROCEDURE.. 62

Referências para Chaves Estrangeiras em Browses Para implementarmos referências para chave estrangeira em browses deve-se obedecer as seguintes regras: Definir uma variável para conter a descrição do campo que representa a chave estrangeira; DEFINE VARIABLE crep-name AS CHARACTER NO-UNDO. 63

Referências para Chaves Estrangeiras em Browses Definir uma função para retornar a descrição do campo que representa a chave estrangeira, utilizando o include method/referencefields.i; Instânciar o programa DBO que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira; Incluir a variável na lista de campos exibidos pelo browse, fazendo uso da função recém criada através do operador @, através do botão de campos calculados; Eliminar instância do programa DBO através de override do método de destroyinterface (after). 64

Referências para Chaves Estrangeiras em Browses method/referencefields.i Parâmetro HandleDBOLeave KeyValueN Descrição Indica a variável handle que contém o handle do programa DBO que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira. Indica o valor da chave a ser utilizada pelo método gotokey, N indica um número que pode variar de 1 até 10. 65

Referências para Chaves Estrangeiras em Browses Parâmetro FieldNameN VariableN ExcludeVars Descrição Indica o nome do campo a ser retornado pelo programa DBO, N indica um número que pode variar de 1 até 10 Indica o nome da variável que deve receber o valor retornado pelo programa DBO, N indica um número que pode variar de 1 até 10 Indica se as variáveis utilizadas pelo include devem ser ou não ser definidas 66

Referências para Chaves Estrangeiras em Browses FUNCTION fnrep-name RETURNS CHARACTER (INPUT pcsales-rep AS CHARACTER) : DEFINE VARIABLE crep-nameaux AS CHARACTER NO-UNDO. {method/referencefields.i &HandleDBOLeave="hDBOSalesRep" &KeyValue1="pcSales-Rep" &FieldName1="Rep-Name" &Variable1="cRep-NameAux"} RETURN crep-nameaux. END FUNCTION. 67

Referências para Chaves Estrangeiras em Browses A instância do programa DBO, que contém acesso à tabela que contém a descrição do campo que representa a chave estrangeira, deve ser feita no método initializedbos. {btb/btb008za.i1 <DBOProgram> YES} {btb/btb008za.i2 <DBOProgram> '' <VariableHandle>} RUN openquerystatic IN THIS-PROCEDURE (INPUT "<Query>":U) NO-ERROR. 68

Referências para Chaves Estrangeiras em Browses Parâmetro DBOProgram VariableHandle Query Descrição Nome físico do programa DBO Identifica o nome da variável handle que conterá o handle do programa DBO Nome da query a ser utilizada para a abertura de query inicial do programa DBO {btb/btb008za.i1 C:/TMP/DBOSales-Rep.p YES} {btb/btb008za.i2 C:/TMP/DBOSales-Rep.p '' hdbosales-rep} RUN openquerystatic IN THIS-PROCEDURE (INPUT "Sales- Rep":U) NO-ERROR. 69

Referências para Chaves Estrangeiras em Browses 70

Referências para Chaves Estrangeiras em Browses Override do método de destroyinterface (after) RUN PROCEDURE afterdestroyinterface: /*----------------------------------------------------- ---- Purpose: Override do método destroyinterface (after) Parameters: Notes: ------------------------------------------------------- ---*/ IF VALID-HANDLE(hDBOSalesRep) RUN destroy IN hdbosalesrep. RETURN "OK":U. END PROCEDURE.. 71

Campos Indicadores (combo-box, selection-list ou radio-set) Em algumas situações temos listas de informações que não são gravadas diretamente no banco de dados, apenas sua referência; Descrição Valor no banco Feminino Masculino F M 72

Campos Indicadores (combo-box, selection-list ou radio-set) Para esses casos definimos o widget que apresenta a lista como um Campo Indicador Passos: Deve ser incluso 1 (um) widget que irá conter a lista de opções (combo-box, selection-list ou radio-set), caso seja um radio-set ou list-box deve-se incluí-lo dentro de um retângulo com label; além disso devem ser seguidas as regras de implementação de widgets do template; 73

Campos Indicadores (combo-box, selection-list ou radio-set) Instância do programa DBO que contém acesso à tabela de origem das informações da lista, caso necessário; {btb/btb008za.i1 <DBOProgram> YES} {btb/btb008za.i2 <DBOProgram> '' <VariableHandle>} RUN openquerystatic IN THIS-PROCEDURE (INPUT "<Query>":U) NO-ERROR. 74

Campos Indicadores (combo-box, selection-list ou radio-set) Parâmetro DBOProgram VariableHandle Query Descrição Nome físico do programa DBO Identifica o nome da variável handle que conterá o handle do programa DBO Nome da query a ser utilizada para a abertura de query inicial do programa DBO {btb/btb008za.i1 C:/TMP/Programs/DBOState.p YES} {btb/btb008za.i2 C:/TMP/Programs/DBOState.p '' hdbostate} RUN openquerystatic IN THIS-PROCEDURE (INPUT "State":U) NO-ERROR. 75

Campos Indicadores (combo-box, selection-list ou radio-set) Override do método de displayfields (after); PROCEDURE afterdisplayfields: /*----------------------------------------------------- ----- Purpose: Override do método displayfields (after) Parameters: Notes: ------------------------------------------------------- ---*/ IF AVAILABLE ttcustomer THEN ASSIGN rsterms:screen-value IN FRAME fpage2 = ttcustomer.terms. RETURN "OK":U. END PROCEDURE. 76

Campos Indicadores (combo-box, selection-list ou radio-set) Override do método de savefields (after); PROCEDURE aftersavefields: /*----------------------------------------------------- ----- Purpose: Override do método savefields (after) Parameters: Notes: ------------------------------------------------------- ---*/ ASSIGN ttcustomer.terms = rsterms. RETURN "OK":U. END PROCEDURE. 77

Exibir Mensagens de Erro 78

Exibir Mensagens de Erro Passos para exibição de mensagens: Instanciar o Utilitário, através do include method/showmessage.i1; {method/showmessage.i1} Popular a temp-table RowErrors, normalmente através da execução do método getrowerrors do programa DBO; RUN getrowerrors IN <DBOHandle> (OUTPUT TABLE RowErrors). 79

Exibir Mensagens de Erro Transferir e exibir os dados da temp-table RowErrors para o utilitário, através do include method/showmessage.i2; {method/showmessage.i2} Caso seja necessário que o Utilitário funcione como uma janela modal, deve-se utilizar o parâmetro &Modal com valor YES, conforme modelo a seguir: {method/showmessage.i2 &Modal="YES"} 80

Exibir Mensagens de Erro Eliminar a instância do Utilitário; caso seja utilizado um thintemplate deve-se fazer o override do método de destroyinterface (after). PROCEDURE afterdestroyinteface: /*----------------------------------------------------- ----- Purpose: Override do método destroyinterface (after) Parameters: Notes: ------------------------------------------------------- --*/ {method/showmessage.i3} RETURN "OK":U. END PROCEDURE. 81

Reposicionamento Automático do Browser de Zoom Observação: Somente implementar a técnica nas variáveis INICIAL de faixa, cujo tipo de dado for CARACTER ou INTEIRO. Editar o programa de zoom e selecionar a variável inicial de faixa (no exemplo c-inicial); 82

Reposicionamento Automático do Browser de Zoom 83

Reposicionamento Automático do Browser de Zoom Criar um gatilho para o evento ANY-KEY destas variáveis. Include AnyKey.i &Variavel: deve conter o nome da variável inicial de faixa &PageNumber: receberá o número da página 84

Reposicionamento Automático do Browser de Zoom Salvar e fechar o Programa de Zoom. 85

Utilização de OCX Quando for necessária a utilização de OCX com thintemplates é necessário que todas as FRAMEs existentes no programa tenham a opção NO-BOX selecionada. 86

Utilização de OCX 87

Override de eventos do browse no template MasterDetail e Zoom Técnica utilizada quando for necessário customizar eventos do browse sem interferir na execução das DPCs. Passos: Definir um preprocessador com o nome do evento que deseja customizar, definindo seu valor como YES. Os eventos disponíveis são: cursor-down, end, off-end, pagedown, value-changed, mouse-select-dblclick, cursor-up, home, off-home e page-up; 88

Override de eventos do browse no template MasterDetail e Zoom Pré-Processador <evento>n Descrição Onde <evento> é o nome do evento que será customizado no filho N, N indica o número da página, podendo variar de 1 até 8 Criar as triggers dos eventos e implementar a chamada da include para a execução das DPC s correspondente ao evento customizado; 89

Override de eventos do browse no template MasterDetail e Zoom {masterdetail/cursordown.i &PageNumber="1"} {masterdetail/end.i &PageNumber="1"} {masterdetail/offend.i &PageNumber="1"} {masterdetail/pagedown.i &PageNumber="1"} {masterdetail/valuechanged.i &PageNumber="1"} {masterdetail/dblclick.i &PageNumber="1"} {masterdetail/cursorup.i &PageNumber="1"} {masterdetail/home.i &PageNumber="1"} {masterdetail/offhome.i &PageNumber="1"} {masterdetail/pageup.i &PageNumber="1"} 90

Override de eventos do browse no template MasterDetail e Zoom A customização pode ser implementada antes ou depois da execução das DPC s. Definitions &global-define VALUE-CHANGED1 yes ON VALUE-CHANGED OF brson1 IN FRAME fpage1 DO: {masterdetail/valuechanged.i &PageNumber="1"} END. 91

Recursos Avançados do thinfolder Lista de recursos avançados do ThinFolder: Método SetImage SetFolder GetCurrentFolder SetEnabled InsertFolder DeleteFolder Descrição Coloca uma imagem na aba do folder, em vez de um label Posiciona uma página do thinfolder Retorna a página corrente do Folder Permite habilitar/desabilitar uma página do thinfolder Inclui dinamicamente uma nova página no thinfolder Elimina dinamicamente uma página do thinfolder 92

Recursos Avançados do thinfolder Posicionando uma Página do Folder RUN SetFolder IN hfolder (INPUT 2). Considerações: hfolder : variável handle que representa o thinfolder. Primeiro parâmetro: identifica qual página a ser posicionada no Folder. 93

Recursos Avançados do thinfolder Retornando a Página Corrente do Folder RUN GetCurrentFolder IN hfolder (OUTPUT <VAR>). Considerações: hfolder : variável handle que representa o thinfolder. <VAR> : variável do tipo inteiro que recebe o valor referente a página corrente do folder. 94

Recursos Avançados do thinfolder Habilitando/Desabilitando Páginas RUN setenabled IN hfolder (INPUT 2, INPUT FALSE). RUN setenabled IN hfolder (INPUT 1, INPUT TRUE). Considerações: hfolder: variável handle que representa o thinfolder. Primeiro parâmetro: identifica a página a ser habilitada/desabilitada. Segundo parâmetro: indica se a página será habilitada (TRUE) ou desabilitada (FALSE). 95

Recursos Avançados do thinfolder Colocando uma Imagem na Aba de uma Página: RUN setimage IN hfolder (INPUT 1, INPUT image/im-pag1, INPUT image/ii-pag1 ). Considerações: hfolder: variável handle que representa o thinfolder. Primeiro parâmetro: identifica a página a ter a aba alterada para imagem. Segundo parâmetro: indica a imagem que será utilizada quando a página estiver selecionada. Terceiro parâmetro: indica a imagem que será utilizada quando a página não estiver selecionada. 96

Recursos Avançados do thinfolder Eliminando Dinamicamente uma Página RUN deletefolder IN hfolder (INPUT 3). Considerações: hfolder : variável handle que representa o thinfolder. Primeiro parâmetro: identifica a página a ser eliminada. 97

Recursos Avançados do thinfolder Incluindo Dinamicamente uma Página RUN insertfolder IN hfolder (INPUT?, INPUT FRAME fpage0:handle, INPUT FRAME fpagex:handle, INPUT "Pag. X"). 98

Recursos Avançados do thinfolder Considerações hfolder: variável handle que representa o thinfolder. Primeiro parâmetro: identifica a posição onde a nova página será incluída. Segundo parâmetro: handle identificando a frame pai (principal) do programa. Terceiro parâmetro: handle identificando a frame a ser colocada na página. 99

Recursos Avançados do thinfolder Para que esse recurso possa ser usado, o folder já deve ter sido inicializado anteriormente com páginas estáticas. PROCEDURE BeforeInitializeInterface : /*------------------------------------------------------- Purpose: Parameters: <none> Notes: -------------------------------------------------------*/ assign frame fpage1:box = no frame fpage3:box = no. END PROCEDURE. 100

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. 101