• Nenhum resultado encontrado

ThinTemplates Parte 3

N/A
N/A
Protected

Academic year: 2021

Share "ThinTemplates Parte 3"

Copied!
93
0
0

Texto

(1)

1

Parte 3

(2)

2

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

(3)

3

9 ThinFormation Parte 4 9 ThinFormationNoNavigation 9 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

(4)

4

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

(5)

5

(6)
(7)
(8)

8

9 Características

Pode ser utilizado tanto como Janela Mestre ou Janela Detalhe, usando para isto uma ou mais páginas;

O gerenciamento das páginas do folder é feito pelo programa objects/thinFolder.w;

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

(9)

9

9 Tarefas

Definições dos Preprocessadores Definições das Páginas do Folder Disposição dos widgets nas Páginas

(10)

10

9 Definições dos Preprocessadores

&GLOBAL-DEFINE Program thinMaintenance &GLOBAL-DEFINE Version 1.00.00.000 &GLOBAL-DEFINE WindowType Detail &GLOBAL-DEFINE Folder YES &GLOBAL-DEFINE InitialPage 1

&GLOBAL-DEFINE FolderLabels Local Default &GLOBAL-DEFINE page0Widgets btOk btHelp &GLOBAL-DEFINE page1Widgets

(11)

11

9 Definições das Páginas do Folder

O template inicialmente possui 2 (duas) páginas Pode possuir no máximo 8 (oito) páginas

A Frame principal fPage0 pode ter somente sua altura alterada, obedecendo:

Posicionamento da linha acrescido da altura dos frames das páginas.

(12)

12

9 Cada página está relacionada a uma widget frame

fPage<PageNumber>

Devem estar posicionados na coluna 3.50;

A linha na qual devem estar posicionados fica a 1.45 abaixo do último widget da frame principal (fPage0);

A largura não deve ser alterada (84.43);

A altura é definida através da quantidade de widgets em linha acrescido de 0.25.

(13)
(14)

14

9 Disposição dos Widgets

Quando for necessário fazer a inclusão de widgets deve-se primeiramente selecionar o frame de trabalho;

(15)
(16)

16

9 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;

(17)

17

Para widgets dos tipos editores ou list-box ou radio-set, suas alturas devem ser definidas pelo próprio desenvolvedor; A linha na qual os widgets que estão na primeira linha dos frames das páginas, deve ser 1.17; os demais devem estar a distância de 1.00 do widget anterior.

(18)

18

(19)
(20)

20

9 Características

É uma janela do tipo detalhe, isto é, sem menu de barra e moldura, simulando uma caixa de diálogo;

O botão 'Executar' tem como função executar toda a parametrização realizada nos Folders;

O botão 'Fechar' do frame sai da tela;

(21)

21

Seleção: tudo que é faixa;

Classificação: Radio-set com as opções;

Parâmetros: com exceção da faixa, as outras informações que o usuário digita;

Digitação: browse updatable.

O gerenciamento das páginas do folder é feito pelo programa objects/thinFolder.w;

Uma das opções de saída do relatório é o formato RTF (Rich Text Format).

(22)

22

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

(23)

23

9 Tarefas

Definições dos Preprocessadores Definições das Páginas do Folder Disposição dos widgets nas Páginas Preparação do Programa de Interface

Página de Layout Página de Seleção Página de Classificação Página de Parâmetros

(24)

24

Página de Digitação Página de Impressão Página de Log

Gravação e Validação dos Registros

(25)

25

9 Definições dos Preprocessadores

&GLOBAL-DEFINE Program thinReport &GLOBAL-DEFINE Version 1.00.00.000 &GLOBAL-DEFINE VersionLayout

&GLOBAL-DEFINE Folder YES &GLOBAL-DEFINE InitialPage 1

&GLOBAL-DEFINE FolderLabels Seleção,Classificação, Parâmetro, Digitação,Impressão

(26)

26

