Layout de Telas TIPOS DE TELAS Janela Mestre Base dos programas chamados a partir do menu Menu de barra, régua de botões no topo da janela que disponibilizam as funções existentes naquele programa, e possuem moldura (resizeable) !x" #ela de um programa de cadastro Janela Detalhe (filhas) $hamadas a partir de janelas mestre %ealizaç&o de funções de um programa '&o possuem menu de barra, régua de botões fica na parte de baixo da tela '&o possuem moldura (resize no) !xemplo" #ela de um programa de zoom Caixas de Diáloo nterface modal funções de grande risco aos sistemas %égua de botões na parte de baixo da caixa !xemplo" *rograma de $+lculo do *reço Médio O!ser"a#$o '&o é aconselh+el salar salar uma -ialog com uma .indo/ aberta 0uando isto é feito, é poss1el que o menu da .indo/ seja copiado para a -ialog eliminando2o $aso isto aconteça é necess+rio recriar a -ialog e o menu da .indo/ O%JETOS Co&!o'!oxes Ver capítulo Como implementar campos indicadores com view-as combo-box nas telas.- TECNICAS
etnulos 3grupar a chae de acesso das telas, agrupar campos de um mesmo assunto, emoldurar itens de radio2set e emoldurar editores que necessitem de label %ot*es Botões com label" altura" 4,556 largura" 45, 47 ou 85 unidades6 %epresentarem ações" erbos no infinitio ($ancelar, ncluir ) 9:;9" confirma e sai da tela6 9$ancelar9" n&o confirma e sai da tela6 +ill'in,s 3ltura de 5,<< +ra&es(Telas) #1tulo das telas" =#2>555i, n&o necessita interenç&o do programador6 pr ogramador6 M+ximo >5 colunas ? tamanho fixo M+ximo 4@ linhas 2 tamanho ari+el A*ropert CheetA da janela no =B, nos campos A.idthA e ADeightA6 Mesmas dimensões utilizadas para as propriedades MAX-WIDTH-CHARS e MIN-WIDTH-CHARS (altura m+xima e m1nima) e MAX-HEIGHT-CHARS e MIN-HEIGHT-CHARS (largura m+xima e m1nima) $om isso as janelas podem possuir a moldura dada pela propriedade RESIZEABLE : include .'2 CE! faz estas atribuições adio'Sets '&o possuiem labels (retFngulo) Dorizontais (GH) ou erticais (IH G@) Mais de @ itens 2 combo2boxes Ver capítulo Como implementar campos indicadores indicadores com view-as radio-set nas telas.- TECNICAS TECNICAS
Editores '&o possui label *ropriedades (Propert S!eet )" )" %!#=%'2'C!%#!-
Jonte A8A
CO-SIDEA./ES SO%E OS SMATO%JECTS S&art%ro0ser :bjeto *rocedure %ecupera e isualiza dados, utilizando um bro/se br o/se 'ome padr&o do Bro/se n&o dee ser modificado Manter tamanho S&art1ie0er *rocedure object Kisualiza os campos da base de dados *reenche registros da base de dados -istanciamento de uma linha (antes e apLs) S&art2uery $ontém uma base de dados quer *reenche registros para outro Cmart:bjects *ode responder de naegaç&o de um Cmart*anel e3o&enda#*es -a tela de 3ara3ter4sti3as da 52uery %uilder56 e& 5O7tions56 o 3a&7o 5eturned5 de"e ser alterado de 5All +ields5 7ara 5+ields 8sed59 O!ser"a#$o: "# em coment+rios 2 traduç&o dos fontes dos templates para outros idiomas
CAP;T8LO <
Estilos
CADASTO SIMPLES
Cara3ter4sti3as Todas as fun#*es6 ex3eto ex3eto =oo& e >"á 7ara>6 reali=adas na tela !ase do 7rora&a? 7rora&a? $ampos alinhados formando colunas #abulaç&o de cima para baixo ? coluna a coluna menu de barra todos os botões 'oas funções" botões (régua de botões no topo) e itens no menu de barra 3lterar" n&o permite alterar a chae !liminar" confirmaç&o Menu de barra" 3rquio 3 ju d a *rimeiro 3nterior *rLximo Oltimo K+ *ara *esquisa ncluir
$trl2Dome $trl2Neft $trl2%ight $trl2!nd $trl2# $trl2J7 $trl2ns
$ontedo Cobre
$opiar 3lterar !liminar -esfazer $ancelar Calar mprimir Cair
$trl2$ $trl23 $trl2-el $trl2= $trl2JH $trl2C $trl2* $trl2P
CADASTO COMPLE@O
Cara3ter4sti3as Menu de barra" barr a" igual cadastro simples Jolders" campos n&o couberem em uma ie/er CADASTO SIMPLESCOMPLE@O ' AT8ALIBA
Cara3ter4sti3as menu de barra" apenas 3tualizar $:M*N!P:" tem folders PAI @ +ILOS AT8ALIBA +ILO
Cara3ter4sti3as Jolder" selecionar bro/sers de tabelas filho6 Manutenç&o apenas da tabela filho6 ncluirQModificar" chamam janelas semelhantes ao $adastro CQ$ sem a régua MA-8TE-.O DE +ILOS
Cara3ter4sti3as Cem painéis, folders ou n&o6 $hamado atraés de um pai x filho6 nclus&oQ3lteraç&o6 Junções dos botões PAI @ +ILOS AT8ALIBA AM%OS
Carater4sti3as gual 3tualiza Jilho, mas atualiza registro pai (botões da régua) ncluirQModificarQ$opiar" também chamam janelas semelhantes ao $adastro sem a régua MA-8TE-.O DE PAIS
Carater4sti3as gual manutenç&o filho, porem altera o pai #em funç&o copiar CO-S8LTA CADASTAL SIMPLES
Cara3ter4sti3as 3penas para consulta 3penas zoom e do 9K+ para9 n&o realizadas na tela base do programa Menu botões CO-S8LTA CADASTAL COMPLE@A
Cara3ter4sti3as Mesmas caracter1sticas $onsulta Cimples, mas tem um 9Jolder9 CO-S8LTA ELACIO-AME-TO
Cara3ter4sti3as %elacionamentos de uma tabela pai $ada p+gina um relacionamento (filho) Bro/er" bot&o detalhar consulta tabela filho (duplo2clique ou GspaceI no Bro/ser) 3cima do folderQretFngulo principais campos da tabela ELATFIOS6 CGLC8LOS E +ECAME-TOS
Cara3ter4sti3as Ranela tipo detalhe, sem barra emoldurada, simulando caixa de di+logo Bot&o !xecutar" executa parametrizaç&o realizada nos Jolders Celeç&o" tudo que é faixa6 $lassificaç&o" %adio2set com as opções6 *arFmetros" outras informações6 -igitaç&o" bro/se updatable 3 seguir, est&o demonstrados os folders de Celeç&o, $lassificaç&o, *arFmetros e -igitaç&o PAHMETOS -ICOS
Cara3ter4sti3as #ipo detalhe" sem menu de barra e moldura 2 caixa de di+logo Junç&o dos botões PAHMETOS MLTIPLOS Mesmas regras dos $adastros Cimples ou $omplexo !xemplo" *arFmetros por estabelecimento +OMA.O
Cara3ter4sti3as 'aegaç&o" programa independente Bot&o ncluir () adiciona ao bro/ser de formaç&o informaç&o de 8 tabelas6 Bot&o -eletar () remoe dados Bot&o Modifica" atualizaç&o dos atributos ($adastro sem a régua) +OMA.O SEM -A1EA.O
Cara3ter4sti3as '&o possui naegaç&o ? dependente $hamado por um programa que possua Bro/ser Jormaç&o IMPOTA.O
Cara3ter4sti3as Ranela tipo detalhe !xecutar" dispara a importaç&o parametrizada nos folders Naout" laout do arquio !ditar ? atraés de um editor de texto Celeç&o" faixa de registros *arFmetros" nome do arquio de entrada (registros a serem importados) Nog" nome do arquio de sa1da 3 seguir est&o demonstrados os folders de Naout, Celeç&o e *arFmetros" E@POTA.O
Cara3ter4sti3as Ranela tipo detalhe !xecutar " dispara a exportaç&o parametrizada nos folders Celeç&o" faixa dos registros que ser&o exportados6 *arFmetros" nome do arquio de sa1da Nog" determinaç&o de modo de execuç&o do mesmo 3 seguir s&o mostrados os folders de Naout, Celeç&o e *arFmetros" E::M -! #3B!N3C
Cara3ter4sti3as Ranela do tipo detalhe -efault2button" 9:;9 mplantar" chama o programa de cadastro da tabela (pode estar desabilitado) Botões espec1ficos" ao lado do Smplantar aplicaç&o do alor inicial e final definido pelo usu+rio Jolder" opç&o de classificaç&o La!el do 3a&7o: Talor inicialU Talor finalU '&o literais para denominar inicial e final O!ser"a#$o Kerificar se cada folder tem um bro/ser diferente ou n&o, se isto for necess+rio inerter a ordem dos campos, conforme a classificaç&o '&o tem os botões de I-;CIO e de +IM teclado" 5OME5 e 5E-D5 1G'PAA
Cara3ter4sti3as %eposicionamento r+pido do registro corrente $onhecimento da chae do registro $aixa de di+logo com botões de 9:V9 e 9$ancelar9 e 93juda9 default2button" :; O!ser"a#$o '&o salar uma -ialog com uma .indo/ aberta (*oss1el que o menu da .indo/ seja copiado para a -ialog eliminando2o) DIITA.O GPIDA
Cara3ter4sti3as #ipo -etalhe default2button 2 9:V9 *+ginas iniciais" informações genéricas Oltima p+gina" bro/ser PAI-KIS
*ainéis padr&o utilizados para naegaç&o
+8-./ES elatrios ela3ionados
Cara3ter4sti3as Bro/ser" lista relatLrios relacionados ao programa !xecutar 2 chama o relatLrio selecionado Consultas ela3ionadas
Cara3ter4sti3as Bro/ser que lista todas as consultas relacionadas !xecutar" chama a consulta selecionada
Constru#$o de Prora&as utili=ando os Estilos e suas T3ni3as O!ser"a#$o $ampos fill2inWs" trigger de AN!3K!AQAK3N=!2$D3'X!-A e sem lupa ou bt de zoom trigger de A!'#%YA %egistro para o .eb!nabler CADASTO SIMPLES 4) Celecionar o estilo" $adastro Cimples MastersQ/2cadsim/ $adastro Cimples ? 3lteraç&o MastersQ/2cadsi8/ $adastro Cimples ? nclus&o MastersQ/2cadsiZ/ 8) Kerificar se j+ existe smart0uer para a tabela 84 ? se n&o ? criar noa quer usando o $ustom0uer.izard 88 nstanciar a Cmart0uer na p+g 5 e aceitar smartNinV Z) Kerificar se existe +2para e programa de pesquisa Z4 ? Ce n&o existe, criar Z8 'o atributos de instFncia 0uer ? informar A*rograma *esquisaA e A*rograma K+[
H) $riar CmartNinV tipo C#3#! Cource" p2naega #arget" Cmart0uer6 7) $riar CmartNinV tipo C#3#! Cource" p2exihel #arget" Cmart0uer6 \) Kerificar se existe CmartKie/er \4 Ce n&o existir, criar (estilo $ustomKie/er com 3uto2Jield) \8 nstanciar a CmartKie/er na p+g5 e aceitar linV \Z %edimensionar .indo/ ? Kie/er centralizada @) Calar Cmart.indo/ LISTA DE LI-NS Te& trs 7ainis (na"ea6 3adsi& e exihel7) Sour3e
Lin Ty7e
taret
h]p2cadsim h]p2cadsim h]p2naega h]p2naega
C#3#! #3BN!: '3KX3#:' C#3#!
h]p2exihel h]ie/er h]quer h]quer
h]quer h]p2exihel
%!$:%C#3#!
h]ie/er h]quer
CADASTO COMPLE@O Passos Q a R ? igual cadastro simples -iferença" instanciar +rias ie/ers (page5 e folders) Kerificar o nome do estilo <) $riar CmartNinV tipo X%:=*23CCX' Cource" CmartKie/er principal #arget" CmartKie/er secund+rias >) %enomear label das p+ginas (propriedades do folder) 45) Calar LISTA DE LINKS
Sour3e
Lin Ty7e
h]folder
*3X!
Taret
#DC2 *%:$!-=%! h]p2cadsim C#3#! h]p2exihel h]p2cadsim #3BN!: h]ie/er2l h]p2naega '3KX3#:' h]quer h]quer %!$:%h]ie/er24 h]quer %!$:%h]ie/er28 h]quer %!$:%h]ie/er2Z h]quer %!$:%h]ie/er2H h]ie/er24 X%:=*23CCX' h]ie/er28 h]ie/er24 X%:=*23CCX' h]ie/er2Z h]ie/er24 X%:=*23CCX' h]ie/er2H h]p2exihel C#3#! h]quer h]p2naega C#3#! h]quer CADASTO PAI @ +ILO AT8ALIBA +ILO .indo/ $adastro *ai x Jilho ? Jilho mastersQ/2adf/ Passos Q a R ? igual cadastro simples
@) Kerificar se existe CmartBro/ser para a tabela filho @4 Ce n&o existir ? cria noo (estilo $ustomBro/ser ncluiQModifica)6 @8 $olocar o Bro/ser na p+g do folder, aceitando os linVs @Z nformar programa atualizaJilho (3tributos de instFncia do CmartBro/ser)
<) $riar CmartNinV tipo %ecord Cource" Cmart0uer #arget" CmartBro/ser >) Ce necess+rio, incluir botões de parFmetro e seleç&o para a tabela do CmartBro/ser 45) Calar a smart.indo/ LISTA DE LI-NS Sour3e
Lin Ty7e Taret
h]folder
*3X!
#DC2 *%:$!-=%! h]p2exihel C#3#! #DC2 *%:$!-=%! h]p2naega '3KX3# h]quer :' h]p2naega C#3#! h]quer h]quer %!$:%h]ie/er h]quer %!$:%h]bro/ser4 h]quer %!$:%h]bro/ser8 h]p2exihel C#3#! h]quer CADASTO I-CL8IMODI+ICA +ILO 4) Celecionar o estilo" .indo/ ncluiQModifica Jilho
MastersQ/2incmoZ/
8) Ce os campos couberem em uma ie/er eliminar o folder da Cmart.indo/6 Cen&o mais ie/ers (p+ginas do folder) Z) Kerificar se j+ existe smart0uer para a tabela Z4 ? se n&o ? criar noa quer usando o $ustom0uer.izard Z8 nstanciar a Cmart0uer na p+g 5 e aceitar smartNinV H) *ara cada ie/er Kerificar se existe CmartKie/er H4 Ce n&o existir, criar (estilo $ustomKie/er com 3uto2Jield) H8 nstanciar a CmartKie/er na p+g5 e aceitar linV HZ %edimensionar .indo/ ? Kie/er centralizada H) $riar CmartNinV tipo #3BN!: Cource" #DC2*%:$!-=%! #arget" CmartKie/er6 7) Ce o cadastro for do tipo complexo" 74 $riar CmartNinV tipo group2assign Cource" a ie/er principal #arget" demais ie/ers6 \) ncluir apLs o -ispatch padr&o na Nocal2nitialize" ^includeQi2inifldi_ @) 3tribuir p+g 4 como p+g inicial do programa @4 *rocedure *roperties na janela do =B *ropertie *ages Ctartup on *age" alor 4
<) Nocal2nitialize da /indo/" substituir AGie/er]principalIA pelo nome da ie/er >) Botões de 9:V9 e 9Calar9" substituir AGhandle da ie/er principalIA pelo handle da ie/er 45) *rocedure pi2reposiciona" substituir AGquer2nameIA pelo nome da quer 44) 'a CmartKie/er principal criar local2create2record 444 3pLs run dispatch" (como se fosse um sae*arentJields 4444 Jind na tabela pai com o ro/id (2ro/2parent) 4448 Ce aail tabela pai, sala chae pai na tabela filho 48) Ce desejar preencher os campos chae da tabela pai na ie/er para inclus&o" 484 'a CmartKie/er principal" criar local2displa2fields e local2add2record 488 3pLs o run dispatch" 4884 -efine buffer para a tabela pai 4884 Jind no buffer da tabela pai com o ro/id (2ro/2parent) 4888 Ce aail buffer, sala screen2alue da tabela filho com a chae do buffer Ce n&o `[ 4Z) Ce desejar preencher seqencialmente campo chae tabela filho" 4Z4 CmartKie/er *rincipal" criar local2add2record apLs dispatch" 4Z44 -efine buffer para a tabela filho 4Z48 *rocura buffer onde chae pai paichae pai 4Z4Z Ce dispon1el, atualiza com a chae do buffer 4 Ce n&o 4 LISTA DE LI-NS Uma Viewer
Cource NinV #pe #DC2*%:$!-=%! #3BN!: h]quer %!$:%-
#arget h]ie/er h]ie/er
Lista de Lins (Mais de u&a 1ie0er): Cource NinV #pe #arget h]quer %!$:%h]ie/er4 #DC2*%:$!-=%! #3BN!: h]ie/er4 h]ie/er4 X%:=*23CCX' h]ie/er8 h]ie/er4 X%:=*23CCX' h]ie/erZ h]quer %!$:%h]ie/er8 h]quer %!$:%h]bro/serZ CADASTO PAI @ +ILO AT8ALIBA AM%OS
4) Celecionar o estilo" .indo/ $adastro *ai x Jilho 2 3mbos
MastersQ/2paiamb/
8) Kerificar se j+ existe smart0uer para a tabela pai 84 ? se n&o ? criar noa quer usando o $ustom0uer.izard 88 nstanciar a Cmart0uer na p+g 5 e aceitar smartNinV Z) Kerificar se existe programa de $adastro ncluiQModifica *ai para *ai Z4 Ce n&o exister, criar (template $adastro ncluiQModifica *ai) H) Kerificar se existe +2para e programa de pesquisa H4 ? Ce n&o existe, criar H8 'o atributos de instFncia 0uer ? informar A*rograma *esquisaA e A*rograma K+[ e o nome do programa de ncluiQModificaQ$opia da tabela pai 7) $riar CmartNinV tipo C#3#! Cource" p2naega #arget" Cmart0uer6 \) $riar CmartNinV tipo C#3#! Cource" p2cadpai #arget" Cmart0uer6 @) $riar CmartNinV tipo C#3#! Cource" p2exihel #arget" Cmart0uer6 <) Kerificar se existe CmartKie/er para a tabela pai6 <4 Ce n&o existir, criar (estilo $ustomKie/er com 3uto2Jield) <8 nstanciar a CmartKie/er na p+g5 e aceitar linV >) *ara todos CmartBro/sers" >4 Ce n&o existirem $riar 2 $ustomBro/ser ncluiQModifica6 >8 nstanciar o CmartBro/ser, aceitando os linVs6 >Z 3cessar atributos e informar" programa de atualizaç&o abela filha (Ce n&o existir, dee criar) 45) Ce necess+rio, incluir botões de Celeç&o eQou *arFmetros para a tabela do CmartBro/ser LISTA DE LI-NS Cource
NinV #pe
#arget
h]folder p2cadpai p2cadpai h]p]exihel h]p2naega h]p2naega h]quer h]quer h]quer
*3X! #3BN!: C#3#! C#3#! '3KX3#:' C#3#! %!$:%%!$:%%!$:%-
#DC2*%:$!-=%! h]ie/er h]quer h]quer h]quer h]quer h]ie/er h]bro/se4 h]bro/se8
CADASTO I-CL8IMODI+ICA PAI 4) Celecionar o estilo" .indo/ ncluiModifica *ai *assos 8 a 45
MasterQ/2incmdp/
gual programa ncluiQModifica Jilho
LISTA DE LI-NS 8&a 1ie0er Cource NinV #pe #DC2*%:$!-=%! #3BN!: h]quer %!$:%Mais de uma Viewer
#arget h]ie/er h]ie/er
Cource h]quer #DC2*%:$!-=%! h]ie/er4 h]ie/er4 h]quer h]quer
NinV #pe %!$:%#3BN!: X%:=*23CCX' X%:=*23CCX' %!$:%%!$:%-
#arget h]ie/er4 h]ie/er4 h]ie/er8 h]ie/erZ h]ie/er8 h]ie/erZ
I-CL8IMODI+ICA 4) Celecionar o estilo" .indo/ ncluiModifica *ai
MasterQ/2incmdp/
Ceguir os passos do .izard :bs" 8) ndicar tabela externa" tabela pai Z) 0uer dee conter a tabela filha H) Andexed2%epositionA marcado 7) `:ptionsA coluna A%eturnedA AJields =sedA6 toggle2box ACort2B*hraseA marcado Custo&%ro0ser BOOM IBAD 4) Celecionar o estilo" $ustom Bro/ser Eoom .izard MastersQ/br/zoo/ Ceguir os passos do .izard" 8) !xibir apenas registros entre os limites p+gina /here" G#abelaIG$amposI I fi2ini2GcampoI and G#abelaIG$amposI G fi2fin2GcampoI Z) 3lterar fill2ins faixa" nome (mesmo usado na quer), tipo, formato, tamanho e alor inicial Z4 -atabase fields indicar o campo dialog -ictionar -efaults desmarcar os toogle2boxes Nabel e -atabase Kariable6 H) Ce forem adicionados
copiar mage24 e mage28
7) #rigger bt2confirma" trocar c2inicial e c2final para nome dos campos \) *ode ser necess+rio traduzir utilizando ut2liter CO-S8LTA SIMPLES 4) Celecionar o estilo" .indo/ $onsulta Cimples MastersQ/2consim/ *assos 8 a @
gual cadastro simples
LISTA DE LINKS
Cource h]p2naega h]p2naega h]quer h]p2exihel
NinV #pe '3KX3#:' C#3#! %!$:%C#3#!
Cource h]folder h]p2naega h]quer h]quer h]quer h]quer h]ie/er24 h]ie/er24 h]ie/er24 h]p2exihel h
NinV #pe *3X! '3KX3#:' %!$:%%!$:%%!$:%%!$:%X%:=*23CCX' X%:=*23CCX' X%:=*23CCX' C#3#! C#3#!
#arget h]quer h]quer h]ie/er h]quer #arget #DC2*%:$!-=%! h]quer h]ie/er4 h]ie/er8 h]ie/erZ h]ie/erH h]ie/er28 h]ie/er2Z h]ie/er2H h]quer h
CO-S8LTA COMPLE@A 4) Celecionar o estilo" .indo/ $onsulta $omplexa MastersQ/2concom/ gual cadastro complexo LISTA DE LI-NS
CO-S8LTA ELACIO-AME-TOS 4) Celecionar o estilo" .indo/ $onsulta %elacionamento *assos 8 a \
MastersQ/2conrel/
gual cadastro simples
@) %epetir os seguintes passos para os CmartBro/sers" @4 ? Ce n&o existir, criar ($ustomBro/ser $onsulta) @8 2 Bot&o A-etalharA" chamar programa de consulta 2 detalhar" 4 $onsulta cadastral do filho 8 $onsulta relacionamento do filho Z $onsulta cadastral de uma tabela associatia ao filho6 @Z mplantar técnica de reposicionamento autom+tico com base nas ari+eis globais @H 3tributos de instancia do Bro/ser informar nome do programa <) $riar CmartNinV tipo %ecord Cource" Cmart0uer #arget" CmartBro/ser6 LISTA DE LI-NS Cource h]folder h]p2exihel h]p2naega h]p2naega h]quer h]quer h]quer h]p2exihel
NinV #pe *3X! C#3#! '3KX3#:' C#3#! %!$:%%!$:%%!$:%C#3#!
#arget #DC2*%:$!-=%! #DC2*%:$!-=%! h]quer h]quer h]ie/er h]bro/se4 h]bro/se8 h]quer
ELATFIOS 4) '&o gerados pelo -ataKie/er 2 estilo .indo/ %elatLriosQ$+lculosQJechamentos (/2relat/) 8) '&o utiliza Cmart:bjects Z) $onstitu1do por dois programas " / e rpp H) *+ginas do relatLrio (obs" igual #hin, porém sem Naout e Nog sL as de rel) 7) #raduções autom+ticas ? exceto list2items do combo2box Interfa3e 4) Kerificar quais p+ginas s&o desnecess+rias, eliminar as freames, eliminar n (n p+g -esnecess+rias) imagens com as AorelhasA mais a direita, renomeando as remanescentes e limpar contedo preprocessadores Páina de Sele#$o 4) $olocar fill2ins de inicial e final Cugest&o" criar como 9-atabase Jields9 e conerter para ari+eis 8) $orrigir 9initial alues9 Z) %etirar queries que o =B queira associar a frame Páina de Classifi3a#$o 4) %edefinir o 9list2items9 com as opções de classificaç&o do relatLrio Ce necess+rio, adicionar mais Paina de Par&etros 4) $olocar as ari+eis necess+rias na representaç&o desejada 8) Nabels de retFngulo deem ser fill2ins ie/2as text, e o seu alor dee ser informado no seu initial e priate2data 3s propriedades 9-ispla9 e 9!nable9 deem ser retiradas
Páina de Diita#$o 4) -efinitions corrigir a definiç&o da temp2table 8) Cection !ditor objeto bro/se br2digita, adaptar gatilhos para a noa definiç&o da tt2digita 84 Displa " campos apresentadosQhabilitados 88 Ro"-e#tr " alores iniciais na inclus&o de noas linhas 8Z Ro"-lea$e" sala as alterações feitas pelo usu+rio Z) bt2inserir e bt2alterar" aplica eento 9!ntr9 sobre o primeiro campo habilitado no bro/se6 H) Kalidações
procedure pi2executar no local indicado6
7) :pcionalmente, os gatilhos de 9leae9 e zoom Páina de I&7ress$o '&o é necess+rio qualquer funç&o adicional ra"a#$o e "alida#$o dos 7ar&etros 4) -efinitions campos de parFmetros e seleç&o na definiç&o da tt2param 8) Kalidações na pi2executar" apresentar a mensagem e foco no campo Z) *i2executar" graar campos da parFmetro e seleç&o H) 3lterar o nome do programa chamado pelo relatLrio +or&ato T+ '&o é necess+rio alteraç&o na interface Ce n&o desejar que o relatLrio possua essa funcionalidade" 4) XN:B3N2-!J'! %#J ': 8) *+g mpress&o" remoer os componentes e reposicionar campos Prora&a P9P de elatrio *rocedural sem qualquer tipo de interface (exceto isualizaç&o do relatLrio e caixa de acompanhamento de execuç&o) !xplica toda a execuç&o de um relatLrio Peruntar 7ara a 2ueli Mdulo JO% E@EC8TIO- Perutar 7ara a 2ueli6 há di"ersas infor&a#*es Menu de #ecnologia" agilizar execuç&o periLdica de listas de programas $adastro de *arFmetros e -igitações (R!5454)" programas utilizados em uma lista de disparo +OMA.O 4) Celecionar o estilo" .indo/ Jormaç&o
MastersQ /2forma/
*assos 8 a \ do cadastro simples
Z) Ce n&o existir CmartBro/ser " criar ($ustomBro/ser .izard) Z4 $aiba no lado esquerdo da /indo/ formaç&o6 Z8 #rigger de M:=C!2C!N!$#2-:=BN!2$N$;" %=' '!.2C#3#!('*=# 9incluir2bro/se9"=) ZZ nstanciar o Bro/ser do lado esquerdo H) $riar CmartNinV do tipo C#3#! Cource" CmartBro/ser #arget" #DC2*%:$!-=%! 7) Ce n&o existe CmartBro/ser com a tabela de formaç&o" criar ($ustomBro/ser Jormaç&o)6 74 #abela externa" tabela utilizada na Cmart0uer do programa de Jormaç&o6 78 %etirar coment+rios da *23--2B%:.C! e substituir os dados" tabela-%" tabela de naegaç&o tabela-&" tabela do Bro/ser Jonte tabela-'or(a)*o" tabela do CmartBro/ser formaç&o 7Z nstanciar do lado direito 7H 3tributos de instancia *rograma 3tributo" modificaç&o do registro de formaç&o
\) $riar CmartNinV tipo C#3#! Cource" CmartBro/ser formaç&o #arget" #DC2*%:$!-=%! @) procedure C#3#!2$D3'X!-, trigger bot&o A(I)A e trigger bot&o A(G)A" substituir os comantarios LISTA DE LI-NS Cource h]bro/se2formaç&o h]p2exihel h]p2naega h]p2naega h]quer h]quer #DC *%:$!-=%!
NinV #pe C#3#! C#3#! '3KX3#:' C#3#! %!$:%%!$:%C#3#!
#arget #DC2*%:$!-=%! h]quer h]quer h]quer h]ie/er h]bro/se2formaç&o h]bro/se2fonte
+OMA.O SEM -A1EA.O 4) Celecionar o estilo .indo/ Jormaç&o sem 'aegaç&o 8) -ependente $ustomBro/ser Jormaç&o Jilho Z) '&o utiliza Cmart:bjects H) Ceguir a ordem das tarefas 7) Ramais eliminar include padr&o SeUn3ia 4 $riar bro"se origem" 8 -efinir +,er 6 Z -efinir campos para ispla H $olocar campos da tabela pai 7 $riar bro"se destino" \ criar uma te(p-table (e'i#itio#s) com os atributos da tabela destino @ definir +,er (relacionando esta com a tabela pai) para a te(p-table 'ree'or(6 < definir campos para ispla > *ré2processor nome da tabela pai6 45 local2initialize" lLgica para carregar a temp2table com os registros da tabela de destino 44 $riar funções e procedures internas" 48 criar funç&o para mostrar o registro da tabela pai (pi2sho/2master2record)6 4Z criar inclus&o no bro/se destino" 4H *rocedure pi2ins 2 l os registros selecionados erifica se o registro pode ser inclu1do, atraés da funç&o is2create2allo/ed, e caso a inclus&o seja permitida executa a procedure pi2add2to2 target6 47 Junç&o is2create2allo/ed 2 alida se o registro n&o existe ainda no bro/se destino, ou realiza outras regras de negLcio que erificam se a inclus&o é alida retorna um status que indica o resultado dos testes6 4\ *rocedure pi2add2to2target 2 realiza o create e o assign no bro/se destino (temp2table)6 4@ criar eliminaç&o do bro/se destino" 4< *rocedure pi2del 2 l os registros selecionados e para cada um deles executa regras de negLcio que erificam se a eliminaç&o é permitida (atraés da funç&o is2delete2allo/ed) e realiza a eliminaç&o quando permitida pela funç&o atraés da procedure pi2delete2from2 target (elimina da temp2table) 4> criar uma procedure interna (pi2commit) que transfira os registros da temp2table para a tabela de destino, esta procedure é chamada pelo eento choose do bot&o 9:V9" Co&o 3onstruir u& %ro0se +or&a#$o +ilho 4) !stilo" $ustomBro/ser Jormaç&o Jilho =tilizar o /izard, atentando para o seguinte" 8) dee ser informada a tabela externa6 Z) $l+usula :ptions" $oluna %eturned" Jields =sed6 -esmarcar as opções ;e2*hrase e CortB2*hrase ndex2reposition setado POAMA DE IMPOTA.O 4) !stilo mportaç&oQ!xportaç&o (ariaç&o de relatLrio) 8) *+ginas" Naout, Celeç&o, *arFmetro e Nog
Z) Celeç&o e Nog igual relatLrio padr&o H) *ode impirmir #odos ou somente registros rejeitados (com erro) Páina de Layout 4)9Main BlocV9" include ^includeQi2imrfi_ 8) $riar arquio de laout
informar nome do programa e ers&o do laout
Paina de Par&etros -iferenças" 4) bt2arquio2entrada" pode adicionar terceiro parFmetro na include i2imarqi " filtros Ce n&o informar padr&o lst e todos os tipos de arquios !'- Páina de Lo '&o existem tarefas ra"a#$o e "alida#$o dos 7ar&etros gual relatLrio Di3as 7ara 3ria#$o do Prora&a P9P de I&7orta#$o (1erifi3ar 3o& a 2ueli a3ho ue n$o 3ai)9 POAMA DE E@POTA.O -iferenças entre mportaç&o Páina de Par&etros Mudar priate2data e o initial do label A3rquio de !ntradaA do retFngulo para A3rquio de Ca1daA Páina de Lo %emoer o retFngulo, o label e o radio2set com as opções A#odosA e A%ejeitadosA %eposicionar ra"a#$o e "alida#$o dos 7ar&etros *rocedure 9pi2executar9" substituir cLdigo de alidaç&o do arquio de entrada" Di3as 7ara 3ria#$o do Prora&a P9P de Ex7orta#$o (1erifi3ar 3o& a 2ueli a3ho ue n$o 3ai)9 POAMA DE PES28ISA .indo/ *esquisa =m CmarBro/ser para cada classificaç&o :rdem das colunas ordem de classificaç&o *ara todos os CmartBro/sers, seguir os seguintes passos" 4) Ce n&o existir Bro/ser com a ordem e dados desejados, criar ($ustomBro/serEoom .izard) 8) #nstanciar o CmartBro/ser no CmartJolder Z) $riar CmartNinV do tipo C#3#! Cource" CmartBro/ser #arget" #DC2*%:$!-=%! LISTA DE LI-NS Cource NinV #pe h]bro/se C#3#! h]folder *3#!
#arget #DC2*%:$!-=%! #DC2*%:$!-=%!
POAMA 1G'PAA 4) !stilo -ialog Ka*ara 8) Celecionar a tabela e os campos Z) 3justar os campos na tela6 Xera autom+ticamente a #%XX!% X: Cugest&o" campos exibidos na altura adequada" 4 'o 3ppBuilder 3cessar :ptions 2 *references 8 Celecionar o folder Xrid =nits Z 3lterar a opç&o Naout =nits para *ixel
H *reencher os campos com alor 4 :u alterar o tamanho dos campos manualmente POAMA DE DIITA.O GPIDA 4) !stilo .indo/ -igitaç&o %+pida 8) $riar e instanciar uma $ustomKie/er-igita (utilizaç&o de ari+eis e n&o -BJields) Z) $riar e instanciar um $ustomBro/ser-igita (dee utilizar temp2table %OSE DE DIITA.O 4) !stilo $ustomBro/ser-igita 8) 3lterar definiç&o da temp2table '&o eliminar o campo Aline[ Z) 3lterar trigger de open]quer, substituindo a cl+usula Gtemp2tableI Z) 3lterar trigger de displa, substituindo as cl+usulas G.a(po%I G.a(po&I H) 3lterar pi2sala2rel para graar todos os alores do bro/se 7) *i2busca2alor" nome das ari+eis da ie/er que deseja retornar o alor destas para o bro/se \) Kalidações na pi2sala2rel @) *i2cria2registro" a leitura dos registros da temp2table e criados os registros na tabela f1sica 28EV 4) !stilo $ustom 0uer .izard 8 ) Ceguir os passos do /izard" se ie/er n&o contier cl+usula /here -esabilitar CortB2*hrase, ;e2*hrase
assinalar ndex %eposition6
1IEES 4) !stilo $ustom Kie/er com 3utoJield *adr&o" ao menos um campo n&o chae Cem campos de tabela" CL com campos chae" Padr$o 4) Celecionar tabelas e campos 8) 0uest&o" dee suportar chaes estrangeiras" `cancel[ Z) Ce for cadastro simples" local2assign2records, substituir" ^includeQi2alidi_ por" if not frame ^frame2name_"alidate() then return 93-M2!%%:%9"= H) 3lterar a altura 7) -esmarcar `enable[ para atributos chaes e em 3danced, marcar 9^3-M2$%!3#!2J!N-C_96 \) *rimeiro atributo na linha 44@
espaçamento 4 3lterar altura do retFngulo rt2Ve
@) 3lterar linha inicial do retFngulo rt2mold para a altura do rt2Ve 4876 <) Ce n&o forem colocados atributos chae" eliminar o retFngulo rt2Ve6 moer demais campos >) $olocar demais objetos #ornar desabilitados e, em 3danced, marcar 9^3-M2M:-JY2J!N-C_9 45) $ustomizar N:$3N2'#3NE! para inicializar objetos (Nabels, itens para combo2boxes e radio2 sets, etc) 3ntes do dispatch padr&o 44) N:$3N2!'3BN!2J!N-C" comentar `if2adm2ne/2recordes thenA6 48) N:$3N2-C*N3Y2J!N-C" customizada alor da ari+el seja exibido 4Z) -efinir a altura (demais para a minha cabeça decorar os alores) 4H) *ropriedades da frame 9#ab :rder9 9Neft2to2%ight B $olumns96 Se& 3a&7os de ta!ela '&o inculado a uma base de dados alores alterados em tempo de execuç&o
4) $ancelar a tela de seleç&o de tabelas 8) Jazer a alteraç&o no assign2records para cadastro simples Z) Method2Nibrar" include i2auxtabi
H) -efinir uma tabela externa6 7) nserir os objetos -esabilitar \) $olocar os campos nos preprocessadores" #ipo de :bjetos *reprocessador Jinalidade $haes 3dm2create2fields Dabilitados somente na criaç&o :utras ari+eis 3dm2modif2fields Dabilitados no 3--, 3dm2assign2fields $:*Y e M:-JY @) $ustomizar N:$3N2'#3NE! para inicializar objetos (Nabels, itens para combo2boxes e radio2 sets, etc) 3ntes do dispatch padr&o <) N:$3N2-C*N3Y2J!N-C" customizada
alor da ari+el seja exibido
>) N:$3N2!'3BN!2J!N-C" comentar `if2adm2ne/2recordes thenA e dispatch padr&o 6 >4 Kie/er principal, incluir" %=' notif (9enable2fields, X%:=*23CCX'2#3%X!#9"=) 45) N:$3N2-C3BN!2J!N-C" comentar o dispatch padr&o6 inserir as seguintes linhas" if defined(3-M2$%!3#!2J!N-C) then disable ^3-M2$%!3#!2J!N-C_ /ith frame ^frame2name_ endif 454 $aso seja uma ie/er principal colocar" %=' notif (9disable2fields, X%:=*23CCX'2#3%X!#9"=) 44) N:$3N23CCX'2C#3'#!M!'#" objetos ter&o seus alores salos" comentar o dispatch padr&o6 inserir a lLgica de graaç&o dos alores das ari+eis 48) 3lterar alturas e tamanhos, tabulaç&io 1ie0er s 3o& 3a&7os 3ha"e 4) Celecionar as tabela a serem utilizadas na ie/er 8) 0uest&o chaes estrangeiras cancel Z) Method2Nibrar" include i2auxtabi H) -esabilitar todos os campos da tela (pré2processadores conforme acima)" 7) N:$3N2'#3NE!" inicializações N:$3N2-C*N3Y2J!N-C" exibir alores N:$3N2!'3BN!2J!N-C" customizações N:$3N23CCX'2%!$:%-" salar campos
\) 3lterar alturas e tabulaç&o
1ALIDA./ES
$onferir entradas de dado fornecidas pelo usu+rio" eitar informações errneas
1alida#*es na -a"ea#$o de eistro Dabilitar ou desabilitar botões $uidado" cada ez que o usu+rio naegar
*erformance
1alida#*es Antes da Altera#$o *ermitir ou n&o alteraç&o do registro Melhora performance Nocal2!nable2Jields" condiç&o O!ser"a#$o: #écnica eitada" usu+rio tenta alterar e a mensagem ir+ interrompe2lo 1alida#*es e& Entrada de Dados Cempre no momento de sua confirmaç&o 3presentar uma mensagem (ut2msgsp) posicionar o foco 1alida#*es e& Cadastro Si&7les 3ntes do dispatch da procedure Nocal2assign2record da Kie/er 1alida#*es e& Cadastro Co&7lexo *rocedures pi2alidate das Kie/ers 1alida#*es 7ara indo0 elatrio 1alida#*es das 7áinas de Par&etros6 Sele#$o e Classifi3a#$o: pi2executar, apLs o coment+rio %ro0se de Diita#$o: eento %o/2Neae do bro/se 1alida#$o da Páina de I&7ress$o: #emplate se encarrega de confirmar os alores para essa p+gina
1alida#*es e& Triers de Di3ionário de Dados *ode acarretar mau funcionamento nos templates" replicadas nos programas APIWS %ecebe parFmetros para realizar alguma tarefa (atualizaç&o, retornar informações) Kisa facilitar a customizaç&o e a integraç&o dos mLdulos Cempre executada atraés de outro programa !itar duplicidade de cLdigo Mantendo atualizadas :utros mLdulos" independncia dos aplicatios $ustomizações $liente e outros mLdulos n&o precisam conhecer detalhes do mLdulo +un3iona&ento %eceber parFmetros e executar uma aç&os '&o dee ter tratamento com tela '*=#2:=#*=# *3%3M!#!% #!M*2#3BN!" nica forma de comunicaç&o de dados com a 3* *ode usar mais de uma tabelas tempor+ria ': utilizar ari+eis globais %etorno da 3* %!#=%'2K3N=!" :; ou ':;6 '*=#2:=#*=# *3%3M!#!% #!M*2#3BN!" pode retornar mensagem de erro ou temp2table de retorno 'omenclatura" PP3*>>>* -efiniç&o temp2tables" include nome igual ao p $ontrole pQ ers&o de integraç&o 3od'"ersao'intera3ao: fixa, programador controla 2 *rograma chamador passa ers&o como param entrada, 3* faz consistncia (diferente da ers&o do programa) %etorno de erros" 2 retornar na prLpria tt de entrada 2 tt de erros com cLd do erro e descriç&o 2 msg cadastrada no cad mensagens
-ocumentaç&o" 2 modulo respons+el" nome f1sico, ers&o, objetio, parFmetros de entrada e sa1da, include com definiç&o da tt, alidações e a ações 2 manual do modulo dee conter relaç&o de todas apis
TKC-ICAS Alterar o 3ara3ter de senha Jill2in do tipo blanV ou informaç&o n&o pode ser isualizada 4) nserir a include ^includeQi2/ini_ 8) %odar o procedimento CendMessage3 *arFmetros" atributo h.nd do fill2in, alor ^!M]Cet*ass/ord$har_, caracter (), 5 (zero) XXXXXX PAA TODAS AS TEC-ICAS A%AI@O XXXXXX 4) nserir a include ^includeQi2/ini_ 8) -efinir h2prog as handle e rodar o programa ut2utilsp persistente H) !liminar o programa ut2utilsp (delete procedure) O!s: Executar o ltimo procedimento sistema pode ficar sem recursos e traar Alterar o diretrio 3orrente Mudar o diretLrio em tempo de execuç&o Z) %odar o procedimento Cet$urrent-ir passando onoo caminho do diretLrio corrente Alterar ou 3riar u&a "ariá"el de a&!iente Ceta uma ari+el de ambiente do .'-:.C e n&o -:C Z) %odar procedimento Cet!n *arFmetros" ari+el que ser+ criada, alor da ari+el Dar fo3o a ualuer o!Yeto Z) %odar procedimento 3pplJocus *arFmetro" h.nd do objeto Deixar u&a Yanela se&7re "is4"el Z) %odar procedimento Cet#opMost *arFmetros" atributo h.nd da /indo/, alor es se dee ficar sempre is1el Exe3utar u& a7li3ati"o do indo0s Z) %odar o procedimento !xecute *arFmetros" caminho do programa, parFmetros pQ o programa Z4 %etorno A:VA operaç&o feita com sucesso then message A3 operaç&o foi feita com sucessoA O!ter as 3oordenadas do &ouse Kerificar se o mouse est+ dentro de determinada regi&o da janela no momento do clique #rigger de Celect2Mouse2$licV Z) %odar o procedimento XetMouse*os *arFmetros" handle da /indo/, ari+el integer (retorna coordenada P), ari+el integer (retorna coordenada Y) O!ter o diretrio 3orrente Z)%odar o procedimento Xet$urrent-ir *arFmetro" ari+el char (retorna diretLrio) O!ter o diretrio de siste&a do indo0s Z)%odar o procedimento XetCs-ir *arFmetro" ari+el char (retorna diretLrio do sistema) Oter o diretrio do indo0s Z) %odar o procedimento Xet.in-ir *arFmetro" ari+el char (retorna diretLrio) O!ter o no&e do 3o&7utador Z) %odar o procedimento Xet$omputer'ame *arFmetro" ari+el char (retorna nome) O!ter o "alor de u&a "ariá"el de a&!iente Z) %odar o procedimento Xet!n *arFmetros" ari+el de ambiente que deseja2se saber o alor, " ari+el char (retorna alor ari+el) Transfor&ar u&a Yanela e& !arra de ferra&entas
mplementar uma janela que esteja sempre is1el e que contenha funções de ferramentas (funções que n&o estejam ligadas a nenhum objeto ou programa) Kerificar se é poss1el deixar a barra de ferramentas sempre is1el Z) %odar o procedimento 3dd*aletteCtle *arFmetros" atributo h.nd da janela
JM Desa!ilitar adio'%uttons Cintaxe normal" -C3BN!(label2do2%B) *orem o label muda para cada idioma, ent&o" J nome2rs"-C3BN!(!'#%Y(P,(nome2rs"%3-:2B=##:'C ' J%3M! ^J%3M!2'3M!_))) #D!' :nde" P 8 (entrada desejada)24 (AstringA, 4, AstringA, 8) Corre#$o Ortoráfi3a e& Editores Bot&o ao lado direito superior (sem label6 H,55 x 4,876 Delp"A$orretor ortogr+ficoA) def ar log" l2control2spell Nocal2displa2fields (CmartKie/er) ou local2initialize da (Cmart.indo/)" apLs -ispatch" 2 i2inispli parFmetro" nome do bot&o MAIN-BL/C01 i2spelli *arFmetro" nome !ditor, nome do bot&o Exe3utar 7rora&as ue s$o Yanelas !xecutar um programa (/) a partir de um outro programa que j+ é uma janela def ar h2programa as handle no2undo *rograma executado de forma persistente f alid2handle(h2programa) then run dispatch in h2programa (9initialize9) *odem2se executar outros procedimentos (antes ou depois de sua inicializaç&o) a!ilitar ou desa!ilitar !ot*es e& 7ainis $riadas procedures para habilitarQdesabilitar 'ecess+rio linV C#3#! entre painel e .indo/ Nocal2initialize" depois do run2dispatch" %=' enable2Gfunç&oI in Ghandle do painelI (nput GlogicalI) Gfunç&oI" inclui, elimina, modifica, cLpia, zoom, etc Glo2i.al I" AesA habilita e AnoA desabilita Ca&7os indi3adores 3o& "ie0'as 3o&!o'!ox nas telas *ropriedades aançadas do combo2box marcar os 9$ustom lists9, %etirar a propriedade !nable Nocal2initialize" antes dispatch" assign Gcombo2boxI"list2items in frame ^frame2name_ ^PP'$Q>>PP>>> 5Z_ depois dispatch" assign Gariael2combo2boxI"screen2alue in frame ^frame2name_ ^PP'$Q>>PP>>> 5H GtabelaIGcampoI_ ra"a#$o do 3onteZdo do 3o&!o'!ox $adastro simples 2 apLs dispatch da local2assign2record 2 assign GtabelaIGcampoI ^PP'$Q>>PP>>> 5\ Gari+el2combo2boxI_ $adastro $omplexo 2 apLs o dispatch da local2assign2statement 2 assign input frame ^frame2name_ Gari+el2combo2boxI GtabelaIGcampoI ^PP'$Q>>PP>>> 5\ Gari+el2combo2boxI_ O!s: se n&o fizer parte da chae prim+ria" local2assign2record $hae" local2create2record Ca&7os indi3adores 3o& "ie0'as radio'set nas telas -efinir as ari+eis c2lista e i2cont Nocal2initialize 2 antes dispatch" lLgica que prepara o Alist2itemsA do i2cont 4 to num2entries(^PP'$Q>>PP>>> 5Z_)" assign c2lista c2lista entr(i,^PP'$Q>>PP>>> 5Z_) A,A string(i2cont) A,A end assign c2lista substring(c2lista,4,lenght(c2lista) 2 4) assign Gariael2radio2setI"radio2buttons in frame ^frame2name_ c2lista
$onsulta" mostrar apenas a descriç&o ar"screen2alue in frame ^PP'$Q>>PP>>> 5H Gtabela2campoI_
Ca&7os indi3adores nu& S&art%ro0ser $ampo calculado entr(alor,AlistaA) c2tipo assign c2lista2tipo ^adindQi58ad5H>i 5Z_ :nde" ^Z_ lista itens separados por tipo !ntr(contatipo, c2lista2tipo) c2tipo Mensaens 7ara o usuário $hamar o programa utpQut2cdmsgp e criar a mensagem (para espec1ficos) Mostrar a mensagem" run utpQut2msgsp (input Asho/A) := utpQut2msgsp (input AmsgA, ou help) e dar o displa input 48ZH, input AA)
Toolti7 e& u& deter&inado !ot$o Bot&o dee possuir help" include padr&o alterada para copiar o help A3o&7anha&ento (8T'ACOMP) run utpQut2acompp persistent set h2prog run pi2inicializar in h2prog(input Amportando arquiosA) run pi2acompanhar in h2prog(input string(itemit2codigo)) run pi2finalizar in h2prog Ca&7os de refern3ia 7ara 3a&7os 3ha"e estraneira :bs" campo de referencia é a descriç&o !x" nome do emitente no cadastro de nota fiscal $riar fill2in ao lado do campo com zoom local2displa2fields, antes do dispatch" alor inicial para o campo (find na tabela) Xatilho de leae do campo com zoom" ^includeQleaei tabelastate atributo2refstate2name ariael2refc2state2name /hereAstatestate input frame ^frame2name_ customerstateA_ GtabelaI" tabela que possui a chae estrangeira6 Gatrib,to-re' I" campo de referncia da tabela da chae estrangeira6 G$aria$el-re' I" ari+el criada para receber o campo de referncia6 G"!ereI" cl+usula /here para localizar o registro na tabela de referncia6 Boo& 3 partir de" $ampo chae estrangeira6 Kari+el6 $ampo chae estrangeira cujo nome n&o coincide com o nome do campo no bro/se de pesquisa Cintaxe" ^includeQzoomari prog2zoomdiretLrioQprograma campoariaelQtabelaatributo campozoomnome2atributo Tframenome2frameU Tbro/senome2bro/seU TparametrosArun pi2procedure in /h2pesquisaAU_ :nde" G pro2-zoo(I" programa de zoom G.a(poI" campoQari+el na ie/er Jormato tabelacampo G.a(pozoo(I"campo do zoom de onde o alor é buscado Cem informar tabela G'ra(eI" quando o frame é diferente de ^frame2name_ Gbro"seI" zoom é acionado a partir de uma coluna de um bro/se G par3(etrosI" procedure do zoom, que recebe os parFmetros Cha&ada de =oo& 3o& 7assae& de 7ar&etros"
'o programa de zoom" procedure que recebe e trata (parFmetro input) $hama pi2seta2inicial nos bro/ser, repassando o param 'os bro/sers, cria a pi2seta2inicial e usa a ariael para abertura da quer
Eoom chamado !xecuta o contedo parFmetros chama pi2seta2inicial (passando um alor de sistema *rocedure !nia para o bro/se recebe o alor e atribui k ari+el de filtro utilizada para abrir a quer 3lterar o ponteiro do mouse para todos os campos
thinBoo& ^methodQEoomJieldsi *rogramEoomAnome do programaA JieldEoom'Anome do campo que retornaA JieldCcreen'Anome do campo ou ari+elA Jrame'AframeA %unMethodArun procedure in h*rogramEoomA !nablemplantAesQnoA_ :nde" G4ielZoo(N I" nome do campo que dee ser G4ielS.ree#N I" nome do campo (ari+el) que dee receber o alor GE#ableI(pla#t I" bot&o mplantar ser+ habilitado ou n&o6 I&7le&entar %ot$o de +iltro e& Boo& Ce precisar reabrir as quers do bro/se choose do bot&o" %=' notif ' this2procedure e7osi3iona&ento Auto&áti3o do %ro0ser de Boo& Comente nas ari+eis inicial com tipo de dado caracter ou inteiro $riar gatilho de eento 3'Y2;!Y na ari+el inicial, com a include i'anyey9 Preprocessador ["ariá"el nome da ari+el inicial de faixa" Xatilho p ara o eento #3B" i'ta!9i9 Preprocessador ["aria"el Xatilho para o eento B3$;2#3B" i'ta!9i ["aria"el
$omo utilizar AfunctionsA no =B -esde o in1cio da utilizaç&o da ers&o <8 do *rogress, foi poss1el notar uma noa section no =B 3 section functions eio para facilitar a implementaç&o de rotinas de c+lculo que antes eram confusas de serem utilizadas e esta técnica dee demonstrar este recurso mplementaç&o ao entrar em section functions do =B, é questionado o nome da noa funç&o e o tipo de dado que é retornado por ela *ara nome da funç&o foi determinado que é utilizado o seguinte padr&o" '#-5#o(e +,e +,ali'i.a a ',#)*o5 0uanto ao retorno da funç&o, dee ser colocado o tipo de dado que a funç&o retorna no final de sua execuç&o !xemplo"
-epois de ter criado a funç&o, dee ser declarado os alores a serem transferidos para ela, conforme exemplo abaixo *ara que a funç&o retorne o alor calculado por ela, deem ser retiradas as AA do comando RET6RN e acrescentado no seu lugar o nome da ari+el que possui o alor a ser retornado para quem chamou a funç&o !xemplo %!#=%'C -!$M3N (input de2alor as decimal)" "alor transferido Q222222222222222222222222222222222222222222222222222222222222 *urpose" 'otes" 2222222222222222222222222222222222222222222222222222222222222Q
assign de2alor (de alor 4555) li3a da fun#$o %eturn de2alor "alor retornado da fun#$o !'- J='$#:' !sta funç&o é muito til para os campos calculados de bro/sers 3ntes era necess+rio utilizar /N4IND TABELA no MAIN-BL/C0 do programa para calcular o alor de um campo que possu1a uma lLgica mais complexa (!xemplo" pesquisa em outras tabelas) 3gora basta seguir a seguinte sintaxe" fn2nome da funç&o ( $alor a ser tra#s'erio) na express&o de um calculated field para utilizar uma funç&o e atribuir o alor retornado a uma outra ari+el do bro/ser !xemplo" 'este exemplo, temos que a funç&o Afn2alorA est+ sendo acionada utilizando o alor do campo bancol2lim2aplic $onforme a express&o do calculated field, o alor retornado da funç&o é mostrado na ari+el de soma2aplic do bro/ser O!ser"a#$o %ecomenda2se que n&o sejam utilizadas temp2tables 'a ers&o <83 do *rogress, a utilizaç&o de tabelas tempor+rias dentro de funções est+ causando CYC#!M !%%:% (4Z5)
$omo construir um bro/se com ordenaç&o por coluna :bjetio !sta técnica dee ser usada sempre que for preciso construir um bro/se que ter+ ordenaç&o por coluna mplementaç&o criar um bro/se e definir todos os campos que ser&o utilizados para ordenaç&o com a propriedade enable marcada6 inicializar o atributo %!3-2:'NY de todos os campos que ser&o utilizados para ordenaç&o como Y!C" 3CCX' $ustomer'ame"%!3-2:'NY ' B%:.C! ^B%:.C!2'3M!_ #%=! $ustomer$it"%!3-2:'NY ' B%:.C! ^B%:.C!2'3M!_ #%=! marcar o atributo column2searching do bro/se6 na trigger C#3%#2C!3%$D do bro/se inserir o seguinte" -!J'! K3%3BN! columnDandle 3C D3'-N! ':2='-: 3CCX' columnDandle ^B%:.C!2'3M!_"$=%%!'#2$:N=M' 3**NY 9!'-2C!3%$D9 #: ^B%:.C!2'3M!_ $3C! columnDandle"'3M!" .D!' 9'ame9 #D!' :*!' 0=!%Y ^B%:.C!2'3M!_ J:% !3$D $ustomer ':2N:$; BY $ustomer'ame .D!' 9$it9 #D!' :*!' 0=!%Y ^B%:.C!2'3M!_ J:% !3$D $ustomer ':2N:$; BY $ustomer$it !'- $3C! $omo contar a quantidade de registros numa tabela :bjetio !sta técnica dee ser utilizada quando for necess+rio contar a quantidade de registros numa tabela, usando uma condiç&o (cl+usula .D!%!) ou n&o mplementaç&o *rimeiramente define2se a ari+el que receber+ a quantidades de registros -epois a técnica de mini2flexibilizaç&o para o tipo de banco de dados é usada para separar o cLdigo para banco *%:X%!CC do cLdigo para banco :%3$N! ou C0N Cerer, acessado atraés do -ataCerer *ara banco *%:X%!CC o comando é" C!N!$# $:='#() '#: 7$ar8 J%:M 7tabela8 .D!%! 7.o#i)*o8 !xemplo *ara os outros bancos use o include `i#.l,e9i-.o,#t:p[, descrito no item I-C/6NTDS:I do cap \ deste manual ^includeQi]dbtpei_ -!J'! K3%3BN! i$ount 3C '#!X!% ':2='-: J A^mgadm]dbtpe_A AprogressA #D!'