Progress DCA Desenvolvendo Aplicações Caracter

Сomentários

Transcrição

Progress DCA Desenvolvendo Aplicações Caracter
Progress DCA
Desenvolvendo Aplicações Caracter
Parte 2
Tecnologia
1
Agenda
Parte 1
9 Introdução ao Progress
9 Movimentação dos Dados
9 Manipulando os Dados
9 Blocos
9 Localizando Registros
9 Variáveis
9 Processamento Condicional
Parte 2
9 Frames
9 Includes
9 Relatórios
9 Programação Orientada a Eventos
2
Agenda
9 Widgets
9 Tipos de Widgets
9 Menus
9 Tabelas Temporárias (TEMP-TABLE)
Parte 3
9 Procedures
9 Compartilhamento de Dados
9 Importação e Exportação de Dados
9 Tratamento de Erros
9 Transações
9 Bloqueio de Registro
9 Funções
3
Frames
FRAMES
4
Definições
9 É uma área retangular dentro
da tela do Progress usada
para mostrar informações.
9 Layout default para seus
dados.
9 Espaço disponível:
Frame (21 linhas)
Mensagens (2 linhas)
Linha de status (1 linha)
5
Frames
9 As frames default do progress ocorrem nos seguintes blocos:
PROCEDURE
REPEAT
FOR EACH
DO WITH FRAME
6
Frames
DISPLAY “Relatório de Clientes”
WITH FRAME F1 CENTERED.
FOR EACH customer:
DISPLAY customer.cust-num
customer.name
customer.phone
WITH FRAME F2 XX DOWN CENTERED.
END.
9 DOWN: especifica que a frame exibirá múltiplas ocorrências.
9 1 DOWN: dados de uma única iteração do bloco
9 10 DOWN: dados de dez iterações do bloco
9 Caso o número antes da opção DOWN não seja especificado, o
progress calcula automaticamente quantas iterações serão
executadas para cada display, de modo que todos os dados
caibam na tela.
7
Exemplo
DISPLAY “Relatório de Clientes” WITH FRAME F1 CENTERED.
FOR EACH customer:
DISPLAY customer.cust-num customer.name
customer.phone WITH FRAME F2 XX DOWN CENTERED.
END.
5 DOWN
10 DOWN
DOWN
8
Define Frame
9 Define uma frame para uso por um procedimento ou por diversos
procedimentos.
9 Ex.: DEFINE FRAME f-dados
customer.cust-num NO-LABEL SKIP(2)
customer.name
AT 5 SKIP
customer.address AT 5
WITH SIDE-LABELS OVERLAY.
9
Form
9 Permite definir o posicionamento dos campos.
9 O FORM estará sempre contido dentro de uma FRAME.
9 Uma FRAME pode possuir várias FORMS.
9 Caso a Frame não tenha sido informada ou não exista, o progress
cria automaticamente uma Frame.
9 Ex.: FORM
customer.cust-num NO-LABEL SKIP(2)
customer.name
AT 5 SKIP
customer.address AT 5
WITH FRAME f-dados.
10
Opções de Posicionamento
9 AT
-
- Alinhamento pela direita.
F1: Short
Fld2: Medium
Field3: Long
9 COLON - Alinhamento pelos dois pontos.
F1: Short
Fld2: Medium
- Field3: Long
9 TO - Alinhamento pela esquerda.
F1: Short
- Fld2: Medium
- Field3: Long
11
Manipulando Frames
9 VIEW - exibe uma frame.
9 Ex.: VIEW FRAME nome-da-frame.
9 HIDE - esconde uma frame.
9 Ex.: HIDE FRAME nome-da-frame NO-PAUSE.
9 CLEAR - apaga o conteúdo de uma frame.
9 Ex.: CLEAR FRAME f-arq ALL NO-PAUSE.
9 PAUSE – suspende a execução por uma quantidade de segundos
informada ou até que uma tecla seja pressionada
9 Ex.: PAUSE 5.
PAUSE.
12
Laboratório 6
LABORATÓRIO 6
Exercício disponível no
material de apoio
13
Includes
INCLUDES
14
Includes
9 Em tempo de compilação PROGRESS, lê estes arquivos include
como sendo parte do programa.
9 Vantagem: reutilização de código.
9 Ex.: {i-valida.i}
{i-valida.i “Código Inválido”}
/* i-valida.i */
MESSAGE “{1}” VIEW-AS ALERT-BOX.
15
Includes
9 São expansões em tempo de compilação
myprog.p
.
.
.
DO:
...
Display record.
...
END.
.
.
.
mycode.i
DO:
...
Display record.
...
END.
16
Exemplo: Includes
9 Código modular com arquivos de includes
myprog.p
.
.
.
{mycode.i}
.
.
.
mycode.i
DO:
...
Display record.
...
END.
{mycode.i}
17
Exemplo: Includes
9 Usando arquivos de include para definir variáveis
mycode.i
prog1.p
{mycode.i}
DEFINE VARIABLE...
.
.
.
prog2.p
{mycode.i}
.
.
.
18
Exemplo: Includes
{i-mostra.i &table=“customer”
&field=“cust-num”}
/* i-mostra.i */
FOR EACH {&table}:
DISPLAY {&table}.{&field}.
END.
19
Observações
9 Não pode ser utilizada a barra “\” nos nomes de arquivos ou
includes para informar o diretório, pois causa erro no UNIX.
9 Quando for necessário utilizar barras para informar diretório,
deve-se utilizar a barra “/”.
20
Laboratório 7
LABORATÓRIO 7
Exercício disponível no
material de apoio
21
Relatórios
RELATÓRIOS
22
Redirecionando a Saída
9 A saída padrão dos dados é feita no terminal (tela).
9 Porém, é possível alterar esta saída para um arquivo, para a
impressora ou para a área de transferência.
9 Ex: OUTPUT TO PRINTER.
OUTPUT TO “clipboard”.
OUTPUT TO “c:/tmp/teste.txt”.
OUTPUT TO TERMINAL.
23
Stream
9 Permite definir saídas simultâneas. A versão 9 do Progress
permite até 5 saídas diferentes por programa. A partir da versão
10, é possível definir até 50 saídas por programa.
9 Existem quatro regras básicas para utilização de stream:
1. Definir
2. Direcionar
3. Utilizar
4. Fechar
24
Exemplo: Stream
(1)
(2)
(3)
(4)
DEFINE STREAM
OUTPUT STREAM
PUT STREAM s1
OUTPUT STREAM
s1.
s1 TO arquivo.txt APPEND.
UNFORMATTED “TESTE” SKIP.
s1 CLOSE.
25
Totalizando Valores
9 ACCUMULATE (ACCUM): Calcula uma ou mais expressões de
totalização dentro de um bloco de iteração (Ex.: FOR EACH).
9 FUNÇÕES AUTOMÁTICAS
TOTAL
COUNT
MAXIMUM
MINIMUM
AVERAGE
26
Quebras
9 BREAK BY: Define categorias de quebra.
9 FIRST-OF: Retorna verdadeiro se a iteração atual for a primeira
do grupo de quebra.
9 LAST-OF: Retorna verdadeiro se a iteração atual for a última do
grupo de quebra.
9 FIRST: Retorna verdadeiro se a iteração atual for a primeira.
9 LAST: Retorna verdadeiro se a iteração atual for a última.
27
Exemplo
FOR EACH customer BREAK BY customer.sales-rep:
DISP customer.sales-rep WHEN FIRST-OF(sales-rep)
customer.name
customer.credit-limit.
ACCUM customer.credit-limit (TOTAL BY customer.salesrep).
IF LAST-OF(customer.sales-rep) THEN DO:
DISP ACCUMULATE TOTAL
BY customer.sales-rep
customer.credit-limit COLUMN-LABEL "Total".
END.
END.
28
Exemplo: Resultado
29
Cabeçalhos e Rodapés
9 Opções na definição da frame:
HEADER
PAGE-TOP (depende da HEADER)
PAGE-BOTTOM (depende da HEADER)
9 VIEW / HIDE: Exibir/Esconder frames.
9 PAGE-SIZE: número de linhas por página.
9 PAGE-NUMBER: retorna o número da página.
30
Laboratório 8
LABORATÓRIO 8
Exercício disponível no
material de apoio
31
Programação Orientada a Eventos
PROGRAMAÇÃO ORIENTADA A EVENTOS
32
Programação Orientada a Eventos
9 Usuário dirige a execução por intermédio do acionamento dos
componentes da interface.
9 A interface é composta por widgets,
que geram diferentes eventos.
33
Comportamento dos Programas
EVENTOS
PROCEDURAL
Gatilho 2
Comandos
.
.
.
Comandos
Fim
Gatilho 1
Gatilho 3
PROGRAMA
34
Eventos
9 Ações do usuário ou do Progress que ocorrem durante a execução
de uma aplicação.
9 Tipos de Eventos:
Eventos causados pelo usuário (acesso a elementos da
interface)
Eventos relacionados ao banco de dados
35
Exemplo: Eventos de Ações do Usuário
DEFINE BUTTON bt_go
LABEL "GO"
SIZE 12 BY 1
AUTO-GO.
DEFINE FRAME F_1
bt_go AT ROW 2 COL 5
WITH SIZE 22 BY 4 THREE-D VIEW-AS DIALOG-BOX TITLE “EXEMPLO”.
/* Evento */
ON GO OF FRAME F_1
DO:
MESSAGE "GO OF FRAME"
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
ENABLE bt_go WITH FRAME F_1.
VIEW FRAME F_1.
WAIT-FOR GO OF FRAME F_1.
MESSAGE "Depois do 'GO'"
VIEW-AS ALERT-BOX WARNING BUTTONS OK.
36
Exemplo: Resultado
Ao clicar no botão GO
37
Widgets
WIDGETS
38
Widgets
9 Existem 4 tipos básicos:
Window Widget: espaço de trabalho da aplicação. Criada quando a
aplicação for iniciada.
Frame Widget: recipiente para outros widgets.
Data Widget: forma de representação dos dados. São eles: fill-in,
text, editor, combo-box, etc.
Action Widget: forma de representar os comandos. Botões e
menus compõem os widgets de ação. Esses widgets permitem que
o usuário dirija a operação de sua aplicação.
39
Widgets
9 ATRIBUTOS: Apresentam/modificam as características dos
WIDGETS.
9 Ex.:
ASSIGN wgh_retang1:bgcolor IN FRAME f_dados = 8.
9 MÉTODOS: Retornam/adicionam informações/dados dos
WIDGETS. OBS: Normalmente retornam uma expressão lógica.
9 Ex.:
ASSIGN v_log_stat =
v_cod_estab:load-mouse-pointer(“cross.cur”)
IN FRAME f_dados.
40
Triggers
9 Bloco de código executado sempre que um evento ocorre.
ON event-list OF widget-list
trigger-block
9 Ex.:
ON choose OF bt-cancela DO:
MESSAGE “Cancelado pelo usuário”
VIEW-AS ALERT-BOX INFORMATION.
QUIT.
END.
41
Objetos Gráficos
Image
Window
Frame
Combo box
Fill in
Selection List
Radio set
Rectangle
Toggle box
Button
42
Tipos de Widgets
TIPOS DE WIDGETS
43
Botões
DEF BUTTON bt-sair
DEF BUTTON bt-ok
LABEL "Sair" AUTO-ENDKEY.
LABEL "Ok" AUTO-GO.
DEF BUTTON bt-atualizar LABEL "Atualizar".
DEF BUTTON bt-desfazer LABEL "Desfazer"
IMAGE FILE "im-undo".
44
Botões
Atributos
Label
Sensitive
Visible
Tooltip
Métodos
Load-mouse-pointer
Load-image
Load-image-down
Load-image-up
Load-image-insensitive
Eventos
Entry
Leave
Choose
45
View-As
• Use VIEW-AS para especificar os widgets de representação dos
dados.
• Ex.: DEFINE VARIABLE l-estudante AS logical
VIEW-AS TOGGLE-BOX LABEL
“Estudante?”.
46
Fill-In
DEFINE VARIABLE c-name AS character
VIEW-AS FILL-IN LABEL “Nome”
FORMAT “x(30)”.
Atributos
Format
Label
Screen-value
Sensitive
Visible
Tooltip
Métodos
Load-mouse-pointer
Eventos
Entry
Leave
47
Toggle-Box
DEFINE VAR l-cobertura1 AS logical LABEL
“Chocolate”
VIEW-AS TOGGLE-BOX.
DEFINE VAR l-cobertura2 AS logical LABEL
“Morango” VIEW-AS TOGGLE-BOX.
Ao mudar o valor marcado
o Progress executa a
trigger value-changed
48
Toggle-Box
Atributos
Label
Screen-value
Sensitive
Visible
Tooltip
Checked
Métodos
Load-mouse-pointer
Eventos
Entry
Leave
Value-changed
49
Radio-Set
DEF VAR i-num-bolas-sorvete AS integer
LABEL "Quantas bolas de Sorvete?"
VIEW-AS RADIO-SET HORIZONTAL
RADIO-BUTTONS "1 Bola", 1 , "2 Bolas", 2.
Ao mudar o valor marcado o
Progress executa a trigger
value-changed
50
Radio-Set
Atributos
Label
Screen-value
Sensitive
Visible
Tooltip
Horizontal
List-items
Métodos
Load-mouse-pointer
Add-last
Delete
Disable
Enable
Replace
Eventos
Entry
Leave
Value-changed
51
Selection-List
DEF VAR c-coberturas AS character
LABEL "Cobertura"
VIEW-AS SELECTION-LIST MULTIPLE
LIST-ITEMS "Chantily
",
"Creme
",
"Mel
",
"Morango
"
SCROLLBAR-VERTICAL
INNER-CHARS 12
INNER-LINES 4 SORT.
52
Selection-List
Atributos
Label
Screen-value
Sensitive
Visible
Tooltip
Multiple
Num-items
List-items
Métodos
Load-mouse-pointer
Add-last
Add-first
Delete
Entry
Replace
Lookup
Eventos
Entry
Leave
Value-changed
Default-action
53
Editor
DEF VAR c-editor AS char FORMAT "x(3000)"
LABEL "Editor de Textos"
VIEW-AS EDITOR INNER-LINES 10
INNER-CHARS 20
SCROLLBAR-VERTICAL
SCROLLBAR-HORIZONTAL.
54
Editor
Atributos
Métodos
Label
Load-mouse-pointer
Screen-value
Read-file
Sensitive
Save-file
Visible
Tooltip
Num-lines
Read-only
Scrollbar-vertical
Scrollbar-horizontal
Eventos
Entry
Leave
55
Combo-Box
DEF VAR c-coberturas AS character
LABEL "Cobertura" VIEW-AS COMBO-BOX
LIST-ITEMS "Chantily
",
"Creme
",
"Mel
",
"Morango
"
SIZE 15 BY 1.
56
Combo-Box
Atributos
Format
Label
Screen-value
Sensitive
Visible
Tooltip
List-items
num-items
Métodos
Load-mouse-pointer
Add-first
Add-last
Delete
Entry
Lookup
Replace
Eventos
Entry
Leave
Value-changed
57
Image
DEF IMAGE im-logo
Atributos
Sensitive
Visible
Tooltip
FILE ”logo.bmp” SIZE 10 BY 1.
Métodos
Load-mouse-pointer
Load-image
58
Rectangle
DEF RECTANGLE rt-key SIZE 70 BY 5
EDGE-PIXELS 3
BGCOLOR 3 FGCOLOR 15.
Atributos
Filled
Sensitive
Visible
Tooltip
Métodos
Load-mouse-pointer
59
Browse
• Interface para a Query.
• Ex:
DEFINE QUERY query-name FOR customer.
DEFINE BROWSE browse-name QUERY query-name
DISPLAY customer.cust-num
customer.name
WITH 15 DOWN TITLE “Browse de Clientes”.
OPEN QUERY query-name FOR EACH customer.
UPDATE browse-name WITH FRAME f1.
60
Browse
DEF QUERY q-cust FOR customer SCROLLING.
DEF BROWSE b-cust QUERY q-cust
DISPLAY customer.cust-num
customer.name
customer.city
customer.country
WITH SEPARATORS 5 DOWN.
DEF FRAME f-dados
b-cust WITH NO-LABELS.
OPEN QUERY q-cust FOR EACH customer.
UPDATE b-cust WITH FRAME f-dados.
61
Browse
Atributos
Métodos
Multiple
Fetch-selected-row
Sensitive
Is-row-selected
Visible
Select-row
Separators
Load-mouse-pointer
Title
Num-selected-rows
Eventos
Entry
Leave
Default-action
Value-changed
62
Representação de Campos
WIDGET
TIPO DE DADOS
CARACTER
NUMÉRICO
LÓGICO
COMBO-BOX
X
X
X
FILL-IN
X
X
X
RADIO-SET
X
X
X
TEXT
X
X
X
SELECTION-LIST
X
EDITOR
X
TOGGLE-BOX
X
63
Principais Eventos
9 CHOOSE (buttons, menus)
9 ENTRY
9 LEAVE
9 VALUE-CHANGED (toggle-box, radio-set, selection-list, browse)
64
Manipulando Widgets
9 ENABLE - ativa o widget na tela.
9 Ex.: ENABLE bt-inclui WITH FRAME f-cliente.
9 DISABLE - desativa o widget na tela.
9 Ex.: DISABLE bt-mod WITH FRAME f-cliente.
9 APPLY - Executa um gatilho de um widget.
9 Ex.: APPLY “choose” TO bt-mod IN FRAME f-cliente.
9 WAIT-FOR - Para a execução. Fica esperando eventos.
9 Ex.: WAIT-FOR choose OF bt-sai
IN FRAME f-cliente.
65
Relembrando - Atributos
9 widget-name:attribute-name
9 Ex.: DISP c-name:label WITH FRAME f-a.
9 widget-name:attribute-name IN FRAME frame-name = value
9 Ex. ASSIGN c-name:help IN FRAME f-a =
“Informe aqui o nome do cliente”.
66
Relembrando - Métodos
9 ASSIGN v-log = widget-name:metod-name(...) IN FRAME framename.
9 Ex.: ASSIGN v-log = ed-texto:load-file(“doc.txt”)
IN FRAME f-a.
ASSIGN v-log = sl-estados:add-last(“SC”)
IN FRAME f-a.
67
Menus
MENUS
68
Menus
DEFINE SUB-MENU sm-Reports
MENU-ITEM mi-Labels
LABEL
MENU-ITEM mi-Names
LABEL
RULE
MENU-ITEM mi-Balances LABEL
MENU-ITEM mi-Today
LABEL
DEFINE MENU mbar MENUBAR
SUB-MENU sm-Table
SUB-MENU sm-Reports
SUB-MENU sm-Help
"Customer Labels"
"Customer Names"
"Order Totals"
"Order Items".
LABEL "Tables"
LABEL "Reports"
LABEL "Help".
69
Exemplo de Menus
ASSIGN DEFAULT-WINDOW:MENUBAR =
MENU mbar:HANDLE.
70
Triggers para Menu
ON CHOOSE OF MENU-ITEM mi-item
IN MENU menu-name DO:
bloco
END.
DEF SUB-MENU sm-sair
MENU-ITEM mi-sair LABEL "Sai&r"
TRIGGERS:
ON CHOOSE APPLY "window-close"
TO current-window.
END TRIGGERS.
71
Laboratório 9
LABORATÓRIO 9
Exercício disponível no
material de apoio
72
Tabelas Temporárias (Temp-Table)
TABELAS TEMPORÁRIAS
(TEMP-TABLE)
73
Tabelas Temporárias
9 São iguais as tabelas;
9 Possuem índice;
9 Podem denegrir a performance, caso tenham muitos registros e não
possuam índice adequado;
9 Sintaxe de definição:
DEF TEMP-TABLE tt-name
[NO-UNDO]
[LIKE table-name
[USE-INDEX index-name [AS PRIMARY]] ... ]
[FIELD field-name {AS data-type | LIKE field}]...
[INDEX index-name
[IS [UNIQUE] [PRIMARY] [WORD-INDEX ]]
{index-field [ASCENDING|DESCENDING]}...]...
74
Exemplo: Tabelas Temporárias
DEFINE TEMP-TABLE tt-cliente NO-UNDO
LIKE customer
FIELD sales-rep
AS CHARACTER FORMAT “x(5)”
LABEL “Representante”
FIELD region
LIKE state.region
INDEX i-repres IS PRIMARY sales-rep.
INSERT tt-cliente EXCEPT comments WITH 1 COLUMN.
FOR EACH tt-cliente NO-LOCK:
DISP tt-cliente EXCEPT comments WITH SIDE-LABELS.
END.
75
Laboratório 10
LABORATÓRIO 10
Exercício disponível no
material de apoio
76
Agradecimento
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.
77

Documentos relacionados

CRM - IEG

CRM - IEG todas as informações em uma base de dados única e disponibilizando para todos os departamentos da empresa. Neste caso, a CRM pode custar caro para uma empresa, pela possibilidade de utilizar mais

Leia mais