&GLOBAL-DEFINE PGLAY NO &GLOBAL-DEFINE PGSEL YES &GLOBAL-DEFINE PGCLA YES &GLOBAL-DEFINE PGPAR YES &GLOBAL-DEFINE PGDIG YES &GLOBAL-DEFINE PGIMP YES &GLOBAL-DEFINE PGLOG NO

(27)

27

&GLOBAL-DEFINE page0Widgets btOk ~ btCancel ~ btHelp2 &GLOBAL-DEFINE page1Widgets

&GLOBAL-DEFINE page2Widgets

&GLOBAL-DEFINE page3Widgets rsClassif &GLOBAL-DEFINE page4Widgets lParameter ~

(28)

28

&GLOBAL-DEFINE page5Widgets brDigita ~ btAdd ~ btUpdate ~ btDelete ~ btSave ~ btOpen

&GLOBAL-DEFINE page6Widgets rsDestiny ~ btConfigImpr ~ btFile ~

rsExecution &GLOBAL-DEFINE page7Widgets

(29)

29

&GLOBAL-DEFINE page0Text &GLOBAL-DEFINE page1Text &GLOBAL-DEFINE page2Text &GLOBAL-DEFINE page3Text

&GLOBAL-DEFINE page4Text text-entrada &GLOBAL-DEFINE page5Text

&GLOBAL-DEFINE page6Text text-destino text-modo &GLOBAL-DEFINE page7Text

(30)

30

&GLOBAL-DEFINE page1Fields

&GLOBAL-DEFINE page2Fields cIniField cEndField &GLOBAL-DEFINE page3Fields

&GLOBAL-DEFINE page4Fields cInputFile &GLOBAL-DEFINE page5Fields

&GLOBAL-DEFINE page6Fields cFile &GLOBAL-DEFINE page7Fields

(31)

31

9 Definições das Páginas do Folder

O template inicialmente possui 7 (sete) páginas: fPage0 – Principal fPage1 - Layout fPage2 – Seleção fPage3 - Classificação fPage4 – Parâmetro fPage5 - Digitação fPage6– Impressão fPage7 - Log

(32)

32

9 A Frame principal fPage0 pode ter somente sua altura

alterada, obedecendo:

Posicionamento da linha acrescido da altura dos frames das páginas.

9 Cada página está relacionada a uma widget frame fPage<PageNumber>

Devem estar posicionados na coluna 3.50;

A linha na qual devem estar posicionados fica a 1.45 abaixo do último widget da frame principal (fPage0);

(33)

33

A largura não deve ser alterada (84.43);

A altura é definida através da quantidade de widgets em linha acrescido de 0.25

(34)
(35)

35

9 Disposição dos Widgets

Quando for necessário fazer a inclusão de widgets deve-se primeiramente selecionar o frame de trabalho;

(36)
(37)

37

9 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;

(38)

38

Para widgets dos tipos editores ou list-box ou radio-set, suas alturas devem ser definidas pelo próprio desenvolvedor; A linha na qual os widgets que estão na primeira linha dos frames das páginas, deve ser 1.17; os demais devem estar a distância de 1.00 do widget anterior.

(39)

39

9 Preparação do Programa de Interface

Verificar quais páginas é necessário ao programa; Eliminar as frames das páginas desnecessárias;

Em 'Definitions' informar “NO” para os pré-processadores referentes as páginas que não serão utilizadas.

(40)

40

&GLOBAL-DEFINE PGLAY NO &GLOBAL-DEFINE PGSEL YES &GLOBAL-DEFINE PGCLA YES &GLOBAL-DEFINE PGPAR YES &GLOBAL-DEFINE PGDIG YES &GLOBAL-DEFINE PGIMP YES &GLOBAL-DEFINE PGLOG NO

(41)

41

9 Para utilizar a opção de saída do relatório para o formato RTF

informar em ‘Definitions’ o valor do respectivo préprocessador para YES.

(42)

42

9 Página de Layout

Esta página é obrigatória para os programas de Importação e Exportação;

E necessário só é possível alterar a Frame para NO-BOX; 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.

(43)

43

9 Página de Seleção

Criar como 'Database Fields' e convertê-los para variáveis para obter automaticamente os labels, formatos e tamanhos do dicionário de dados;

(44)

44

9 Página de Classificação

Redefinir o 'list-items' do radio-set rs-classif , com as opções de classificação de seu relatório;

(45)

45

9 Página de Parâmetros

Esta página é obrigatória para programas de Importação e Exportação;

(46)

46

9 Página de Digitação

Em 'Definitions', corrigir a definição da temp-table de digitação tt-digita inserindo os campos necessários;

Em 'Section Editor', para o objeto browse br-digita adaptar os seguintes gatilhos para a nova definição da temp-table tt-digita e outras necessidades:

(47)

47

'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;

(48)

48

Ainda em 'Section Editor', para os botões btAdd e btUpdate, adaptar os seus gatilhos de 'Choose', na linha que aplica um evento 'Entry', sobre o primeiro campo habilitado no browse; Todas as validações do browse brDigita devem ser feitas na procedure piExecute

(49)

49

9 Página de Impressão

Esta página somente deve ser utilizada para programas de Relatório.

(50)

50

9 Página de Log

Esta página é obrigatória para programas de Importação e Exportação.

Para programas de Exportação, retirar o campo rsAll, o retângulo e o texto Imprime.

(51)

51

9 Gravação e Validação dos Registros

Em 'Definitions' implementar os campos de parâmetros e seleção na definição da temp-table tt-param;

Na procedure 'piExecute', colocar as validações necessárias às opções do usuário para execução do relatório;

(52)

52

if input frame f-pg-par i-nr-nivel > 19 then do:

run SetFolder IN hFolder (INPUT 2). run utp/ut-msgs.p (input "show",

input 73, input " ").

apply 'entry' to i-nr-nivel in frame f-pg-par.

return error. end.

(53)

53

Na procedure 'piExecute', colocar a lógica de gravação dos parâmetros e seleção na temp-table tt-param;

Substituir na chamada do include {report/i-rprun.i} a literal 'XXP/XX9999RP.P' pelo programa que deve imprimir o relatório.

(54)

54

9 Programa de Lógica (rp.p)

Programa sem interface que contém a lógica de negócio; Todas as validações ou informações com necessidade de intervenção do usuário devem ser tratadas pelo programa .w que o chama.

(55)

55

9 Passos:

Copiar a definição das temp-tables tt-param e tt-digita do programa de interface (.W) para o programa que deve gerar o relatório (rp.p);

Utilizar um stream padrão definido como STR-RP, para impressão do relatório;

Deve-se passar o parâmetro &stream com o nome da stream para os includes rpcab.i, rpcb80, rpc256.i, rpout.i e i-rpclo.i;

Para programas de Importação e Exportação definir outro stream para a entrada/saída dos dados;

(56)

56

Nas seleções, ao invés de utilizar a palavra "à", para dar idéia de faixa, substituí-la pelos caracteres "|< >|" semelhantes as imagens utilizadas na tela de seleção, e que não necessitam ser traduzidos;

Em todos os forms/frames de impressão deve-se colocar a cláusula stream-io;

Para utilizar a funcionalidade de impressão para arquivo RTF definir o préprocessador conforme abaixo:

&GLOBAL-DEFINE RTF YES &SCOPED-DEFINE pagesize N

(57)

57

A definição da temp-table tt-param deve ser idêntica a definição da mesma no programa de interface.

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. Segue exemplo abaixo:

IF tt-param.destino <> 4 THEN DO: VIEW STREAM str-rp FRAME f-cabec. VIEW STREAM str-rp FRAME f-rodape. END.

(58)

58

(59)
(60)

60

9 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)

(61)

61

9 Tarefas

Definições dos Preprocessadores

Definição da Temp-table de Comunicação Queries para os Browses

Instância dos DBOs

Disposição dos widgets nas Páginas Criação do Método openQueries Criação do Método saveParentFields

(62)

62

Triggers de Botões Padrão Criação do Método goToRecord

(63)

63

9 Definições dos Preprocessadores

&GLOBAL-DEFINE Program thinFormation &GLOBAL-DEFINE Version 1.00.00.000 &GLOBAL-DEFINE First YES

&GLOBAL-DEFINE Prev YES &GLOBAL-DEFINE Next YES &GLOBAL-DEFINE Last YES &GLOBAL-DEFINE GoTo YES &GLOBAL-DEFINE Search YES

(64)

64

&GLOBAL-DEFINE UpdateTarget YES &GLOBAL-DEFINE DelTarget YES &GLOBAL-DEFINE AddTarget YES &GLOBAL-DEFINE DelAllTarget YES &GLOBAL-DEFINE AddAllTarget YES

&GLOBAL-DEFINE ttParent ttOrder &GLOBAL-DEFINE hDBOParent hDBOOrder &GLOBAL-DEFINE DBOParentTable Order

&GLOBAL-DEFINE ttTarget ttOrder-Line &GLOBAL-DEFINE hDBOTarget hDBOOrder-Line &GLOBAL-DEFINE DBOTargetTable Order-Line

(65)

65

&GLOBAL-DEFINE ttSource ttItem &GLOBAL-DEFINE hDBOSource hDBOItem &GLOBAL-DEFINE DBOSourceTable Item

&GLOBAL-DEFINE page0Fields ttOrder.Order-Num ~ ttOrder.Order-Date ~ ttOrder.Sales-Rep &GLOBAL-DEFINE sourceBrowse brSource

(66)

66

9 Para retirar os botões de Consultas Relacionadas e Relatórios

Relacionados, o desenvolvedor deve incluir o preprocessor padrão referente ao botão que deseja retirar.

&GLOBAL-DEFINE ExcludeBtQueryJoins YES &GLOBAL-DEFINE ExcludeBtReportsJoins YES

(67)

67

9 Para definir o número de registros que devem ser retornados para

o browse, deve-se utilizar o preprocessor padrão a seguir:

Número de registros que devem ser retornados no browse Source

NumRowsReturnedSource

Número de registros que devem ser retornados no browse Target

NumRowsReturnedTarget

Descrição Preprocessador

(68)

68

9 Definição da Temp-table de Comunicação

(69)
(70)
(71)

71

9 Queries para os Browses

As queries dos browsers devem ser geradas com um FOR EACH simples na TEMP-TABLE de comunicação da interface.

(72)
(73)

73

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

(74)

74

9 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;

(75)

75

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

(76)

76

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.

(77)

77

9 Para os widgets da temp-table de comunicação, deve-se utilizar o

(78)

78

9 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;

(79)

79

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;

(80)

80

9 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 formation/OpenQueriesTarget.i;

Para atualizar os dados do browser Origem utiliza o include formation/OpenQueriesSource.i;

(81)

81

– Traz somente os 40 (quarenta) primeiros registros associados aos browsers.

(82)

82

9 formation/openQueriesTarget.i

Identifica o nome da query a ser utilizada para realizar a abertura do DBO Destino

Query

Nome da tabela pai, utilizado para designar o método linkTo<Parent>

Parent

Descrição Parâmetro

(83)

83

9 formation/openQueriesSource.i

Parâmetros a serem utilizados para o método setConstraint{&Description}

ConstraintParameters

O valor YES indica que o browse Origem deve ser atualizado a cada vez que for efetuada navegação na tabela Pai

OpenAlways

Identifica o nome da query a ser utilizada para realizar a abertura do DBO Origem

Query

Descrição Parâmetro

(84)

84

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

(85)

85

9 Método saveParentFields

É responsável por atualizar a tabela de formação com base nos campos da tabela pai e tabela origem.

(86)

86

PROCEDURE saveParentFields:

assign {&ttTarget}.order-num = {&ttParent}.order-num {&ttTarget}.item-num = {&ttSource}.item-num {&ttTarget}.qty = 1 {&ttTarget}.Price = {&ttSource}.price. RETURN "OK":U. END PROCEDURE.

(87)

87

9 Triggers dos Botões Padrão

Botão btUpdateTarget

Nome do programa a ser executado para realizar a alteração de registro da tabela formação.

ProgramTarget

Descrição Parâmetro

ON CHOOSE OF btUdpateTarget IN FRAME fPage1 DO: {masterdetail/UpdateTarget.i

&ProgramTarget="C:/Programs/MaintenanceNoNavigationOrder.w"} END.

(88)

88

9 Triggers dos Botões Padrão

Botão btSearch

Nome do programa a ser executado para realizar a pesquisa de registros.

ProgramZoom

Descrição Parâmetro

ON CHOOSE OF btSearch IN FRAME fPage0 /* Search */ OR CHOOSE OF MENU-ITEM miSearch IN MENU mbMain DO:

{method/ZoomReposition.i &ProgramZoom="C:/Programs/Zoom.w "} END.

(89)

89

9 Método goToRecord

É responsável pela função de Vá Para da tabela pai, disparada pelo botão btGoTo e pelo menu miGoTo.

(90)

90

9 Parâmetros

Nome da tabela a ser utilizado para definir o título da frame de Vá Para.

<Tabela>

Nomes dos campos a serem inclusos na frame de Vá Para.

<campo N>

Indica o tipo de variável (c = character, d = decimal, i = integer).

<c|d|i>

Descrição Parâmetro

(91)

91

PROCEDURE goToRecord:

DEFINE VARIABLE iCust-Num LIKE ttCustomer.Cust-Num NO-UNDO. DEFINE FRAME fGoToRecord

iCust-Num AT ROW 1.21 COL 15 COLON-ALIGNED btGoToOK AT ROW 2.63 COL 2.14

btGoToCancel AT ROW 2.63 COL 13 rtGoToButton AT ROW 2.38 COL 1 SPACE(0.28)

WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE

THREE-D SCROLLABLE FONT 1 TITLE "Vá Para Customer" DEFAULT-BUTTON btGoToOK CANCEL-BUTTON btGoToCancel.

(92)

92

ON "CHOOSE":U OF btGoToOK IN FRAME fGoToRecord DO: ASSIGN iCustNum.

RUN goToKey IN {&hDBOTable} (INPUT iCustNum). IF RETURN-VALUE = "NOK":U THEN DO:

RUN utp/ut-msgs.p (INPUT "SHOW":U, INPUT 2, INPUT "Customer").

RETURN NO-APPLY. END.

… END.

ENABLE iCust-Num btGoToOK btGoToCancel WITH FRAME fGoToRecord.

(93)

93

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.

universidade@datasul.com.br

http://universidade.datasul.com.br

universidade@datasul.com.br

http://universidade.datasul.com.br

Referências

Documentos relacionados

PORTUGUÊS: Fonética e Fonologia; Divisão Silábica; Acentuação Gráfica; Emprego do hífen; Ortografia; Pontuação; Processos de Formação das Palavras; Estrutura das

- Tratamento de hemorragias (sangramento) e profilaxia perioperatória de hemorragias (prevenção de sangramento do período antes, durante e depois de uma cirurgia) em pacientes

Como tem direta relação com o nível lógico-formal (adequação ao sistema jurídico), sugere-se no modelo de racionalidade legislativa deste artigo que se inclua naquele elemento

4 — Para efeitos do disposto no número anterior, as en- tidades de gestão coletiva devem verificar os seus registos bem como outros registos disponíveis e facultar, até três

Mestre em Gestão e Finanças, conta com uma breve experiência em consultoria na área de pagamentos, nomeadamente em estudos de mercado e estratégia...

Isso reforça que, apesar de ser uma compra rotineira, quando os clientes veem até a organização, além do preço do litro do combustível, estão atribuindo os serviços que são

b) a propagação para longa distância melhora os bate-papos locais, e você pode aproveitar as faixas altas para tal. c) os melhores locais para bate-papos são logo no início

1. A partir do momento em.. que você tem mais maneiras de melhorar a sua mão e ganhar de quem, por exemplo, tem par de valetes, você estará mais inclinado a apostar com o A7.