582
Programando com o Centura Team Developer 2000 Caro Leitor, este livro foi originalmente lançado em junho de 2000. Seu conteúdo refere-se ao então Centura Team Developer versão 2.0, chamado na época de Centura Team Developer 2000, daí vem a sigla CTD2000. Em diversos pontos do livro, onde for citado o endereço www.centuraexplorer.com , deve ser considerado http://appstartup.blogspot.com.br , nele, há uma área específica para tratar deste livro e dos arquivos que são citados nos exemplos. Este livro está sendo disponibilizado agora, em maio de 2013, em formato PDF para livre utilização por qualquer pessoa que tiver necessidade de estudar Centura Team Developer 2000. A base desta ferramenta de programação está neste livro, portanto pode ser utilizado como fonte de estudo mesmo para versões mais recentes do Team Developer. Contatos com o autor podem serfeitos através do e-mail [email protected] ou através do blog App StartUp no url  http://appstartup.blogspot.com.br  Bom estudo! Lairton Nogueira de Almeida Júnior

Programando Com o CTD2000

Embed Size (px)

Citation preview

Page 1: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 1/580

Programando com o Centura Team Developer 2000

Caro Leitor, este livro foi originalmente lançado em junho de 2000. Seu conteúdorefere-se ao então Centura Team Developer versão 2.0, chamado na época deCentura Team Developer 2000, daí vem a sigla CTD2000.

Em diversos pontos do livro, onde for citado o endereço www.centuraexplorer.com, deve ser considerado http://appstartup.blogspot.com.br , nele, há uma área específicapara tratar deste livro e dos arquivos que são citados nos exemplos.

Este livro está sendo disponibilizado agora, em maio de 2013, em formato PDF paralivre utilização por qualquer pessoa que tiver necessidade de estudar Centura TeamDeveloper 2000. A base desta ferramenta de programação está neste livro, portantopode ser utilizado como fonte de estudo mesmo para versões mais recentes do TeamDeveloper.

Contatos com o autor podem serfeitos através do e-mail [email protected] ou atravésdo blog App StartUp no url http://appstartup.blogspot.com.br  

Bom estudo!

Lairton Nogueira de Almeida Júnior

Page 2: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 2/580

Programando com o Centura Team Developer 2000

Página 2

Para

ChristianeNetinho e

Marcelinha

Page 3: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 3/580

Programando com o Centura Team Developer 2000

Página 3

Page 4: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 4/580

Programando com o Centura Team Developer 2000

Página 4

Agradecimentos

São tantas as pessoas que de forma direta ou indireta ajudaram na confecção deste livro, eu nãoconseguiria citar todos os nomes aqui, mas eu não posso deixar de agradecer a algumas

 pessoas ....

Ao sr. Agenor Correia, muito obrigado por ter me mostrado este caminho e pelo seuinvestimento em mim. Obrigado por ter acendido a chama.

Pelas oportunidades eu gostaria de agradecer ao Jorge Correia, Eduardo Aguiar, José Luna,Petrúcio Barros, ao Francinaldo e ao Ryan Bahard . Vocês poderão observar muito do nossodia-a-dia de trabalho neste projeto.

Ao pessoal da Centura. Muito obrigado ao Joubert Stape e a Ana Paula, a ajuda de vocês temsido muito importante enriquecendo em muito o conteúdo deste livro. Um abraço também ao

 pessoal da Centura Software Corporation, Jeremy Shaw, Raghavan Gurumurthy, Cezary

Hajlasz e a Charity Silkebakken pela colaboração.

Ao Krause Correia, meu grande amigo pessoal e profissional, muito obrigado pelas sugestões, pelo apoio junto ao conteúdo deste trabalho, principalmente no que diz respeito aos relatórios, pelas noites em que ficamos até muito tarde debatendo os assuntos do livro.

Eu gostaria de agradecer também aos clientes das ferramentas da Centura, pois me forçaram a buscar soluções para as suas necessidades, provendo conteúdo para este livro. E a todos osmeus alunos que são realmente a base deste livro. As experiências que tivemos nostreinamentos serviram de estrutura principal deste trabalho que agora poderá dar-lhes todas asinformações sobre o Centura, num único local.

Eu gostaria de agradecer especialmente a:

Meus pais e irmãos: Lairton, Célia, Fábio, Leandro, Érico, André e ao Danilo. MuitoObrigados.

Meus amigos: Jones Melo, Cristovão, Roberto Galvão, Urbano Chagas pela força que metransmitiram.

A todos os colegas de trabalho por ler os pedaços do livro, pelas sugestões e perguntas que me

fizeram cada vez mais ver o que o livro deveria ter, aos poucos o seu conteúdo foimodificando-se de acordo com as necessidades de vocês.

Sra. Ana Claudia, muito obrigado pelas suas sugestões, pela paciência em ler este livro todovárias vezes, pelo apoio e pelo incentivo a cada passo do caminho, desde o ínicio até suaconclusão.

E principalmente a Deus, por ter dado saúde, condições de aprendizado e essa vontade interiorde transmitir conhecimento às pessoas. Obrigado por me ajudar a conhecer as pessoas certasnas horas certas e por permitir que tudo isso esteja acontecendo desse jeito.

Me ajudaram muito a manter o espírito do livro as audições de "Dawn of a new Century" doSecret Garden, "Dance of the Angel" do Slava Gaigoayan, "Luzia" do Paco de Lucía, "The

Page 5: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 5/580

Programando com o Centura Team Developer 2000

Página 5

Music of The Grand Canyon" do Nicholas Gunn e do "Key in G" do Kenny G e na sua fasefinal de conclusão o "Na Pressão" do Lenine que retratam a trilha sonora deste livro.

Page 6: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 6/580

Programando com o Centura Team Developer 2000

Página 6

Uma olhada rápida ...

Programando com o Centura Team Developer 2000

ParteI

Elementos do SQLWindows/32

Capítulo 1 - Apresentação do Centura SQLWindows/32Capítulo 2 - A Linguagem SALCapítulo 3 - O acesso ao SQLCapítulo 4 - Programação Baseada em EventosCapítulo 5 - Programando com o SQLWindows/32

ParteI

I

Obtendo mais do SQLWindows/32 com a tecnologia QuickObjects

Capítulo 6 - Utilizando os QuickObjectsCapítulo 7 - Explorando os QuickObjectsCapítulo 8 - Programação Orientada a ObjetosCapítulo 9 - Ampliando o desenvolvimento com o CDKCapítulo 10 - Criando seus próprios QuickObjects

ParteIII

Concluindo o desenvolvimento de aplicações

Capítulo 11 - Relatórios com o Report BuilderCapítulo 12 - Distribuição do produto finalCapítulo 13 - Traduzindo aplicações com o Object Nationalizer

Capítulo 14 - Gerenciamento de equipes com o Team Object Manager

ParteIV

Sua aplicação Centura falando com o mundo

Capítulo 15 - Desenvolvimento de componentes COM no SQLWindowsCapítulo 16 - Desenvolvendo aplicações para Web

ParteV

Guia de Referência Completo

Apêndice A - Guia de referência das funções SALApêndice B - Guia de referência das funções SQLApêndice C - Guia de referência das mensagens SAMApêndice D - Guia de referência das funções do Report BuilderApêndice E - Classes e funções da Biblioteca VisualToolchestApêndice F - Guia de Instalação do Centura Team Developer 2000

Page 7: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 7/580

Programando com o Centura Team Developer 2000

Página 7

Apresentação

Para um melhor aproveitamento do conteúdo apresentado neste livro, recomendamos que oleitor siga a ordem em que os capítulos estão apresentados. Todos os aspectos do CenturaTeam Developer são abordados ao longo dos vinte e dois capítulos, portanto, ignorar a

seqüência pode fazer com que o leitor encontre alguma dificuldade na utilização de algunsconceitos que foram explicados em capítulos anteriores.

Programando com o Centura Team Developer 2000 está dividido em cinco partes:

Parte I - Elementos do SQLWindows/32

 Nos capítulos 1, 2 e 3, o SQLWindows/32 é detalhadamente explicado. É apresentado todo oambiente de programação, a parte teórica referente aos conceitos da linguagem e a explanaçãode todos os seus objetos, alguns conceitos sobre bancos de dados SQL e sua utilização junto aoSQLWindows/32.

Os conceitos de programação baseada a eventos são transmitidos ao leitor no capítulo 4. Nocapítulo 5 estão os exemplos de programação, exercitando os conceitos introduzidosinicialmente.

A primeira parte é de importância vital para a correta compreensão e utilização do restante dolivro.

Parte II - Obtendo mais do SQLWindows com a tecnologia QuickObjects

O SQLWindows/16 na sua versão 5 trouxe aos desenvolvedores a tecnologia dosQuickObjects, os capítulos 6 e 7 tratam, de forma minuciosa, todos os seus conceitos eutilização.

O capítulo 8 apresenta os conceitos da programação orientada a objetos, dirigida aoSQLWindows/32. A leitura deste capítulo é indicada, mesmo aos leitores que já possuemconhecimento das técnicas de programação orientada a objetos, uma vez que, nele sãorelacionadas as terminologias da OOP aos componentes do SQLWindows/32.

Uma grande ferramenta presente no Centura Team Developer que auxilia o desenvolvimentode aplicações em SQLWindows/32 é o CDK. O capítulo 9 explica o modo como o CDK

funciona e os benefícios que pode trazer aos desenvolvedores Centura.Os exemplos vistos no capítulo nove são estendidos no capítulo 10, onde o ciclo é fechado coma criação de QuickObjects personalizados pelo programador.

Esta é a parte onde alguns dos conceitos mais avançados do SQLWindows/32 são abordados,como os QuickObjects, a tecnologia de orientação a objetos e a geração de código.

Parte III - Concluindo o desenvolvimento de aplicações

O ciclo de desenvolvimento de aplicações é concluído nesta parte, em que são apresentados os

refinamentos da sua aplicação.

Page 8: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 8/580

Programando com o Centura Team Developer 2000

Página 8

 No capítulo 11 é visto a geração dos relatórios com o Report Builder e a sua interação com oSQLWindows/32. A interface do usuário do Report Builder e a interface com programasexternos é abordada de forma detalhada.

As diversas formas de distribuição do produto final incluindo a geração de executáveis,

dynalibs e dlls são abordadas no capítulo 12. Para a geração de dlls você precisa ter instalado oMicrosoft Visual C++ e o Object Compiler.

O capítulo 13 é dedicado ao Object Nationalizer, onde vemos o quanto é simples traduzir asaplicações feitas em SQLWindows para diversos idiomas.

Para encerrar a terceira parte,, o capítulo 14 apresenta o Team Object Manager, que facilita ogerenciamento de projetos e equipes de desenvolvimento.

Parte IV - Sua aplicação Centura falando com o mundo

Podemos seguramente afirmar que esta parte é a mais atraente de todo o livro, por envolver astecnologias mais faladas atualmente.

 No capítulo 15 a integração do SQLWindows/32 com a tecnologia de componentes COMrodando no MTS é detalhadamente explicada com instruções passo-a-passo para que vocêconstrua uma aplicação COM+ rapidamente.

Coloque sua aplicação desenvolvida em SQLWindows/32 na Internet através das extensões para a web da Centura (CWE). Você precisará já ter devidamente instalado, e configurado, umservidor de Web que esteja disponível para utilização juntos aos exemplos do capítulo 16.

Parte V - Guia de referência completo.

Esta deverá ser a parte mais utilizada pelo leitor, pois, aqui foram agrupados os capítulos queservirão de referência ao desenvolvedor, na sua utilização diária. Estão descritasdetalhadamente todas as funções e mensagens da linguagem do SQLWindows/32.

 Nos apêndices A e B estão todas as funções SAL e SQL. As mensagens SAM são explicadasno apêndice C, enquanto as funções disponíveis no Report Builder estão presentes no apêndiceD.

A descrição de todas as classes e funções que compõem a biblioteca Visual ToolChest, éencontrada no Apêndice E.

O apêndice F contém as explicações de como instalar o Centura Team Developer. Essasinstruções devem ser seguidas fielmente, pois, a escolha dos componentes a serem instalados édirigida aos exemplos demonstrados no livro.

Page 9: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 9/580

Programando com o Centura Team Developer 2000

Página 9

O propósito deste livro

Apresentar ao desenvolvedor o conjunto de ferramentas que compõe o Centura TeamDeveloper 2000, explicando os conceitos da linguagem SQLWindows, seus comandos, funçõese objetos. Explorar a tecnologia dos QuickObjects e a geração de código com o CDK. Mostrar

a geração de relatórios através do Report Builder. Demonstrar como é feito o gerenciamentode projetos e equipes de desenvolvedores com o Team Objetct Manager.

E por fim, pretendemos, deixar o desenvolvedor familiarizado com o ambiente, pronto paracomeçar a desenvolver projetos, utilizando a força total do pacote de ferramentas de que oCentura Team Developer 2000 é composto.

Aos programadores que já possuem alguma experiência com versões anteriores doSQLWindows, este livro faz a ponte entre o Gupta SQLWindows e o CenturaSQLWindows/32. Usuários do Team Windows, Edit Windows e Report Windows, poderãoconhecer suas novas versões, a evolução dos produtos. Os novos conceitos e novos recursos da

ferramenta, como por exemplo as extensões para web e o suporte aos componentes COMtambém devem ser de grande valia aos desenvolvedores já familiarizados com o Centura TeamDeveloper.

A quem se destina

Analistas de sistemas, programadores, estudantes e profissionais, mesmo de outras áreas, quedesejam desenvolver aplicações para os ambientes Windows95 ou para a Internet.

Pré-requisitos

Este livro assume que o leitor tenha conhecimentos em :

Utilização do Microsoft Windows95, Windows98 ou WindowsNT, sua interface e conceitos.A utilização do mouse.Alguma linguagem de programação como Basic, Clipper, Cobol ou C.Bancos de dados relacionaisLinguagem SQLE-mail, Internet e redes locais.

Page 10: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 10/580

Programando com o Centura Team Developer 2000

Página 10

A Organização

 No decorrer do livro algumas convenções tipográficas e notações são utilizadas, a saber:

Notação Explicaçãovocê O desenvolvedor ( programador ). Você que está lendo este livro econstruindo uma aplicação.

usuário A pessoa ( usuário final ) que utilizará o aplicativo que você ( odesenvolvedor ) está construindo.

aplicação A tela ou conjunto de telas que você está desenvolvendo. palavras emnegrito 

 Negrito será utilizado para destacar os termos próprios do CTD, como por exemplo:- nomes dos menus que você deve selecionar - File | New... - comandos e funções do SQLWindows, quando citados no decorrerde alguma explicação ou instrução - Call SalQuit( )- os tipos de objetos do SQLWindows - data field, form window.

 palavras em itálico  Os nomes das variáveis definidas pelo programador -  sNome,nCodigo, bOk  

 palavras escritasassim 

A representação do código fonte do programa, listagens ou trechos de programas, são sempre mostrados com a fonte alterada para Courier

New tamanho 8.On SAM_Create

Call SalCenterWindow ( hWndForm )

nomes de arquivosescritos em letrasMAIÚSCULAS

Os nomes dos arquivos citados em letras maiúsculas são arquivos quedevem ser considerados exatamente como está escrito. Por exemplo:SQL.INI

QCKDVC.APLAlt+4 Seqüência de teclas de atalho onde você deve manter pressionada a

tecla à esquerda do sinal +, para então pressionar a tecla indicada àdireita. Por exemplo:Alt+4  - pressione a tecla Alt, mantenha pressionada enquanto

 pressiona a tecla 4.TRUEFALSE

Constantes lógicas definidas internamente pelo próprioSQLWindows/32.A constante TRUE possui valor 1 e significa sucesso numa operação.A constante FALSE possui valor 0 e significa falha em determinadaoperação.

Obs: Alguma observação importante que você necessita saber.Atenção: Uma informação vital. Extremamente importante. Seu

desconhecimento pode causar um resultado indesejado.

Page 11: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 11/580

Programando com o Centura Team Developer 2000

Página 11

INDICE

Page 12: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 12/580

Programando com o Centura Team Developer 2000

Página 12

Page 13: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 13/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 1Apresentação do Centura SQLWindows/32

 Neste capítulo você é apresentado ao ambiente de desenvolvimento do Centura TeamDeveloper, o SQLWindows/32. Nele são mostrados os componentes do ambiente dedesenvolvimento, entre os quais o Outline, o Customizer, o Attribute Inspector, a paleta deControles, o ActiveX Explorer, as barras de ferramentas e todos os menus doSQLWindows/32.

É de fundamental importância que o programador esteja familiarizado com este ambiente,isso o ajudará no trabalho com a ferramenta.

Page 14: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 14/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Ambiente de Desenvolvimento

Apresentamos o ambiente de desenvolvimento do Centura Team Developer, onde o programador constrói aaplicação. No Centura Team Developer o ambiente de desenvolvimento é chamado de Centura

SQLWindows/32 , no qual o programador define suas classes, organiza as telas da aplicação, os seus objetos,codifica a aplicação e monta a estrutura do banco de dados.

O Ambiente de desenvolvimento, Centura SQLWindows/32.

O Centura SQLWindows/32 é dividido em duas partes, conforme ilustrado acima :

Quadro esquerdo  –  Onde é realizada a navegação pela aplicação, listando os nomes de

todos os seus componentes, porém, nenhuma codificação da aplicação pode ser aquiefetuada. Sua principal função é mostrar, de forma organizada, o conteúdo da suaaplicação. O item que for selecionado neste quadro é mostrado em detalhes no quadrodireito.

Quadro direito  –  Local em que é escrito o programa, o código fonte. O quadro direitosempre mostra os detalhes do item que estiver selecionado no quadro esquerdo, para tanto,

 possui uma barra de pastas localizadas na sua parte inferior. O nível de detalhes mostradosdepende da pasta selecionada.

Para cada pasta selecionada, um nível de detalhes do item especificado no quadro esquerdo é visualizado.

Page 15: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 15/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na próxima figura você pode observar a pasta Layout sendo utilizada.

O objeto sendo visualizado através da pasta Layout .

Utilizando as pastas localizadas no quadro direito do Centura SQLWindows/32, você pode acessarrapidamente os diversos locais de um programa fonte.

Observe que a figura abaixo mostra o mesmo componente, porém, visto através da pastaVariables, que apresenta apenas as variáveis deste objeto. Na imagem que se segue,nenhuma variável foi definida, mas quando o for, será nesta área do programa fonte.

O mesmo objeto, porém, sendo mostrado através da pasta Variables.

A próxima figura mostra a visualização do mesmo objeto, contudo, visto através da pastaParameters, que apresenta ao programador apenas os parâmetros que o objeto selecionadono quadro esquerdo possui. Na imagem abaixo nenhum parâmetro foi definido.

Page 16: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 16/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Os parâmetros do objeto sendo visualizados pela pasta Parameters.

A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pastaActions, que apresenta ao programador as ações do objeto selecionado no quadro esquerdo.

 Na imagem abaixo nenhuma ação foi codificada para este objeto.

As ações do objeto sendo visualizadas pela pasta Actions.

A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pastaComponents, que apresenta ao programador todos os componentes do objeto selecionadono quadro esquerdo.

Page 17: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 17/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O conteúdo do objeto sendo visualizado pela pasta Components.

A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pastaOutline, que apresenta ao programador todo o código fonte do objeto selecionado noquadro esquerdo, o código fonte engloba o conteúdo de todas as outras pastas mostradas noquadro direito.

Todo o código fonte do objeto sendo visualizado pela pasta Outline.

A próxima figura mostra a visualização da descrição do objeto, porém, visto através da pasta Description. A descrição do objeto é qualquer comentário feito a respeito de algumobjeto. Na imagem abaixo nenhuma descrição foi feita.

Page 18: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 18/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A descrição do objeto sendo visualizada através da pasta Description.

Explore cada elemento destas pastas. Quanto mais familiarizado com elas você estiver,maior será sua facilidade de locomoção através do Centura SQLWindows/32, ajudando amelhorar sua produtividade.

Estas pastas localizadas na parte inferior do quadro direito podem variar de acordo com oitem escolhido no quadro esquerdo. Observe na próxima figura que algumas das pastasmostradas acima desapareceram para dar lugar a novas pastas relativas ao item escolhidono quadro esquerdo, que neste caso é o item Application1.

As constantes da aplicação estão sendo visualizadas através da pasta Constants.

Além das pastas que permitem que sejam visualizadas partes da sua aplicação, contamosainda com os menus de contexto, que podem ser acionados em praticamente todos os

 pontos do programa. Esses menus possuem um item chamado Open View que permite ummaior nível de detalhe na visão de parte do código fonte.

Page 19: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 19/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Outline

O Outline é o código fonte propriamente dito. Nele ficam armazenadas as instruções da linguagem SAL (alinguagem de programação do Centura Team Developer). O Outline do Centura SQLWindows/32 é uma

 poderosa maneira de se organizar o código fonte, pois, permite que cada item tenha o seu lugar apropriado, impossibilitando a utilização de um objeto num local não adequado para ele. A definição de variável tem seu

local específico, assim como a definição das funções, classes e todos os demais elementos que compõem o programa SQLWindows.

Observe que cada linha do programa é iniciada pelo símbolo que nos faz lembrar um diamante. Estediamante assume duas características, cheio e vazio, ou preto e branco. O diamante cheio (ou preto) indicaque existem linhas de código subordinadas à linha visualizada. Clique duas vezes no diamante cheio para queas linhas subordinadas sejam expandidas, e então visualizadas. Uma linha iniciada por um diamante vazio,indica que não há linhas subordinadas.

O clique duplo numa linha iniciada por um diamante cheio irá expandir as linhas subordinadas, caso estasestejam comprimidas. Se linhas já estiverem expandidas, um clique duplo tem efeito contrário, ou seja, fazcom que a seção toda seja comprimida.

Os diamantes servem para informar se a linha de código possui linhas subordinadas.

Você pode também utilizar algumas teclas de atalho:

Tecla Função+ expande um nível do outline ( equivalente a um clique duplo numa linha comprimida ).* expande todos os níveis do outline, a partir da linha selecionada.- comprime toda a linha ( equivalente a um clique duplo numa linha expandida )./ comprime todos os níveis do outline inteiro.

Page 20: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 20/580

Programando com o Centura Team Developer 2000

Página PAGE 582

À primeira vista, o Outline contém as seguintes seções principais :

Libraries

Seção Libraries.

 Nesta seção, são definidos os nomes dos arquivos referentes às bibliotecas que o aplicativofará uso. O Centura SQLWindows/32 diferencia o fonte através de cores , para indicar ofonte incluído e o fonte normal. Essas cores podem ser configuradas pelo programador , mediante o menu Tools | Preferences.

A figura acima ilustra a definição de várias bibliotecas numa aplicação. Observe que a primeira biblioteca utilizada é identificada pela palavra chave Dynalib, enquanto que asdemais são identificadas pela palavra File Include. Esses dois tipos de bibliotecas sãoexplicadas abaixo:

Outros programas fontes em Centura

 Na figura acima, são demonstrados através das linhas de código subordinadas à seçãoLibraries e iniciadas pela palavra chave File Include, correspondentes a bibliotecasSQLWindows em formato não compilado.

A partir do momento em que essa biblioteca é incluída,  todo o conteúdo desse arquivo passa a estar ‘visível’ no arquivo ‘hospedeiro’, assim como todos os objetos, funções e até

mesmo as bibliotecas que lá foram inseridas. Você pode construir suas funções, janelas,classes genéricas, elaborando assim, suas próprias bibliotecas.

As bibliotecas não compiladas normalmente possuem a extensão *.APL mas podem terextensão *.APP.

Arquivos fonte Centura já compilados, as Dynalibs

Page 21: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 21/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Também na figura acima, são representados pelas linhas de código subordinadas à seçãoLibraries e iniciadas pela palavra chave Dynalib, correspondentes a bibliotecasSQLWindows em formato compilado.

 No caso das Dynalibs, apenas estarão disponíveis no arquivo ‘hospedeiro’ os objetos top

level ( janelas ) e as funções globais. Uma das grandes vantagens na utilização dasDynalibs se dá no momento da compilação, na carga do programa e na atualização, umavez que a Dynalib já está compilada. Isso trás um ganho de performance durante odesenvolvimento da aplicação.

As bibliotecas compiladas possuem a extensão *.APD.

Consulte o Capítulo 12  –  Distribuição do Produto Final, para saber todos os detalhessobre as Dynalibs.

Global Declarations

Seções subordinadas à Global Declarations.

 Na seção Global Declarations ficam todas as declarações que serão visualizadas por toda a aplicação. Asseções subordinadas à Global Declarations são :

Windows Defaults

Aqui ficam todas as definições das características iniciais dos objetos visuais. Características como estilo,cor, tipo e tamanho da fonte, e cor do fundo, são definidas nesta seção.

Formats

Onde são definidos os formatos para os campos, os quais podem ser :

Page 22: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 22/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Date/Time –  formatos para campos de data e hora.Input –  define a forma como será feita a entrada dos dados.

 Number - formatos para campos numéricos.

External Functions

O SQLWindows/32 suporta a utilização de qualquer função definida por outro fornecedor de software. Adefinição dessas funções vindas de DLLs, ou de outros programas executáveis, é feita na seção ExternalFunctions. Funções escritas em outras linguagens e disponibilizadas em DLLs devem ser declaradasconforme o exemplo abaixo, onde a função SWinFindWindow do próprio SQLWindows/32 é definida :

Declaração de uma função externa.

Observe que o valor do item  Export Ordinal  pode ser sempre 0 (zero). Na seção  Returns deve ser definido otipo do valor que a função retorna. Assim como na seção Parameters deve ser definido o tipo de cada um dos

 parâmetros que a função precisa para funcionar corretamente.

Constants

Page 23: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 23/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Declaração de algumas constantes.

As constantes do programa devem ser definidas na seção Constants , e podem ser:  System  User  Enumerations

As constantes System e User podem ser dos tipos de dados Boolean, Date/Time, Number ou String, e vocêdeve utilizar essas seções para melhor administrar suas constantes.

Enumerations são coleções de constantes numéricas que são utilizadas em servidores COM.

O SQLWindows automaticamente cria uma GUID a cada Enumeration definida.

Como padrão, cada Enumeration possui um valor que inicia em 0 (zero), sendo incrementado de 1 (um) acada elemento. O valor do incremento pode ser alterado, bem como duplicado.

Resources

Os recursos visuais da aplicação definidos nesta seção passam a fazer parte do executável final gerado peloCentura SQLWindows/32. Ou seja, cursores, figuras tipo bitmap e ícones são incluídos no executável,facilitando a distribuição do aplicativo.

Variables

Declaração de algumas variáveis.

Page 24: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 24/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na seção Variables são definidas as variáveis que serão visíveis em toda a aplicação. Asvariáveis podem ser dos tipos de dado Boolean, Date/Time, File Handle, Long String,

 Number, Session Handle, Sql Handle, String, Window Handle e dos tipos definidos pelo programador.

Você verá como trabalhar com tipos de dados definidos pelo programador no capítulo 5.

Internal Functions

Funções internas são funções escritas na própria linguagem SAL. As funções definidas na seção  Internal Functions  são visíveis em todo o aplicativo, por todos os módulos (funções, objetos, classes etc.).Posteriormente,  também é possível fazer a geração de DLLs das funções internas, utilizando o CenturaObject Compiler.

Named Menus

 Named Menus são definições de estruturas de menus que serão posteriormente utilizadas na aplicação. Osmenus definidos na seção  Named Menus são visíveis em todo o aplicativo e podem ser usados, a qualquermomento, por qualquer módulo da aplicação.

Class Definitions

 Na seção Class Definitions são definidas todas as Classes Definidas pelo Usuário. Para cada objeto visualexiste uma classe correspondente. Basicamente, os tipos das classes disponíveis são:

ActiveX Class Background Text Class Check Box Class

Child Table Class CoClass Column ClassCOM Proxy Class Combo Box Class Custom Control ClassData Field Class Dialog Box Class Form Window ClassFrame Class Functional Class General Window ClassGroup Box Class Horizontal Scroll Bar Class InterfaceLine Class List Box Class MDI Window ClassMultiline Field Class Option Button Class Picture ClassPushbutton Class Radio Button Class Table Window ClassVertical Scroll Bar Class

Applications Actions

 Nesta seção são codificadas as ações mais genéricas para a aplicação. Por exemplo, oinício e término da aplicação e o tratamento de erros genéricos. 

O Customizer

Page 25: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 25/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Customizer, mostrando as propriedades de um form window e de uma child table.

O Customizer  é o componente que permite ao desenvolvedor visualizar e alterar todas ascaracterísticas dos objetos da aplicação. Cada objeto possui suas próprias características,algumas podem ser alteradas através do customizer . Características como o nome doobjeto, seu título, cor, tipo e tamanho da fonte, informações sobre o tipo de dadoarmazenado no objeto, máscara de formatação e de entrada de dados, entre outras.

É possível ter acesso ao customizer  de duas formas :

Através do Outline. Basta clicar uma vez, com o botão esquerdo do mouse, no íconelocalizado à esquerda de cada um dos objetos. O objeto que não dispor esse íconenão possui características passíveis de alteração pelo Customizer .

Através da Visualização dos Objetos. Estando em Preview Mode, basta clicar duasvezes sobre o objeto desejado para que o customizer  seja mostrado.

É importante observar que,  mesmo quando o programa está sendo executado,  Run-Time

 Mode, é possível visualizar as características dos objetos.  Obviamente, não é permitido

alterar nenhuma característica em Run-Time.

Page 26: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 26/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Attribute Inspector

O  Attribute Inspector   possui praticamente as mesmas características apresentadas nocustomizer , com uma diferença básica: o Attribute Inspector  permanece ativo até que você

o desative. O customizer  permanece ativo apenas enquanto você visualiza as característicasdo objeto, com isso, você pode selecionar vários objetos sem que seja necessário ativarnovamente o  Attribute Inspector . Com o  Attribute Inspector   você pode visualizar asmesmas propriedades acessíveis pelo Customizer .

Observe as propriedades de um form window sendo visualizadas através do Attribute

 Inspector :

 Attribute Inspector  mostrando as propriedades de um form window.

Para acionar o Attribute Inspector  pressione, simultaneamente, as teclas Alt 3.

Você precisa decidir se vai utilizar o Customizer   ou o  Attribute Inspector , pois, os dois não podem serutilizados simultaneamente. Essa opção deve ser configurada através do menu Tools | Preferences,acionando a pasta Presentation.

 Na janela de configuração Preferences você escolhe entre utilizar o Customizer  ou o Attribute Inspector .

Page 27: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 27/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A Paleta de Controles

Todos os objetos visuais tipo child do Centura SQLWindows/32, os quais estão disponíveis para que odesenvolvedor utilize em sua aplicação, encontram-se agrupados na Paleta de Controles. Sempre que um dos

 botões da  Paleta de Controles  é selecionado, os nomes das suas subclasses (se existir) são mostrados nolistbox localizado na parte inferior da Paleta de Controles.

A Paleta de Controles pode ser acionada de três maneiras diferentes:   pressionando simultaneamente as teclas Alt 4.  acionando o menu Tools | Controls .  clicando no ícone Controls localizado na própria barra de ferramentas do SQLWindows.

O ícone Controls. 

A  Paleta de Controles  é bastante flexível, permitindo ao desenvolvedor configurá-la daforma que for mais agradável. Isso torna o desenvolvimento extremamente confortável.

A Paleta de Controles possui três grupos de botões, cada grupo representa um tipo deobjeto que está disponível para o programador. Os três tipos são:

   No primeiro grupo de botões existe um botão para cada tipo de Objeto Child  nativodo SQLWindows.

   No segundo grupo de botões estão os objetos tipo Custom Controls. Existe um botão genérico para os Custom Controls, um botão que ativa os componentes doSQLWindows para construção de aplicativos de bancos de dados e um terceiro

 botão que aciona o componente para construção de gráficos de negócios.  Inicialmente o terceiro grupo mostra apenas dois botões, o primeiro serve para

incluir na aplicação um controle ActiveX genérico. O segundo botão representa oControle ActiveX do Report Builder.

Controles disponíveis no Centura SQLWindows/32.

O segundo e terceiro grupo de botões da barra de Controles podem ser personalizados pelo programador, basta arrastar e soltar um objeto no local desejado da barra de Controles.

A próxima figura ilustra a personalização do grupo de objetos ActiveX da Paleta de

Controles.

Page 28: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 28/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Arraste um controle ActiveX muito utilizado para o grupo dos controles ActiveX naPaleta de Controles.

Cada ícone mostrado na  Paleta de Controles  representa um tipo de objeto no CenturaSQLWindows/32. Quando um tipo de objeto é escolhido, as diversas classes desse objetosão mostradas numa lista na própria  Paleta de Controles. Então, basta escolher uma dasclasses e clicar na janela de layout, para que um objeto do tipo e classe escolhidos sejainserido na aplicação.

As próximas figuras ilustram a inclusão de um objeto da Paleta de Controles na aplicação.

1 O objeto escolhido na paleta Controls é o pushbutton.

2 Movimente o mouse para o local onde você deseja colocar o objeto. Observe que o ponteiro do mouse assume a forma do objeto escolhido na paleta Controls.

Page 29: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 29/580

Programando com o Centura Team Developer 2000

Página PAGE 582

3 Quando encontrar a localização ideal, clique uma vez com o botão esquerdo domouse. Dessa forma, o objeto é “colocado” na sua aplicação. Automaticamente o

 ponteiro do mouse volta à sua aparência normal e o cursor de edição de texto é posicionado no objeto que foi inserido na aplicação.

 No caso do objeto escolhido neste exemplo, que é um pushbutton, o texto que vocêescrever será o título do objeto.

4 Após dar um título ao objeto, e teclando-se ENTER, o objeto assume a aparênciamostrada abaixo. Os pequenos quadrados posicionados ao redor do objeto indicamque o objeto está selecionado.

5 Estando selecionado, é possível modificar suas características através do AttributeInspector.

Page 30: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 30/580

Programando com o Centura Team Developer 2000

Página PAGE 582

6 Enquanto um objeto está selecionado, é possível utilizar o mouse para alterar suasdimensões.

Clique num dos quadrados que envolve o objeto e arraste para o tamanho desejado.

O objeto pode ser excluído de duas formas:

  Selecione o objeto e pressione a tecla Delete.

  Selecione o objeto, clique com o botão direito do mouse para acionar o menu decontexto. Acione o item de menu chamado Delete.

Exclusão de um objeto.

O Assistente de Código 

A principal função do Assistente de Código do Centura SQLWindows/32 é fazer com queo programador digite o mínimo possível durante o desenvolvimento da aplicação. Saberutilizar o Assistente de Código é de extrema importância para obter maior produtividade nodesenvolvimento.

Page 31: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 31/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O  Assistente de Código  é um objeto que é sempre mostrado por cima de todas as outras janelas do Centura SQLWindows/32, podendo ser posicionado em qualquer local da tela eter suas dimensões alteradas.

O Assistente de Código pode ser acionado de três maneiras diferentes:

   pressionando simultaneamente as teclas Alt 3.  acionando o menu Tools | Coding Assistant .  clicando no ícone Coding Assistant  localizado na própria barra de ferramentas do SQLWindows.

O ícone Coding Assistant. 

O Assistente de Código é sensitivo à posição do cursor no outline, ou seja, dependendo dolocal onde o cursor estiver posicionado no outline,  o  Assistente de Código  mostra os

 possíveis valores que podem ser a esse adicionados.

Além disso,  o  Assistente de Código  agrupa as informações por categorias,  conformemostrado abaixo:

O Assistente de Código classifica as informações possíveis de serem adicionadas ao outline , podendo ser:  Comandos SAL  Mensagens  Funções SAL  Funções do Usuário  Funções do Objeto  Funções definidas em Objetos do Usuário  Variáveis  Variáveis do Sistema  Constantes   Nomes dos Objetos da Aplicação  Resources  Parâmetros  Classes Base

Page 32: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 32/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A grande utilidade do  Assistente de Código  é melhorar a produtividade nodesenvolvimento, evitando erros de digitação, pois, não há como escrever o nome de umafunção errado, errar a quantidade e tipos de dados dos parâmetros, usar uma variável nãodefinida ou não permitida naquele local;  uma vez que,  o programador não as escreve

efetivamente, elas são mostradas no  Assistente de Código  e, com um clique, sãoautomaticamente transportadas para o código fonte. Caso o programador precise fazerreferência a um determinado objeto, não é necessário saber exatamente o seu nome, bastaescolhê-lo no Assistente de Código.

As próximas figuras ilustram a escrita de código utilizando-se o Assistente de Código.

1 O Assistente de Código é sensitivo. Baseia-se no item selecionado do outline.

2 Observe a figura abaixo, como o item do outline que está selecionado é a seçãoApplication Actions, o  Assistente de Código  relaciona os eventos que podem seradicionados a essa seção.

Clique duas vezes no item “On SAM_AppStartup” e observe que ele é

automaticamente inserido no outline.

3 Neste momento, o item do outline que está selecionado é o evento“SAM_AppStartup” (que acabou de ser inserido) . A partir desse ponto pode ser

inserido no outline dois tipos de elementos, um comando ou outro evento. Por essemotivo o  Assistente de Código mostra dois listboxes. No listbox superior estão oselementos que podem ser adicionados no mesmo nível do item selecionado no

outline, enquanto que no listbox inferior estão os elementos que podem ser

Page 33: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 33/580

Programando com o Centura Team Developer 2000

Página PAGE 582

adicionados no interior da seção selecionada no outline.

 Neste exemplo vamos adicionar um elemento no interior da seção selecionada nooutline, portanto, clique duas vezes no item chamado “Call”, mostrado no listbox

inferior.

4 O comando “Call” foi inserido no outline e o cursor de edição de texto foi

 posicionado automaticamente no final da mesma linha do comando inserido. Nestemomento você pode digitar o restante do comando diretamente no outline, ou podecontinuar utilizando as facilidades oferecidas pelo Assistente de Código .

5 No combobox localizado na parte superior do  Assistente de Código,  selecione oitem “Sal Functions”. Isso fará com que todas as funções do SQLWindows sejam

disponibilizadas para que você possa escolher uma que será incluída no seu programa fonte.

Page 34: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 34/580

Programando com o Centura Team Developer 2000

Página PAGE 582

6 Logo abaixo do combobox onde você escolheu “Sal Functions” está um datafield

que trabalha em conjunto com a lista das funções. Comece a digitar o nome dafunção desejada, que a mesma será localizada na lista das funções. Neste exemploutilizaremos a função chamada SalCreateWindow, que serve para fazer com que

um determinado form window seja criado na aplicação. Inicie a digitação do nomeda função e observe que a cada letra digitada o  Assistente de Código  localiza afunção que mais se pareça com o texto digitado. Digite apenas “SalCr”, pois isso é

o suficiente para que o  Assistente de Código selecione a função correta, conformemostrado na figura abaixo. Neste momento você pode teclar ENTER para que afunção seja inserida no outline.

7 Quando o  Assistente de Código  insere uma função no outline, seus eventuais parâmetros são selecionados (conforme a figura abaixo). A função utilizada nesteexemplo possui dois parâmetros, os seus tipos de dados são mostrados no outline.

Isso facilita a escrita do programa, pois, você já sabe (sem que seja necessárioconsultar a documentação online) que tipos de variáveis/objetos devem serutilizados.

8 Clique duas vezes no primeiro parâmetro, “Template”. Um tipo de dado Template

refere-se a um nome de objeto. Neste caso é o nome do objeto a ser criado.

Em seguida selecione “Windows Names” no  Assistente de Código para que sejammostrados os nomes de todos os objetos.

Page 35: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 35/580

Programando com o Centura Team Developer 2000

Página PAGE 582

9 Clicando duas vezes no nome do objeto desejado, o Assistente de Código moverá onome escolhido para a região selecionada no outline.

10 Clique duas vezes no nome “Window Handle” que indica o tipo de dado do próximo parâmetro da função SalCreateWindow.

Depois selecione “System Variables” nas categorias do  Assistente de Código. Issofará com que sejam mostradas as variáveis do SQLWindows.

11 Selecione “hWndNULL” no  Assistente de Código, clicando duas vezes para queseja transportada para o outline na posição correta.

Page 36: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 36/580

Programando com o Centura Team Developer 2000

Página PAGE 582

12 Dessa forma, uma linha de comando no outline do SQLWindows foi montada.Pressione ENTER para encerrar a digitação da linha e para que o  Assistente de

Código  identifique a posição do outline que está selecionada, mostrando os itensque podem ser adicionados.

É deste modo que escrevemos programas em linguagem SAL no outline do SQLWindows.Você pode escrever seus programas sem utilizar o Assistente de Código, porém, é bemmais prático utilizá-lo na escrita do código SAL.

Você pode ativar/desativar o  Assistente de Código  pressionando as teclas Alt 2 simultaneamente.

O Database Explorer

Page 37: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 37/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Database Explorer.

A partir do próprio ambiente de desenvolvimento do Centura SQLWindows/32 é possível criar tabelas,visões e índices, fazer consultas e gerar relatórios, sem que seja necessário nenhum conhecimento de SQL.Através da interface amigável do  Database Explorer   se pode realizar todas essas tarefas típicas dedesenvolvimento de sistemas e ainda incluir , alterar e excluir dados nas tabelas.

Assim como todas as ferramentas do Centura Team Developer, o  Database Explorer  trabalha com todos os tipos de bancos de dados padrões de mercado ,  de formatransparente.

ActiveX Explorer

Para que você possa analisar o conteúdo dos servidores ActiveX (*.dll, *.exe, *.olb, *.ocx e *.tlb), instaladosem sua máquina, o SQLWindows/32 oferece uma ferramenta chamada ActiveX Explorer que, através de suas

 janelas, proporciona uma visão clara e simples das CoClasses, interfaces, enumerators e eventos, além deuma documentação dos métodos informando os tipos de dado dos seus parâmetros e dos valores de retorno.

Você pode acionar o ActiveX Explorer através do menu Tools | ActiveX Explorer.

O ActiveX Explorer.

As duas figuras acima ilustram a utilização do ActiveX Explorer.

  A primeira figura mostra a seleção de um servidor ActiveX sendo feita.  A segunda figura mostra os componentes desse servidor, onde cada elemento

 possui um checkbox ao seu lado esquerdo. O programador deve selecionar oselementos que deseja utilizar, pois o ActiveX Explorer irá gerar o código SALequivalente, numa APL separada, aos elementos escolhidos do servidor ActiveX.

Obs : O ActiveX Explorer gera uma APL para o servidor Activex escolhido pelo programador. Se o programador escolher na primeira janela do ActiveX Explorer umaAPL (previamente gerada), ao invés de escolher um servidor, o ActiveX Explorerautomaticamente lê a APL escolhida, localiza o servidor ActiveX correspondente e carregaas informações deste.

Barras de ferramentas

As barras de ferramentas do SQLWindows são mostradas abaixo. As ações dos seus botõessão sempre encontradas em algum item de menu.

Page 38: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 38/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As barras de ferramentas podem ser personalizadas com relação ao seu conteúdo, tamanhoe localização.

Para configurar as barras de ferramentas acione o menu Tools | Toolbars.

As duas figuras mostradas abaixo ilustram as janelas de configurações das barras deferramentas.

Configuração das barras que estarão visíveis e do conteúdo de cada barra de

ferramentas.

Explorando os menus

Os menus do SQLWindows/32 são mostrados abaixo, seguidos das descrições de cadaitem. Alguns dos recursos podem não estar disponíveis, dependendo da forma como o

 produto é instalado.

O Menu File 

Menu

DescriçãoNew... Inicia uma nova aplicação do Centura SQLWindows/32. É aberta a

Page 39: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 39/580

Programando com o Centura Team Developer 2000

Página PAGE 582

caixa de diálogo Template, para que seja escolhido um modelo deaplicação ou para que seja incluído um modelo novo, definido pelo

 programador.Se você não escolher nenhum modelo e clicar no botão cancel, acaixa de diálogo Template é encerrada e nenhuma aplicação é criada.

Open... Ativa a caixa de diálogo que permite escolher e abrir uma aplicação

existente no SQLWindows/32. Através desta caixa de diálogo pode-se optar entre os diversos tipos de aplicações ( apl, app ou apt ).Você pode ter apenas uma aplicação aberta por vez numa instânciado SQLWindows/32, mas pode ter diversas instâncias doSQLWindows32 abertas simultaneamente, cada uma com umaaplicação.

Save Salva a aplicação com o nome atual. Se for um nova aplicação, aindasem nome, a caixa de diálogo Save As  é mostrada, permitindo quevocê escolha um local e o nome para que a sua aplicação sejagravada. Se você não informar um nome e clicar no botão Cancel, aaplicação não será gravada.

Save As... Salva uma cópia da aplicação atual com um novo nome, solicitado nacaixa de diálogo Save As.

Page Setting... Permite acesso às configurações de impressão do Outline: Tipo etamanho da fonte, títulos do cabeçalho e rodapé, e margens. O outlineé impresso exatamente da forma como está apresentado na tela, ositens subordinados são impressos apenas se a seção estiverexpandida.

Print Imprime o Outline de acordo com as configurações feitas no itemanterior.

Exit Fecha o Centura SQLWindows/32. Se existir alguma alteração feitana aplicação, e que ainda não foi gravada, o SQLWindows/32

 perguntará se você deseja gravar as alterações antes de sair.

O Menu Edit 

Nome DescriçãoUndo, Cut, Copy, Paste eDelete 

De acordo com suas funções padrão do Windows. 

Insert line  Insere uma linha no Outline a partir do local selecionado. Comment Items Marca como comentário o item selecionado. Todas as

linhas subordinadas ao item selecionado serão tambémcomentadas. No SQLWindows/32 uma linha comentada éiniciada pelo símbolo de exclamação ( ! ).

Uncomment Items Tira a marca de comentário do item selecionado. 

Outline | Expand OneLevel Expande o outline um nível a partir do nível selecionado.Você também pode expandir um nível, clicando duasvezes num diamante cheio que não esteja expandido.

Outline | Collapse Comprime o outline a partir do nível selecionado. Vocêtambém pode comprimir uma seção do outline, clicandoduas vezes num diamante cheio que já esteja expandido. 

Outline | Expand AllLevels

Expande o outline inteiro. Isso pode demandar tempo. 

Outline | Collapse Outline Comprime o outline inteiro. Apenas os objetos top levelestarão visíveis.

Outline | Promote Promove o item selecionado um nível, na hierarquia do

outline.

Page 40: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 40/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Outline | Demote Rebaixa o item selecionado um nível, na hierarquia dooutline.

Outline | Move Up Move o item selecionado uma linha para cima no outline.Outline | Move Down Move o item selecionado uma linha para baixo no outline.Find Mostra a janela Find para que você especifique o texto

que deseja procurar no outline.Find Again Repete a última busca realizada no outline.Replace Mostra a janela Replace para que você especifique o texto

que deseja procurar e o texto que irá substituí-lo, quandofor encontrado.

Properties... Se algum objeto estiver selecionado no quadro esquerdodo SQLWindows/32, o customizer é acionado, mostrandoas propriedades do objeto selecionado. Porém, se o

 primeiro item da árvore de objetos mostrada no quadroesquerdo do SQLWindows/32 estiver selecionado, a caixa

de diálogo chamada Properties

  é ativada, mostrando asestatísticas e as configurações de run-time da aplicação.

O Menu Project 

Nome DescriçãoCheck Out...  Ativa o Team Object Manager para extrair algum

componente do repositório. Check In...  Ativa o Team Object Manager para incluir o componente

atual no repositório. Compile  Compila a aplicação. Para cancelar a compilação clique

no botão Cancel que é mostrado na caixa de diálogodurante o processo de compilação. 

Next Error  Visualiza o próximo erro de compilação, quando aaplicação é compilada e mais de um erro é detectado. 

Previous Error  Visualiza o erro de compilação anterior, quando aaplicação é compilada e mais de um erro é detectado. 

Execute  Executa a aplicação atual. Se a aplicação não estivercompilada o SQLWindows/32 automaticamente compilaa aplicação. Se durante a compilação, nenhum erro fordetectado a aplicação é executada. 

Register Server Instala no registro do Window o servidor COM queestiver atualmente aberto no SQLWindows.Un-Register Server Remove do registro do Window o servidor COM que

estiver atualmente aberto no SQLWindows.Regenerate GUIDs...Build Settings...  Mostra a caixa de diálogo chamada Build Settings, onde é

configurado o modo como a aplicação será gerada. Você pode especificar que a aplicação será gerada como umexecutável normal, uma dynalib, uma biblioteca,configuara as opções para uso do Object Compiler para ageração de uma dll, indica o tipo de servidor COM

(Local, In-Proc ou MTS) a ser gerado.

Page 41: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 41/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Lembre-se, para que a aplicação gerada possa serutilizada pelo Object Nationalizer, o check box  Enable

 Resource Editing  deve estar marcado. Build Efetivamente gera o executável, dynalib, a dll ou o

servidor COM, conforme as configurações feitas no menu

Build Settings. 

O Menu Component

Nome DescriçãoNew  Mostra um menu onde você pode escolher um

componente a ser adicionado a sua aplicação. Os itens donovo menu que aparecerá dependem de qual item estáselecionado no outline. Por exemplo, se o item Classesestiver selecionado no quadro esquerdo do

SQLWindows/32, este menu de contexto mostrará osnomes de todas as classes possíveis de serem incluídas àaplicação neste momento. 

Wizards ...  Ativa os Assistentes do SQLWindows/32. Os assistentesaqui disponibilizados dependem da forma como oCentura foi instalado. 

ActiveX Wizard ...  Ativa o assistente para controles ActiveX. QuickObject Editor ...  Permite que você relacione uma classe a uma caixa de

diálogo que será ativada em tempo de desenvolvimento a partir de uma instância da classe. Essa caixa de diálogonormalmente é utilizada para configurar as propriedades

do objeto, propriedades estas que serão utilizadas emtempo de execução.Para explorar mais este recurso consulte o Capítulo 10 -Criando seus próprios QuickObjects. 

Menu Editor ... Ativa o Assistente de Definições de Menus, para que você possa construir seus menus através de uma interfacegráfica.

Go To Item Carrega numa nova instância do SQLWindows/32 à biblioteca selecionada. As bibliotecas que foram incluídasà aplicação, através da seção Libraries, são mostradas nooutline numa cor diferente do restante do código. Aqualquer momento essa biblioteca destacada pode seracionada numa nova instância do SQLWindows/32, bastaclicar com o botão direito do mouse numa parte do códigoda biblioteca, e escolher o item Go To Item no menu decontexto.

Show Item Information Mostra o nome da biblioteca ao qual o fonte selecionado pertence. As bibliotecas que foram incluídas à aplicação,através da seção  Libraries, são mostradas no outlinenuma cor diferente do restante do código. Para saber aque biblioteca pertence o código selecionado, clique com

o botão direito do mouse numa parte do código da biblioteca, e escolha o item Show Item Information no

Page 42: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 42/580

Programando com o Centura Team Developer 2000

Página PAGE 582

menu de contexto.Refresh Libraries Inclui novamente todas as bibliotecas definidas na seção

Libraries do outline. Faça isso para atualizar o seu programa com a versão mais recente das bibliotecas.

Merge Libraries Incorpora no programa atual todas as bibliotecas que

foram definidas na seção Libraries do outline. Uma vezincluídas, não é possível desfazer essa ação. Todo ocódigo passa a ser uma única aplicação.

Large Icons Seleciona automaticamente a tab Components, localizadana parte inferior do quadro direito do SQLWindows/32, emostra os componentes no formato de ícones grandes.

Small Icons Seleciona automaticamente a tab Components, localizadana parte inferior do quadro direito do SQLWindows/32, emostra os componentes no formato de ícones pequenos.

List Seleciona automaticamente a tab Components, localizadana parte inferior do quadro direito do SQLWindows/32, emostra os componentes no formato de lista.

Details Seleciona automaticamente a tab Components, localizadana parte inferior do quadro direito do SQLWindows/32, emostra os componentes em detalhes.

O Menu Layout 

Nome DescriçãoPreview Window  Mostra a janela como ela aparecerá ao usuário em tempo

de execução. A janela é mostrada "fora" do quadro direito

do ambiente do SQLWindows/32. Neste momento você pode clicar num elemento visual mostrado na janela eobservar que o elemento clicado é selecionado no outline,dessa forma a localização dos itens no outline é facilitada.

Bring to Front  Traz para cima o item selecionado. Send to Back   Envia para baixo o item selecionado. Align to Grid  Alinha os objetos selecionados à grade. Align Edges  Opções para se configurar o alinhamento dos objetos

visuais. Space Evenly  Opções para se configurar o espaço entre os objetos

visuais. Make Same Size  Opções para se configurar o tamanho dos objetos visuais. Grid Liga / Desliga a utilização da grade.Tab Order Configura a ordem de tabulação dos objetos visuais.Show Sample Text Quando você ativa este item, o SQLWindows/32 mostra

nos data fields, combo box, colunas da table window enos multiline fields, textos demonstrando os dados nosobjetos. Isso é muito útil para que você saiba o tamanhonecessário para cada objeto.

Show Design Scroll Bars Mostra as barras de rolagem em tempo de design, naslaterais dos objetos form window e table window.

Show Hidden Windows Faz com que os objetos configurados como invisíveis

Page 43: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 43/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 possam ser visualizados. Essa configuração só é válidaem tempo de design. Quando a aplicação é executada, osobjetos invisíveis não são mostrados.

O Menu Debug 

Nome DescriçãoGo  Quando em modo de design executa a aplicação, quando

em modo de run-time retorna ao modo de design. Stop Interrompe a execução da aplicação saindo do modo de

execução, retornando ao SQLWindows/32. Continue Continua a execução da aplicação quando em debug-

mode.Break Interrompe a execução da aplicação na linha que está

sendo executada, e permite entrar em modo de depuraçãoda aplicação.

Step Into Executa a próxima linha de comando e retorna o controleao SQLWindows/32. Se o comando for uma função, a

 primeira linha desta função é selecionada, e você podecontinuar acompanhando passo-a-passo a execução dafunção. No caso de funções do próprio SQLWindows/32,e funções externas, o procedimento é semelhante aodescrito no item Step Over .

Step Over Executa a próxima linha de comando e retorna o controleao SQLWindows/32. Se o comando for uma função, oSQLWindows/32 executa todos os comandos no seu

interior, e posiciona na linha imediatamente posterior.Breakpoints | Toggle Se a linha atual do outline for um breakpoint, ao seracionado este item a linha deixará de ser um breakpoint, ese a linha não for um breakpoint passará a ser. Quando oSQLWindows/32 está executando a aplicação, ele pára aexecução entrando em modo de depuração assim queencontrar uma linha marcada como breakpoint.

Breakpoints | Clear All Desmarca todas as linhas do outline que estiveremmarcadas como breakpoint.

Breakpoints | Disable All Desabilita todos os breakpoints configurados.Breakpoints | Enable All Habilita todos os breakpoints que foram anteriormente

desabilitados.No Animate  Não mostra as linhas de código durante a execução.Slow Animate Mostra as linhas de código, destacando-as, durante a

execução em modo lento. O Intervalo de segundos éconfigurado na caixa de diálogo Preferences.

Fast Animate Mostra as linhas de código, destacando-as, durante aexecução em modo rápido.

Playback Permite que você depure um servidor COM da mesmaforma que uma aplicação normal.

Playback rewind Permite que você depure um servidor COM da mesma

forma que uma aplicação normal.

Page 44: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 44/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Menu Database

O menu Database só é mostrado quando o Database Explorer , que é acionado através domenu Tools | Database Explorer, está sendo utilizado.

Nome DescriçãoOpen Database Explorer  Executa o Database Explorer. New  Permite a criação de nova Tabela, Índice, Store

Procedure, Store Procedure Package ou Banco de Dados. SQL Script  Ativa o SQLTalk. Table  Comandos para edição, manutenção e filtro nos dados da

tabela selecionada. Stored Procedure  Ativa o editor de stored procedures. Este item depende

muito do tipo de banco de dados aberto no DatabaseExplorer. 

Query  Comandos para a criação de uma nova consulta ouabertura de uma consulta já existente. 

Add to list  Adiciona um novo Banco de Dados à relação já existente. Disconnect  Desconecta do banco de dados. View System Tables Visualiza as tabelas do sistema. (Catálogo) Close Database Explorer Encerra a execução do Database Explorer. 

O Menu Tools 

Nome Descrição

Users Tools...  Mostra uma caixa de diálogo que lhe permite configuraras ferramentas mostradas no menu Tools. Você pode

 personalizar a barra de menu Tools adicionando itens demenu.

ToolBars...  Permite que você escolha quais barras de ferramentas doSQLWindows estarão visíveis ou não. Você pode tambémcriar suas próprias barras de ferramentas personalizandoos botões de cada uma. Por exemplo, você pode montaruma barra de ferramentas nova pessoal, com os comandosdo SQLWindows mais utilizados por você.

Preferences...  Ativa a janela de Propriedades do CenturaSQLWindows/32, onde é possível configurar o pathdefault, o intervalo de tempo utilizado no Debug SlowAnimate, os valores para o Grid, os tipos e cores dasfontes utilizadas no SQLWindows/32 para representarcomentários no programa fonte e itens incluídos,configura o assistente de código, customizer e attributeinspector. 

Output  Visualiza a janela de Output, onde são mostrados os errose avisos ocorridos na compilação. 

Coding Assistant  Visualiza o Assistente de Código. 

Attribute Inspector  Visualiza o Inspetor dos Atributos. 

Page 45: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 45/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Controls  Visualiza a Paleta de Controles. Variables  Em modo de Debug, mostra a janela de variáveis. Call Stack   Em modo de Debug, mostra a janela com a seqüência de

objetos e eventos executados. Messages  Em modo de Debug, mostra a janela com a pilha de

mensagens em execução. Expressions  Em modo de Debug, mostra uma janela onde é possível

avaliar o conteúdo dos objetos, das variáveis e os valoresretornados pelas funções. 

Database Explorer Inicia o Database Explorer.ActiveX Explorer Inicia o ActiveX Explorer.Report Builder  Executa o gerador de relatórios Report Builder. Consulte

o Capítulo 11 –  O Report Builder, para saber maissobre esta ferramenta. 

Team Object Manager Executa o gerenciador de projetos Team Object Manager.

Browse All Classes Executa o browser gráfico das classes, mostrando ahierarquia e estrutura das classes, graficamente.Diff / Merge Tool Executa o aplicativo Diff/Merge que identifica diferenças

entre dois programas fontes.SQLTalk Executa o SQLTalk. Consulte o Capítulo 3 - Acesso ao

SQL, para saber mais sobre o SQLTalk.

Page 46: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 46/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 47: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 47/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 2A Linguagem SAL 

 Neste capítulo apresentamos a linguagem de programação e todos os componentes utilizadosno SQLWindows/32. Você ficará familiarizado com a maneira como a linguagem estáestruturada, suas regras, os tipos de dados, os objetos, os menus, enfim, todos os elementos dalinguagem SQLWindows.

Serão mostrados detalhadamente todos os objetos e os tipos de menus do SQLWindows/32,com suas respectivas características, para total aproveitamento do desenvolvedor.

Page 48: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 48/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A Linguagem SAL

Toda a programação em Centura SQLWindows/32 é feita através da linguagem SAL (Scalable Application Language), uma linguagem amadurecida, poderosa e de fácil entendimento. Um programa fonte emlinguagem SAL é composto de comandos e funções SAL e de comandos SQL.

O programa fonte

Um programa Centura SQLWindows/32 pode ter as seguintes extensões padrões :

APL –  Tipo de arquivo que identifica Bibliotecas, utilizado para armazenar objetos, classese rotinas genéricas que serão aproveitadas em diversas aplicações desenvolvidas,utilizando-se o SQLWindows/32.

APP  –   Tipo de arquivo que identifica Aplicações em formato binário, um formato proprietário. Uma aplicação que esteja gravada neste formato só pode ser visualizadaatravés do próprio SQLWindows/32.

APT –  Tipo de arquivo que identifica Aplicações em formato texto padrão. Uma aplicação

que esteja gravada neste formato pode ser visualizada através do SQLWindows/32 etambém através de um editor de textos padrão TXT, embora não seja recomendadaqualquer alteração no fonte, mediante uma interface diferente da disponibilizada noSQLWindows/32.

APD - Tipo de arquivo que identifica Aplicações compiladas em Dynalibs. Dynalibs sãoutilizadas para o compartilhamento de funções, janelas e suas funções, e objetoschild. Este formato é proprietário, sua utilização é reservada a aplicaçõesdesenvolvidas em Centura SQLWindows/32. APC - Tipo de arquivo que identifica Aplicações compiladas com o Centura Object Compiler.O resultado desta compilação é uma DLL com todas as funções internas. Essa DLL épadrão e pode ser utilizada por qualquer outra linguagem feita para ambiente Windows.

Os Comandos da Linguagem SAL

A linguagem SAL oferece aos desenvolvedores os comandos Break, Call, Else, If, Loop, Return, Select Case,Set, While, que são explicados em detalhes abaixo.

Break

Este comando é utilizado para encerrar o processamento dos comandos Loop, While eSelect Case. O fluxo de execução do programa é passado para o bloco de comandosimediatamente seguinte.

Call

O comando Call é utilizado para chamar uma função.

If Else Else If

O comando If é usado para executar uma operação dependendo de alguma condição. Ele possui a seguintesintaxe :

If < expressão1 >...........

Else If < expressão2 >

...........Else

Page 49: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 49/580

Programando com o Centura Team Developer 2000

Página PAGE 582

........... 

O SQLWindows/32 avalia a primeira expressão no If, se for obtido um valor TRUE (Verdadeiro ), então, o código subordinado ao comando If é executado. No caso daexpressão retornar FALSE, o Centura SQLWindows/32 procura pelo próximo Else ou ElseIf , se existirem. Else If é utilizado quando se faz necessário testar mais de uma condição.Se a expressão presente no Else If retornar TRUE, o SQLWindows/32 executa o códigosubordinado ao comando Else If. Se a Expressão retornar FALSE, o Centura continua a

 procurar por mais algum comando Else If . Caso não encontre nenhum Else If , e sim umcomando Else, o Centura então executa o código subordinado ao comando Else. Se não forencontrado comando Else, ele simplesmente continua a execução do programa.

O SQLWindows/32 utiliza a hierarquia presente no Outline para determinar o bloco decomandos subordinados que será executado. Isso elimina a necessidade de utilizar osdelimitadores BEGIN ... END presentes em outras linguagens.

Alguns exemplos :If nCodigo = 999

.............Else If nCodigo = 888

............Else

............Set sNome = ‘José’ 

A utilização do operador de igualdade (=) não se faz obrigatória em alguns casos. Similar a linguagem C, aoser avaliada uma expressão, e esta retornar um valor 0 (zero), o Centura SQLWindows/32 interpreta comoFALSE. Qualquer valor diferente de zero é interpretado como um valor TRUE. Observe o próximo exemplo:

Set nValor = 3If nValor

[ este código é executado, pois 3 é diferente de FALSE ]If nValor = TRUE

[ este código não é executado, pois 3 é diferente de TRUE ]  

 No primeiro If o comando subordinado é executado, pois, nenhuma comparação direta coma constante TRUE é efetuada. No segundo If a comparação é feita, o código não éexecutado, uma vez que, nValor é diferente de TRUE.

Obs.: Podem ser feitas avaliações de variáveis sem a utilização de operadores, como noexemplo acima, apenas com variáveis ou expressões que retornem um tipo de dado Lógico.

Ao deixar de utilizar o sinal de igualdade (=) em expressões ou variáveis que retornemoutros tipos de dados, o entendimento do código ficará comprometido, dificultando a sualeitura e depuração.

Return

O comando Return pode ser utilizado para finalizar o processamento de uma função oumensagem e retornar um status para o ponto da aplicação de onde foi chamado. Return

 pode ser utilizado em qualquer ponto do código.

Select Case

Page 50: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 50/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O comando Select Case é outro comando de avaliação de condições na linguagem doCentura SQLWindows/32. A estrutura If ... Else é normalmente utilizada quando existemdois possíveis resultados. Algumas vezes a estrutura If ... Else é utilizada para mais quedois resultados, mas o comando Select Case se mostra mais conveniente nesses casos. Asintaxe do comando Select Case é a seguinte :

Select Case < expressão >Case < valor >

..........Break

Case < valor >..........Break

Default..........Break 

O tipo de dado retornado pela expressão avaliada pelo Select Case deve ser numéricointeiro. Não pode ser avaliada uma expressão de outro tipo de dado como data/hora, string

ou número com decimais. O valor utilizado em cada comando Case deve ser um valor ouuma expressão numérica inteira. Quando for necessário avaliar expressões de algum tipode dado diferente de número inteiro, deve ser utilizado o comando If ... Else. O CenturaSQLWindows/32 avalia a expressão inteira e localiza o primeiro Case que satisfaça acondição da expressão. Quando encontra, executa o código subordinado ao Caseencontrado e continua a procurar por mais algum Case que satisfaça a condição. O códigosubordinado à cláusula Default é executado quando o SQLWindows/32 não encontranenhum Case que satisfaça a condição. A cláusula Default não é obrigatória, mas quandoutilizada deve ser a última do comando Select Case.

O comando Break é usado para informar ao Centura que encerre a execução do bloco de

comandos. Ao encontrar um Break num comando Case,  o SQLWindows/32 encerra aexecução de todo o bloco do comando Case. Se um Break for omitido num bloco Case, oCentura irá continuar executando o conteúdo de todos os outros Cases que satisfaçam acondição, até o fim.

A omissão do comando Break, quando utilizado corretamente, pode trazer benefícios.Observe o exemplo:

Considere que ERRO_INSERT, ERRO_UPDATE e ERRO_DELETE são constantesnuméricas inteiras.

Select Case ( nErro )Case ERRO_INSERT

Call SalMessageBox( "Registro já existe.", "Case", MB_Ok )Break

Case ERRO_UPDATECase ERRO_DELETE

Call SalMessageBox( "Registro não foi encontrado.", "Case", MB_Ok )Break

DefaultCall SalMessageBox( "Erro desconhecido", "Case", MB_Ok )Break

 Nesse exemplo o tratamento de erro para os comandos de UPDATE e DELETE é omesmo; o erro de INSERT possui sua própria crítica de erro. Ao invés de repetir todo o

 bloco de código para as críticas de erro do UPDATE/DELETE, eles são colocados umacima do outro. Já que não existe nenhum Break no Case ERRO_UPDATE, a execução

Page 51: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 51/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 prossegue ao próximo Case e termina quando o Centura SQLWindows/32 encontrar oBreak subordinado ao Case ERRO_DELETE.

Set

O comando Set é usado para associar um valor a algum objeto ou variável. O valorassociado pode ser um valor ou uma expressão :

Set < variavel / objeto > = < valor / expressão >

Alguns exemplos :

Set sNome = “José” Set nValor = nValor1 * nValor2Set sCidadeEstado = sCidade || “ – “ || sEstado 

While e Loop

Os comandos While e Loop são duas estruturas de laço do Centura

While < expressão >...Break

Loop [ nome_loop ]...Break [ nome_loop ]

Page 52: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 52/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Todo o código subordinado ao comando While ou ao comando Loop são parte do laço.O While é um laço onde a condição é avaliada antes deste ser executado pela primeira vez.A expressão precisa ser avaliada e deve ser TRUE ( diferente de zero ). O laço continua atéque uma destas duas condições se satisfaçam:  A expressão seja avaliada FALSE.

  Um comando Break seja encontrado.

O Loop é um laço mais “flexível”. O código no laço é executado pelo menos uma vez etermina quando o Centura encontrar um comando Break. Caso o Centura não encontre umcomando Break, o programa fatalmente irá travar, e um resultado não desejado poderáocorrer.

Pode ser utilizado o comando Loop e While para montar laços “aninhados” ( nested loops ). Nesse caso, torna-se extremamente útil “nomear” os laços. Observe o código :  

Loop LoopExterno.........

If CondicaoBreak LoopExterno

Loop LoopInterno.........

If CondicaoBreak LoopInterno

Else If CondicaoBreak LoopExterno 

Page 53: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 53/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Operadores Matemáticos

O Centura suporta os operadores matemáticos que são padrão entre a maioria das linguagens, conforme atabela abaixo :

Operador

Descrição

+ Adição- Subtração* Multiplicação/ Divisão= Igualdade!= Não igual a> Maior que< Menor que>= Maior que ou

Igual a<= Menor que ouIgual a

** ExponenciaçãoAND AND lógicoOR OR lógico

 NOT Negação& Bitwise AND| Bitwise OR|| Concatenação

Nota

Entende-se pelo termo bitwise a comparação bit-a-bit de posicionamento idêntico em duas expressõesnuméricas.

Variáveis

Um data type  refere-se ao tipo de informação que um campo ou uma variável pode

armazenar. Isto é muito importante,  pois,  determina o montante de Memória de AcessoRandômico ( RAM ) que será reservado para isso. O Centura SQLWindows/32 suporta ostipos de dados definidos SQL de acordo com o padrão ANSI 92. Isso permite acompatibilidade com uma variedade de outros produtos, incluindo servidores de bancos dedados e outras ferramentas de desenvolvimento.

Uma variável significa um local da memória que armazenará um determinado pedaço deinformação. Algumas considerações sobre as variáveis devem ser observadas: o tipo dedado que pode ser armazenado numa variável e o escopo da variável - escopo refere-se aacessibilidade que geralmente é Local ou Global.

Page 54: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 54/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Uma variável local é visível apenas na função, objeto, ou janela que a mesma foi definida. Normalmente não pode ser acessada de fora do local definido. Uma variável localgeralmente desaparece quando o objeto que a criou é fechado. Isso também libera amemória que havia sido ocupada.

Uma variável global tem um alcance maior do que a variável local ( alcance em toda a aplicação e não apenasno form onde foi definida ), mas há dois pontos fracos. O primeiro é que a memória ocupada pela variávelnão é liberada, mesmo se a variável não estiver sendo utilizada, enquanto a aplicação estiver sendoexecutada. O segundo é bem mais grave, uma variável global pode ser acessada de qualquer local daaplicação e ter seu valor alterado sem controle.

Tipos de Dados

A tabela abaixo apresenta os tipos de dados suportados pelo Centura SQLWindows/32.

Tipo de dado DescriçãoBoolean Deverá ser usado apenas quando for importante identificar um dos dois

estados ( on/off, yes/no, verdadeiro ou falso ).Date/Time Um valor que inclui uma Data e a Hora em seu formato.File Handle Usado para identificar um arquivo.Long String Uma cadeia de caracteres maior que 254 bytes.

 Number Um número.Session Handle Usado para identificar uma sessão junto a um servidor de banco de dados.SQL Handle Usado para identificar uma conexão junto a um servidor de banco de

dados.String Uma cadeia de caracteres.WindowHandle

Usado para identificar uma instância de um objeto sendo executado.

A declaração das variáveis

As variáveis são declaradas na seção Variables, que é encontrada na Global Declarations,nas instâncias dos objetos top level, nas definições das classes dos objetos e nas funções.

A Centura Software Corporation sugere, em seu manual, que o desenvolvedor siga alguns padrões na definição das suas variáveis, para facilitar a sua utilização e identificação. Nocódigo abaixo estão definidas uma variável para cada tipo de dado do SQLWindows/32.Observe os prefixos utilizados em cada nome de variável:

Window VariablesBoolean: bOkDate/Time: dtDataAtualFile Handle: fhConfigLong String: lsObsNumber: nCodigoSql Handle: hSqlConexaoSession Handle: shSessaoString: sDescricaoWindow Handle: hWndObjeto 

Quando você define uma variável, como mostrado logo acima, mesmo que a variável aindanão tenha sido utilizada nenhuma vez, ela já possui um valor, o valor default que é iniciado

 pelo próprio SQLWindows.

Page 55: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 55/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tipo de dado Valor defaultDate/Time Um valor data/hora nulo. O mesmo que a constante DATETIME_Null

 Number Valor 0 (zero). O mesmo que a constante NUMBER_NullString Um valor string nulo. O mesmo que a constante STRING_Null.Window

Handle

Um valor window handle nulo. O mesmo que a variável de sistema

hWndNULL.

Obs.:  No Centura,  o tamanho máximo permitido para os nomes de variáveis é de 32caracteres. É possível o uso das letras, números e do sinal _ (underscore). Os nomes dasvariáveis e dos objetos são case-sensitive. Portanto,  sNome é uma variável e sNOME éoutra.

Veremos como trabalhar com as variáveis do SQLWindows nos exemplos presentes noscapítulos onde são mostrados exemplos de programação.

Variáveis do Sistema

O Centura SQLWindows/32 possui algumas variáveis internas, chamadas de Variáveis doSistema (System Variables). São variáveis cuja definição não se faz necessária antes deutilizá-las. São, portanto, especiais.

A tabela abaixo apresenta algumas variáveis do sistema e suas descrições :

Variável Descrição- MyValue O valor do objeto atual. Assume o tipo de dado do objeto.- hWndForm O Window Handle do objeto top level atual.

- hWndItem O Window Handle do objeto atual.- hWndMDI O Window Handle do objeto mdi atual.- hWndNull Equivale a um valor tipo Window Handle nulo.- wParam Um valor numérico para ser utilizado como parâmetro em mensagens.- lParam Um valor numérico para ser utilizado como parâmetro em mensagens.- nArgCount Contém a quantidade de argumentos passados como parâmetro quando

a aplicação é iniciada.- strArgArray Vetor com os argumentos passados por parâmetro na linha de comando

 para a aplicação.- SqlDatabase Indica o nome do banco de dados a ser utilizado.- SqlUser Indica o nome do usuário do banco de dados.

- SqlPassword Indica a senha do usuário do banco de dados.

Vetores 

O Centura suporta vetores multidimensionais de cada um dos seus tipos de dados nativos edos tipos de dados definidos pelo usuário. Os vetores podem ter suas dimensões

 predeterminadas na sua definição ou podem ser dinâmicos, tendo como limite a memóriadisponível.

A sintaxe para a definição de um vetor é mostrada abaixo :

VariablesBoolean: abStatus [10]

Page 56: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 56/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Number: anMeses [1:12]String: asNomes [*]

O primeiro vetor declarado, abStatus, é um vetor que poderá armazenar apenas valores 1(TRUE) ou 0 (FALSE), pois seu tipo de dados é Boolean. Poderá ter no máximo 10elementos, entre 0 e 9.

O segundo vetor declarado, anMeses, é um vetor que poderá armazenar qualquer valornumérico válido e poderá ter no máximo 12 elementos, entre 1 e 12.

O terceiro vetor, asNomes, poderá armazenar apenas valores caracteres válidos. Este vetoré dinâmico, ou seja, o seu número de elementos não tem limite.

Constantes

Constantes, assim como as variáveis, podem armazenar valores. A principal diferença éque constantes armazenam informações (como nome, salário), e não ponteiros internos

(como file handles ou window handles). As constantes devem ser definidas em tempo de programação e não mudam seus valores durante a execução do programa.

Enumerations são constantes numéricas que são utilizadas em servidores COM para conterlistas de valores. Normalmente o primeiro item da lista define o valor inicial e os demaisitens são sempre acrescidos de um. No exemplo mostrado na figura abaixo, o primeiro item

 possui valor 1, o segundo 2 e assim por diante.

Constantes são declaradas no outline na seção chamada Constants,  que é uma seçãosubordinada a seção Global Declarations.

Declaração de Constantes.

As Funções

O Centura SQLWindows/32 apresenta um conjunto de funções que é embutido àlinguagem SAL. Essas funções realizam uma variedade enorme de tarefas que ajudam odesenvolvedor a construir poderosas aplicações. O Centura oferece algumas funções quesão específicas do ambiente do Windows e outras funções que são específicas do próprioambiente do SQLWindows/32.

O Centura disponibiliza uma quantidade enorme de funções.Consulte o Capitulo 13  –  Guia de Referência das Funções SAL, para uma explicação detalhada de todas asfunções disponíveis no SQLWindows/32.

Page 57: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 57/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Os Objetos do Centura SQLWindows/32

O Centura SQLWindos32 dispõe de um conjunto de objetos básicos que são normalmente suficientes para aimplementação das soluções necessárias aos desenvolvedores no seu dia-a-dia. Esses objetos são todosapresentados ao desenvolvedor na Paleta de Controles, que iremos analisar em detalhes agora.

Esses objetos são os elementos utilizados para a criação da interface com o usuário.Dividem-se em três tipos :

Personalizável Codificável Recebe / EnviaMensagens

Window Objects Sim Sim SimBackground Itens Sim Não NãoMenus Não Sim Não / Sim

Os Windows Objects são todos os elementos gráficos que podem enviar e recebermensagens. Na realidade, são os objetos que interferem no fluxo da aplicação. Esses têmalguma função lógica no programa, ou seja, possuem algum código associado a eles. NoCentura SQLWindows/32, esses objetos dispõem de uma identificação única na aplicação,a qual damos o nome de handles.

Os Window Objects podem ser

Top Level Window  –  São os objeto do tipo mdi, form window, dialog box e table window.

Child Window  –  São os outros objetos que estão sempre subordinados a algum objeto top

level. Jamais um objeto Child existirá sem que exista um objeto top level.Vamos agora analisar detalhadamente cada um dos objetos do SQLWindows/32.

MDI Window

Um objeto top level do tipo mdi.

Um objeto mdi é o único top level que pode conter outros objetos top level no seu interior. Normalmente é usado para gerenciar várias janelas abertas simultaneamente. Ou seja, omdi controla várias outras janelas abertas, podendo distribuir mensagens entre essas

 janelas. Quando um mdi é encerrado, automaticamente todas as suas janelas filhas sãoencerradas também. Objetos tipo mdi são geralmente utilizados para servirem de “menu

 principal” das aplicações que requerem muitas janelas abertas simultaneamente. 

Page 58: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 58/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Um mdi, assim como todos os outros objetos do SQLWindows/32, possui diversas propriedades. Você pode alterar os valores de qualquer uma das propriedades do objeto,através do Customizer  ou do Attribute Inspector .

Abaixo estão relacionadas todas as propriedades de um objeto do tipo mdi :

Propriedade DescriçãoMDI Window O nome interno do mdi. Nome utilizado pelo programador. Object Title O título que aparecerá na barra de títulos quando o programa

estiver sendo executado. AccessoriesEnabled

Indica se os acessórios do mdi estarão visíveis. Os acessórios sãoa barra de ferramentas e a barra de mensagem.

Tool Bar Visible Indica se a barra de ferramentas estará visível.Tool Bar Size É a medida da altura da barra de ferramentas ( em unidades de

form ).Tool Bar Position Indica a localização da barra de ferramentas.Status Bar Visible Indica se a barra de mensagens estará visível.AutomaticallyCreate

Indica se o mdi será criado automaticamente quando a aplicaçãofor executada.

Maximizable Indica se o mdi poderá ser maximizado.Minimizable Indica se o mdi poderá ser minimizado.System Menu Indica se o menu do sistema, localizado na parte superior

esquerda do objeto, poderá ser utilizado pelo usuário quando aaplicação estiver em tempo de execução.

Resizable Indica se o mdi poderá ter seu tamanho alterado.Initial State Indica o estado inicial (maximizado, minimizado ou normal) do

mdi.Icon File Name Informe aqui o nome de um ícone para este mdi.Left A coordenada mais à esquerda do objeto.Top A coordenada da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.

Para incluir um MDI na sua aplicação:

1 Clique com o botão direito do mouse na palavra "Windows" localizada no quadroesquerdo.

2 Será mostrado um menu de contexto onde você deve escolher o item New.3 Depois basta clicar no item chamado "MDI Window".

Conforme mostrado na figura abaixo:

Page 59: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 59/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Form Window

Um objeto top level form window geralmente é criado como filho de algum mdi, podendotrocar informações com outros forms.

É normalmente utilizado para a entrada de dados, consultas e visualização de relatórios.Um form window pode ser maximizado, minimizado e ter seu tamanho alterado pelousuário. Pode também apresentar uma barra de ferramentas em qualquer um dos seuslados, além de uma barra de mensagens.

Um objeto top level do tipo form window .

Obs : Quando um form window é criado como filho de um mdi, a sua barra de mensagensnão é visualizada no form window, mas sim no mdi. Esse é um comportamento padrão doWindows, não requerendo nenhum esforço de programação por parte do desenvolvedor.

Um form window, assim como todos os outros objetos do SQLWindows/32, possuidiversas propriedades. Você pode alterar os valores de qualquer uma das propriedades doobjeto, através do Customizer ou do Attribute Inspector .

Abaixo estão relacionadas todas as propriedades de um objeto do tipo form window :

Propriedade DescriçãoForm Window  O nome interno do form window, utilizado pelo programador.Object Title  O título que aparecerá na barra de títulos do form window, quando o

 programa estiver sendo executado.Accessories

Enabled

Indica se os acessórios estarão visíveis. Os acessórios são a barra de

ferramentas e a barra de mensagem.

Page 60: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 60/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tool Bar Visible Indica se a barra de ferramentas estará visível.Tool Bar Size É a medida da altura da barra de ferramentas ( em unidades de form

).Tool BarPosition

Indica a localização da barra de ferramentas.

Status BarVisible

Indica se a barra de mensagens estará visível.

Display Style Indica o estilo de visualização do form window.AutomaticallyCreate

Indica se o form window será criado automaticamente, quando aaplicação for executada.

Maximizable Indica se o form window poderá ser maximizado.Minimizable Indica se o form window poderá ser minimizado.System Menu Indica se o menu do sistema, localizado na parte superior esquerda

do objeto, poderá ser utilizado pelo usuário, quando a aplicaçãoestiver em tempo de execução.

Resizable Indica se o form window poderá ter seu tamanho alterado.Initial State Indica o estado inicial (maximizado, minimizado ou normal) do

form window.Icon File Name Informe aqui o nome de um ícone para este form window.Page Width Largura da página.Page Height Altura da página.Page Count  Número de páginas.Left A coordenada mais à esquerda do objeto.Top A coordenada da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.

BackgroundColor

Indica a cor utilizada no corpo do form window.

Text Color A cor do texto.Font Name O nome da fonte utilizada.Font Size O tamanho da fonte.FontEnhancement

Melhoramentos da fonte.

Para incluir um Form Window na sua aplicação:

1 Clique com o botão direito do mouse na palavra "Windows" localizada no quadroesquerdo.

2 Será mostrado um menu de contexto onde você deve escolher o item New.3 Depois basta clicar no item chamado "Form Window".

Conforme mostrado na figura abaixo:

Page 61: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 61/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Dialog Box

Os Dialog Box não possuem a característica de serem filhos de algum outro objeto.Sempre são mostrados por cima das demais janelas, e, estando ativo um Dialog Box,nenhum elemento de outra janela pode ser acionado. Os Dialog Box não podem serminimizados, maximizados e ter seus tamanhos alterados em tempo de execução. Também

 possuem barras de ferramentas e de status.

Obs  : Já que os objetos do tipo dialog box não são filhos de nenhum objeto, ocomportamento da barra de status não é similar ao comportamento encontrado no formwindow. A sua barra de status é visualizada na parte inferior do próprio objeto. Essetambém é um comportamento padrão do Windows, não requerendo nenhum esforço de

 programação do desenvolvedor.

Um objeto top level do tipo dialog box.

Um dialog box, assim como todos os outros objetos do SQLWindows/32, possui diversas propriedades. Você pode alterar os valores de qualquer uma das propriedades do objeto,

através do Customizer ou do Attribute Inspector .Abaixo estão relacionadas todas as propriedades de um objeto do tipo dialog box :

Propriedade DescriçãoDialog Box  O nome interno do dialog box, utilizado pelo programador.Object Title  O título que aparecerá na barra de títulos do dialog box, quando o

 programa estiver sendo executado.AccessoriesEnabled

Indica se os acessórios estarão visíveis. Os acessórios são a barra deferramentas e a barra de mensagem.

Tool Bar Visible Indica se a barra de ferramentas estará visível.

Tool Bar Size É a medida da altura da barra de ferramentas ( em unidades de form

Page 62: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 62/580

Programando com o Centura Team Developer 2000

Página PAGE 582

).Tool BarPosition

Indica a localização da barra de ferramentas.

Status BarVisible

Indica se a barra de mensagens estará visível.

Display Style Indica o estilo de visualização do dialog box.Type of Dialog Existem três tipos disponíveis:

O tipo Modeless  indica que o usuário poderá utilizar outros recursosda aplicação enquanto usa este dialog box. Poderá utilizar menus,outras janelas, etc.O tipo Modal   indica que o usuário não poderá utilizar outrosrecursos da aplicação atual, porém, poderá utilizar outras aplicaçõesdo sistema operacional, como um editor de textos e planilhas.Já o tipo System Modal   indica que o usuário não poderá utilizarnenhum outro recurso. O sistema ficará aguardando que o dialog

 box tipo System Modal seja encerrado, para então prosseguir

normalmente.Left A coordenada mais à esquerda do objeto.Top A coordenada da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.BackgroundColor

Indica a cor utilizada no corpo do form window.

Text Color A cor do texto.Font Name O nome da fonte utilizada.Font Size O tamanho da fonte.

FontEnhancement Melhoramentos da fonte.

Para incluir um Dialog Box na sua aplicação:

1 Clique com o botão direito do mouse na palavra "Windows" localizada no quadroesquerdo.

2 Será mostrado um menu de contexto onde você deve escolher o item New.3 Depois basta clicar no item chamado "Dialog Box".

Conforme mostrado na figura abaixo:

Page 63: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 63/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Table Window

A table window é bastante semelhante ao form window. Basicamente duas características adiferenciam do form window : A table window possui no seu interior um objeto tipo childtable, não sendo permitido a utilização de nenhum outro objeto no seu interior. Esse objeto

child table no interior do form é automaticamente ajustado quando o form tem seu tamanhoalterado, não sendo necessário nenhum esforço de programação para isso.

Os demais comportamentos são idênticos ao do form window.

Um objeto top level do tipo table window.

Uma table window, assim como todos os outros objetos do SQLWindows/32, possui diversas propriedades.Você pode alterar os valores de qualquer uma das propriedades do objeto, através do Customizer   ou do

 Attribute Inspector .

Abaixo estão relacionadas todas as propriedades de um objeto do tipo table window :

Propriedade Descrição

Table Window  O nome interno da table window, utilizado pelo programador.Object Title  O título que aparecerá na barra de títulos da table window quando o programa estiver sendo executado.

AccessoriesEnabled 

Indica se os acessórios estarão visíveis. Os acessórios são a barra deferramentas e a barra de mensagem.

Tool Bar Visible Indica se a barra de ferramentas estará visível.Tool Bar Size É a medida da altura da barra de ferramentas ( em unidades de form

).Tool BarPosition

Indica a localização da barra de ferramentas.

Status Bar

Visible

Indica se a barra de mensagens estará visível.

AutomaticallyCreate

Indica se a table window será criada automaticamente quando aaplicação for executada.

Maximizable Indica se a table window poderá ser maximizada.Minimizable Indica se a table window poderá ser minimizada.System Menu Indica se o menu do sistema, localizado na parte superior esquerda

do objeto, poderá ser utilizado pelo usuário, quando a aplicaçãoestiver em tempo de execução.

Resizable Indica se a table window poderá ter seu tamanho alterado.Initial State Indica o estado inicial (maximizado, minimizado ou normal) da

table window.Icon File Name Informe aqui o nome de um ícone para esta table window.

Page 64: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 64/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Left A coordenada mais à esquerda do objeto.Top A coordenada da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.Lines Per Row Indica a quantidade de linhas de dados que uma linha da table

window terá.Allow RowSizing

Indica se o usuário poderá modificar, em tempo de execução, aaltura das linhas da table window.

BackgroundColor

Indica a cor utilizada no corpo do form window.

Text Color A cor do texto.Font Name O nome da fonte utilizada.Font Size O tamanho da fonte.FontEnhancement

Melhoramentos da fonte.

Discartable Indica se o SQLWindows/32 irá manter todas as linhas no cache datable window, ou se manterá apenas as linhas utilizadas,descartando as demais. O comportamento padrão doSQLWindows/32 é descartá-las.

Max Row inMemory

O número de linhas que a table window manterá no seu cache, ovalor padrão é manter 100 linhas, o máximo é 32.753.

Para incluir uma Table Window na sua aplicação:

1 Clique com o botão direito do mouse na palavra "Windows" localizada no quadroesquerdo.

2 Será mostrado um menu de contexto onde você deve escolher o item New.3 Depois basta clicar no item chamado "Table Window".Conforme mostrado na figura abaixo:

Background Text  –   normalmente utilizado quando se é necessário identificar algunscampos na tela. Não pode ser programado, ou seja, não responde a nenhuma ação dousuário, clicks, edição, etc. Este objeto não possui Message Actions.

Page 65: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 65/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As Propriedades de um objeto tipo Background Text:

Propriedade DescriçãoBackground Text  O texto que aparecerá na aplicação para o usuário.Visible  Indica se o objeto está ou não visível.

Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Justify Indica o tipo de alinhamento do objeto.Background Color Indica a cor utilizada no fundo do objeto.Text Color A cor do texto.Font Name O nome da fonte utilizada.Font Size O tamanho da fonte.FontEnhancement

Melhoramentos da fonte.

Para incluir um objeto Background Text na sua aplicação:

Ative a Paleta de Controles, pressionando Alt 4.

2 Clique no ícone equivalente ao Background Text.

3 Clique na posição onde você deseja colocar o Background Text na sua aplicação.

Todos os demais objetos Child são inseridos na aplicação dessa forma.

Group Box  –  Usado para agrupar informações logicamente relacionadas. Não pode ser programado, ou seja, não responde a nenhuma ação do usuário, clicks, edição, etc. Esteobjeto não possui Message Actions.

As propriedades de um objeto tipo Group Box :

Propriedade DescriçãoGroup Box  O texto que aparecerá na aplicação para o usuário, na parte

superior esquerda do objeto.Visible  Indica se o objeto está ou não visível.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.

Height  A altura do objeto.Background Color  Indica a cor utilizada no fundo do objeto.

Page 66: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 66/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Text Color  A cor do texto.Font Name O nome da fonte utilizada.Font Size O tamanho da fonte.FontEnhancement

Melhoramentos da fonte.

O ícone do objeto Group Box na paleta Controls.

Frame –  Utilizado para fazer molduras. Não pode ser programado, ou seja, não responde anenhuma ação do usuário, clicks, edição, etc. Este objeto não possui Message Actions.

As propriedades de um objeto tipo Frame :

Propriedade DescriçãoVisible  Indica se o objeto está ou não visível.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Corners  Indica o tipo de laterais a ser utilizado no objeto.Border Style  Indica o tipo de borda a ser utilizado no objeto.

Border Thickness Indica a espessura da borda a ser utilizada no objeto.Background Color Indica a cor utilizada no fundo do objeto.Border Color A cor da borda do objeto.

O ícone do objeto Frame na paleta Controls.

Line  –   Utilizado para fazer linhas. Não pode ser programado, ou seja, não responde a

nenhuma ação do usuário, clicks, edição, etc. Este objeto não possui Message Actions.

As propriedades de um objeto tipo Line :

Propriedade DescriçãoVisible  Indica se o objeto está ou não visível.Begin X  O ponto inicial das coordenadas do objeto, no eixo X.Begin Y  O ponto inicial das coordenadas do objeto, no eixo Y.End X  O ponto final das coordenadas do objeto, no eixo X.End Y  O ponto final das coordenadas do objeto, no eixo Y.

Line Style  Indica o tipo de linha a ser utilizado no objeto.

Page 67: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 67/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Line Thickness  Indica a espessura da linha a ser utilizada no objeto. Line Color  A cor da linha.

O ícone do objeto Line na paleta Controls.

Data Field  –  É um dos objetos que podem ser utilizados para a digitação e visualização deinformações na tela. Um datafield pode receber informações tipo Number, Date/Time,String e Long String.

As propriedades de um objeto tipo Data Field:

Propriedade DescriçãoData Field  O nome do objeto utilizado internamente pelo programador.Visible  Indica se o objeto está ou não visível.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Data Type  O tipo de dado do conteúdo do objeto.Max Data Length  A quantidade máxima de caracteres que o objeto irá suportar.Editable  Indica se o conteúdo do objeto poderá ser editado pelo usuário.Border  Indica se o objeto terá uma borda.

Justify  Indica a forma como o conteúdo do objeto aparecerá alinhado parao usuário.

Format  Indica a formatação a ser utilizada no objeto.Input Mask   Indica a máscara de edição a ser utilizada no objeto quando o

usuário estiver digitando os dados.Country  As predefinições referentes ao país.Background Color  Indica a cor utilizada no fundo do objeto.Text Color  A cor do texto.Font Name  O nome da fonte utilizada.Font Size  O tamanho da fonte.

FontEnhancement  Melhoramentos da fonte.

O ícone do objeto Data Field na paleta Controls.

Multiline Text  –  Normalmente é utilizado para a digitação e visualização de campos de

textos longos, cartas, observações, arquivos padrão texto, logs de erro, etc.

Page 68: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 68/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As propriedades de um objeto tipo Multiline Text:

Propriedade DescriçãoMultiline Field  O nome do objeto utilizado internamente pelo programador.

Visible  Indica se o objeto está ou não visível.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.String Type  O tipo de string do conteúdo do objeto. Pode ser string ou long

string.Max Data Length  A quantidade máxima de caracteres que o objeto irá suportar.Editable  Indica se o conteúdo do objeto poderá ser editado pelo usuário.Border  Indica se o objeto terá uma borda.

Word Wrap  Se Yes, o SQLWindows/32 quebra as frases automaticamente,continuando a digitação na linha seguinte.Vertical Scroll  Indica se o objeto terá a barra de rolagem na sua lateral direita. Background Color  Indica a cor utilizada no fundo do objeto.Text Color  A cor do texto.Font Name  O nome da fonte utilizada.Font Size  O tamanho da fonte.FontEnhancement 

Melhoramentos da fonte.

O ícone do objeto Multiline Text na paleta Controls.

Child Table  –   Executa todas as operações e herda todas as características do objetoTopLevel Table Window, exceto a possibilidade de ter suas dimensões alteradas pelousuário em tempo de execução. Numa Table Window é possível carregar dados do bancode dados e então permitir que o usuário os edite nas próprias células. É um objeto

 proprietário da Centura para edição de dados em forma tabular.

As propriedades de um objeto tipo Child Table :

Propriedade DescriçãoChild Table  O nome do objeto utilizado internamente pelo programador.Visible  Indica se o objeto está visível ou não.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.

Lines Per Row  Informe aqui a quantidade de linhas de dados que uma linha da

Page 69: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 69/580

Programando com o Centura Team Developer 2000

Página PAGE 582

child table terá.Allow Row Sizing  Indica se o usuário poderá modificar, em tempo de execução, a

altura das linhas da child table.Background Color  Indica a cor de fundo da child table.Text Color  A cor do texto.

Font Name  O nome da fonte utilizada.Font Size  O tamanho da fonte.FontEnhancement 

Melhoramentos da fonte.

Discartable  Indica se o SQLWindows/32 irá manter todas as linhas no cacheda table window, ou se manterá apenas as linhas utilizadas,descartando as demais linhas. O comportamento padrão doSQLWindows/32 é descartá-las.

Max Row inMemory 

O número de linhas que a table window manterá no seu cache. Ovalor padrão é manter 100 linhas, o máximo é 32.753.

O ícone do objeto Child Table na paleta Controls.

Column  –  Cada coluna do banco de dados é mostrada numa table window num objetoColumn. Pode ser personalizada pelo usuário em tempo de execução, tendo sua larguraalterada. Pode mostrar informações tipo string, date/time, number e long string.

As propriedades de um objeto tipo Column:

Propriedade DescriçãoColumn  O nome do objeto utilizado internamente pelo programador.Object Title  O título da coluna. Visible  Indica se o objeto está ou não visível.Column Width  A largura do objeto.Data Type  O tipo de dado do conteúdo da coluna.Max Data Length  A quantidade máxima de caracteres que o objeto irá suportar.Editable  Indica se o conteúdo do objeto poderá ser editado pelo usuário.

Cell Type  Indica o tipo da célula.Sorted  Quando o tipo da célula é Drop Down List, classifica os valoresem ordem alfabética crescente.

Vertical Scroll  Quando o tipo da célula é Multiline, indica se a barra de rolagemestará visível.

Auto Drop Down  Quando o tipo da célula é Drop Down List, indica se a lista seráaberta automaticamente, quando o usuário posicionar o foco nacélula.

Allow TextEditing 

Quando o tipo da célula é Drop Down List, indica se o usuário poderá editar valores que não estejam presentes na lista.

Checked Value  Quando o tipo da célula é Check, indica o valor atribuído à coluna, quando o

usuário selecionar o objeto. 

Page 70: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 70/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Unchecked Value  Quando o tipo da célula é Check, indica o valor atribuído à coluna,quando o usuário desfazer a seleção no objeto.

Ignore Case  Quando o tipo da célula é Check, indica se o SQLWindows/32 iráignorar o tipo de letra utilizado. Maiúsculas e minúsculas.

Justify  Indica a forma como o conteúdo do objeto aparecerá alinhado para

o usuário.Format  Indica a formatação a ser utilizada no objeto.Input Mask   Indica a máscara de edição a ser utilizada no objeto, quando o

usuário estiver digitando os dados.Country  As predefinições referentes ao país.Word Wrap  Se Yes, o SQLWindows/32 quebra as frases automaticamente,

continuando a digitação na linha seguinte.

O ícone do objeto Column na paleta Controls.

Pushbutton  –   É utilizado normalmente para se ativar alguma ação no sistema, são os botões de comando.

As propriedades de um objeto tipo Pushbutton :

Propriedade Descrição

Object Name  É o nome do objeto, que será utilizado pelo programador.Object Title  É o título do objeto.Visible  Indica se o objeto está visível ou não.Left  As coordenadas mais à esquerda do objeto.Top  As coordenadas da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.File Name  O nome de uma imagem para ser mostrada dentro do objeto.PictureTransparent

Color 

Indica a cor que será substituída pela cor de fundo do objeto. Essacaracterística funciona apenas no caso das imagens tipo bitmap.

KeyboardAccelerator 

O atalho que ativa o objeto.

Background Color  Indica a cor do fundo do objeto.Text Color  A cor do texto no objeto.Font Name O tipo da fonte do texto utilizado no objeto.Font Size O tamanho da fonte utilizada no objeto.FontEnhancement

O melhoramento da fonte do texto utilizada no objeto.

Page 71: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 71/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O ícone do objeto Push Button na paleta Controls.

Radio Button  –   São normalmente agrupados em um Group Box e utilizados para que o usuário escolha umaopção única, quando não é permitido múltipla escolha.

As propriedades de um objeto tipo Radio Button :

Propriedade DescriçãoObject Name  O nome interno do objeto, utilizado pelo programador.Object Title  O título do objeto.Visible Indica se o objeto está visível.Left As coordenadas mais à esquerda do objeto.

Top As coordenadas da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.Background Color Indica a cor do fundo do objeto.Text Color A cor do texto no objeto.Font Name O tipo da fonte do texto utilizado no objeto.Font Size O tamanho da fonte utilizada no objeto.FontEnhancement

O melhoramento da fonte do texto utilizada no objeto.

O ícone do objeto Radio Button na paleta Controls.

Check Box  –   Diferentemente dos Radio Buttons, os Check Boxes permitem múltiplasescolhas.

As propriedades de um objeto tipo Check Box :

Propriedade DescriçãoObject Name  O nome interno do objeto, utilizado pelo programador.Object Title  O título do objeto.Visible Indica se o objeto está visível.Left As coordenadas mais à esquerda do objeto.Top As coordenadas da parte superior do objeto.Width A largura do objeto.Height A altura do objeto.Background Color Indica a cor do fundo do objeto.Text Color A cor do texto no objeto.

Font Name O tipo da fonte do texto utilizado no objeto.

Page 72: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 72/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Font Size O tamanho da fonte utilizada no objeto.FontEnhancement

O melhoramento da fonte do texto utilizada no objeto.

O ícone do objeto Check Box na paleta Controls.

Option Button  –   Possui um comportamento parecido com o do PushButton, porém, ocontrole da aparência up e down do option button é feita pelo programador. Extremamenteútil quando a tarefa não pode ser acionada novamente. Esse objeto é amplamente usado em

 barras de ferramentas.

As propriedades de um objeto tipo Option Button :

Propriedade DescriçãoObject Name  É o nome do objeto, que será utilizado pelo programador.Object Title  É o título do objeto.Visible  Indica se o objeto está visível ou não.Left  As coordenadas mais à esquerda do objeto.Top  As coordenadas da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.

File Name  O nome de uma imagem para ser mostrada dentro do objeto.PictureTransparentColor 

Indica a cor que será substituída pela cor de fundo do objeto. Essacaracterística funciona apenas no caso das imagens tipo bitmap.

Button Style  É o estilo do botão, pode ser Palette, Radio ou Check.Background Color  Indica a cor do fundo do objeto.Text Color  A cor do texto no objeto.Font Name  O tipo da fonte do texto utilizado no objeto.Font Size  O tamanho da fonte utilizada no objeto.Font

Enhancement 

O melhoramento da fonte do texto utilizada no objeto.

O ícone do objeto Option Button na paleta Controls.

List Box  –  Normalmente os List Box são utilizados para mostrar uma lista de dados quegeralmente vem do banco de dados. Permite também a seleção de vários elementos da lista.

Page 73: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 73/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As propriedades de um objeto tipo List Box :

Propriedade DescriçãoObject Name  O nome do objeto, utilizado pelo programador.Visible  Indica se o objeto está visível ou não.

Left  As coordenadas mais à esquerda do objeto.Top  As coordenadas da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Multiple Selection  Indica se será permitido ao usuário escolher mais de um elemento

da lista.Sorted  Indica se a lista de itens do objeto estará ordenada

automaticamente.Vertical Scroll  Indica se o list box terá uma barra de rolagem vertical na sua

lateral direita.Background Color  Indica a cor do fundo do objeto.Text Color A cor do texto no objeto.Font Name O tipo da fonte do texto utilizado no objeto.Font Size O tamanho da fonte utilizada no objeto.FontEnhancement

O melhoramento da fonte do texto utilizada no objeto.

O ícone do objeto List Box na paleta Controls.

Combo Box –  Normalmente os Combo Box são utilizados para mostrar uma lista de dadosque geralmente vem do banco de dados. Difere do ListBox no visual, pois ocupa o espaçode um datafield e permite apenas a seleção de um elemento.

As propriedades de um objeto tipo Combo Box :

Propriedade Descrição

Object Name  O nome do objeto utilizado pelo programador.Visible  Indica se o objeto está visível ou não.Left  As coordenadas mais à esquerda do objeto.Top  As coordenadas da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.String Type  O tipo de dado do combop box, pode ser string ou long string.Max Data Length  O número máximo de caracteres que o objeto pode digitar num

combo box.Editable  Indica se o usuário poderá digitar algum texto no combo box.Input Mask   Indica a máscara de edição a ser utilizada no objeto quando o

usuário estiver digitando os dados.

Page 74: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 74/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sorted Indica se a lista de itens do objeto estará ordenadaautomaticamente.

Always Show List Indica se a lista do combo box estará sempre aberta.Vertical Scroll Indica se o combo box terá uma barra de rolagem vertical na sua

lateral direita.

Background Color Indica a cor do fundo do objeto.Text Color A cor do texto no objeto.Font Name O tipo da fonte do texto utilizado no objeto.Font Size O tamanho da fonte utilizada no objeto.FontEnhancement

O melhoramento da fonte do texto utilizada no objeto.

O ícone do objeto Combo Box na paleta Controls.

Picture –  Normalmente utilizado para apresentar imagens gráficas, ícones, figuras.

As propriedades de um objeto tipo Picture :

Propriedade DescriçãoObject Name  O nome interno do objeto.Visible  Indica se o objeto está visível ou não.Left  As coordenadas mais à esquerda do objeto.Top  As coordenadas da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Editable Indica se o usuário poderá alterar o conteúdo do objeto.Picture Contents O nome de uma imagem para ser mostrada dentro do objeto.TransparentColor

Indica a cor que será substituída pela cor de fundo do objeto. Essacaracterística funciona apenas no caso das imagens tipo bitmap.

Picture Fit Indica o estilo do preenchimento do objeto, pode ser:Scale - A imagem é mostrada no seu tamanho original.Size to Fit - A imagem é mostrada de acordo com o tamanho doobjeto picture.

Size for Best Fit  - A imagem é mostrada no tamanho em que émelhor visualizada, baseando-se no tamanho do objeto picture.Scale Width O percentual da escala ( largura ); o valor padrão é 100.Scale Height O percentual da escala ( altura ); o valor padrão é 100.Tile to Parent Indica se o objeto irá ocupar todo o espaço do objeto pai.Corners Indica o tipo de laterais a ser utilizado no objeto.Border Style Especifica o estilo da linha da borda.Border Thickness A espessura da linha da borda do objeto.Background Color Indica a cor do fundo do objeto.Border Color Indica a cor da borda do objeto.

Page 75: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 75/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O ícone do objeto Picture na paleta Controls.

Custom Control  –  É utilizado para que objetos de terceiros possam ser usados no Centura.

As propriedades de um objeto tipo Custom Control :

Propriedade DescriçãoObject Name  O nome do objeto utilizado internamente pelo programador.Object Title  É o nome que aparecerá no título do objeto.Current DLL  Mostra o nome da DLL que define a classe do objeto.MS Windows

Class Name 

É o nome da classe do objeto definido na DLL. Este nome é

fornecido pelo autor da DLL.Visible  Indica se o objeto estará ou não visível.Left  A coordenada mais à esquerda do objeto.Top  A coordenada da parte superior do objeto.Width  A largura do objeto.Height  A altura do objeto.Border  Indica se o objeto terá uma borda.Etched Border  Indica se o objeto terá uma borda tipo etched.Vertical Scroll  Indica se a barra de rolagem vertical do objeto estará visível.

Horizontal Scroll  Indica se a barra de rolagem horizontal do objeto estará visível.

Hollow Window  Indica se o objeto terá o comportamento equivalente a um group box, ou seja, se você poderá colocar outros objetos ocupando a suaárea, sem que o Centura sobreponha o objeto.

Tab Stop  Os valores disponíveis são:None   –  O usuário não poderá mover o foco para o objeto.Group   –  O primeiro ou o último item do grupo poderá receber ofoco através da tecla Tab. Entre os demais objetos, o foco éalterado através das teclas para cima e para baixo.Tab  - O usuário poderá colocar o foco no objeto utilizando a teclaTab.

Tile to Parent  Indica se o objeto irá ocupar todo o espaço do objeto pai.

MS WindowsStyle 

Identifica um estilo para o objeto. Essa informação é específica doobjeto, consulte o seu manual.

MS WindowsExtended Style 

Identifica um estilo estendido para o objeto. Essa informação éespecífica do objeto, consulte o seu manual.

Background Color  A cor de fundo do objeto.Text Color  A cor do texto no objeto.Font Name  O tipo da fonte do texto utilizado no objeto.Font Size  O tamanho da fonte utilizada no objeto.FontEnhancement 

O melhoramento da fonte do texto utilizada no objeto.

Page 76: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 76/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O ícone do objeto Custom Control na paleta Controls.

Tipos de Menus

Os menus são de grande utilidade num aplicativo, pois é através deles que o usuário“chama” por uma determinada  janela. Menus são como os outros objetos doSQLWindows/32, porém, não estão na paleta de controles e não podem recebermensagens. Os menus podem ser colocados na aplicação diretamente no outline, através doAssistente de Código, ou utilizando-se o Editor de Menus. Apenas os objetos mdi, formwindow e top level table window permitem a utilização de menus. O SQLWindows/32

oferece ao desenvolvedor os seguintes tipos de menus :

  Popup menu  Menu item  Menu separator  Menu row  Menu column   Named menus  Windows menu

Esses tipos de menus, o Editor de menus e a criação de menus dinamicamente em tempode execução, serão demonstrados agora detalhadamente.

Popup menu

Um popup menu é utilizado para agrupar outros menus numa lista.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação.

O popup menu no outline, em execução e o Coding Assistant.

Page 77: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 77/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Propriedades de um popup menu :

Propriedade DescriçãoMenu Title Este é o nome que aparece na barra de menus quando a aplicação

está sendo executada.

Enabled When Você pode indicar uma condição para que o menu seja habilitadoou desabilitado, essa condição será avaliada sempre que a barra demenus for desenhada pela aplicação. O valor da condição éavaliado e se retornar TRUE o popup menu é habilitado, seretornar FALSE o mesmo aparece desabilitado na barra de menus.

Essa condição é avaliada em duas ocasiões:  Após a execução da mensagem SAM_Create, quando a janela

é desenhada pela primeira vez, e antes da mensagemSAM_CreateComplete.

  Quando a função SalDrawMenuBar for executada.Status Text O texto informado nesta propriedade é mostrado na barra de status

do form window, top level table window ou mdi window, quandoo foco é posicionado no menu. O menu não precisa ser ativado

 para que o texto seja mostrado na barra de status, basta que sejaselecionado.

Menu Item

Um menu item é o item de menu que efetivamente permite que o programa execute

determinadas ações ao ser ativado. Menu items são os elementos que compõem um popupmenu.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação.

O menu item Copiar  em destaque no outline, em execução e o Coding Assistant.

Propriedades de um menu item:

Propriedade Descrição

Page 78: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 78/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Menu Item Este é o nome que aparece na barra de menus quando a aplicaçãoestá sendo executada.

Keyboard Accelerator Uma combinação de teclas que é utilizada como atalho paraacionar um menu. A combinação de teclas é mostrada no menu àdireita do nome do menu item.

Você pode utilizar o Assistente de Código para ter a lista decombinações disponíveis.

Status Text O texto informado nesta propriedade é mostrado na barra de statusdo form window, top level table window ou mdi window, quandoo foco é posicionado no menu. O menu não precisa ser ativado

 para que o texto seja mostrado na barra de status, basta que sejaselecionado.

Enabled When Você pode indicar uma condição para que o menu seja habilitadoou desabilitado, essa condição será avaliada seguindo-se as regrasabaixo :

A condição de um menu item localizado na barra de menus daaplicação é avaliada em duas ocasiões :  Após a execução da mensagem SAM_Create, quando a janela

é desenhada pela primeira vez, e antes da mensagemSAM_CreateComplete.

  Quando a função SalDrawMenuBar for executada.

A condição de um menu item localizado no interior de um popupmenu é avaliada apenas quando o popup menu é desenhado, ou

seja, quando o usuário "abrir" o popup menu.O valor da condição é avaliado e se retornar TRUE o menu item éhabilitado, se retornar FALSE o mesmo aparece desabilitado.

Checked When Você pode indicar uma condição para que o menu apareçamarcado (checked ).Quando a condição retornar TRUE, o menu aparece com umamarca, quando a condição retornar FALSE, a marca é retirada.A marca de checked é mostrada à esquerda do nome do menu.

Menu Actions Os comandos SAL que serão executados quando o usuário acionaro menu item.

Menu Separator

Um menu separator é uma linha horizontal colocada entre menus items, utilizada paraseparar visualmente um grupo de menus relacionados. Sua função é apenas estética, nãoinfluenciando em nada na lógica da aplicação.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação.

Page 79: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 79/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O menu separator em destaque no outline, em execução e no Coding Assistant.

O menu separator não possui propriedades.

Menu Row

Um menu row é utilizado para iniciar uma nova linha de menus a partir do local onde é posicionado. Sua função é apenas estética, não influenciando em nada na lógica daaplicação.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação.

O menu row em destaque no outline, sua visualização em execução e no CodingAssistant.

Um menu row não possui propriedades.

Menu column

Um menu column é utilizado para agrupar itens de menu em colunas verticais a partir dolocal onde é posicionado. Sua função é apenas estética, não influenciando em nada nalógica da aplicação.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação.

Page 80: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 80/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O menu column em destaque no outline, sua visualização em execução e no CodingAssistant.

Um menu column não possui propriedades.

Named menus

Através de um named menu é possível compartilhar uma definição de menu popup portoda a aplicação. Esse compartilhamento de menus pode ser feito através de sua utilizaçãona seção Named Menu de qualquer objeto top level table window, form window ou mdi daaplicação.

Você pode criar um menu dinamicamente em qualquer posição da tela.

Para definir um named menu que poderá ser compartilhado por toda a aplicação, defina-ona seção chamada Named Menus do Global Declarations. Os named menus definidos numform window, top level table window ou num mdi só poderão ser compartilhados nos

 próprios objetos onde foram definidos e nos seus objetos filhos.

Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da suaaplicação. Observe na figura abaixo a definição e a utilização de um named menu numform window.

Um named menu em destaque no outline e no Coding Assistant.

Propriedades de um named menu:

Propriedade Descrição

Page 81: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 81/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Menu Este é o nome que você deverá utilizar quando quiser utilizar onamed menu na aplicação.

Menu Title Este é o nome que aparece na barra de menus quando a aplicaçãoestá sendo executada.

Enabled When Você pode indicar uma condição para que o menu seja habilitado

ou desabilitado, essa condição será avaliada sempre que a barra demenus for desenhada pela aplicação. O valor da condição éavaliado e se retornar TRUE o menu é habilitado, se retornarFALSE o mesmo aparece desabilitado na barra de menus.

Essa condição é avaliada em duas ocasiões:  Após a execução da mensagem SAM_Create, quando a janela

é desenhada pela primeira vez, e antes da mensagemSAM_CreateComplete.

  Quando a função SalDrawMenuBar for executada.Status Text O texto informado nesta propriedade é mostrado na barra de status

do form window, top level table window ou mdi window quando ofoco é posicionado no menu. O menu não precisa ser ativado paraque o texto seja mostrado na barra de status, basta que sejaselecionado.

Windows menu

Windows menu é um tipo especial de popup menu que mostra os nomes de todas as janelasque estão abertas e que sejam filhas da janela em que o menu está localizado, tornando

fácil a mudança de uma janela para outra. Isso é feito sem que seja necessário qualqueresforço de programação.

O Editor de menus

O SQLWindows/32 possui um editor de menus que você pode utilizar para auxiliá-lo nadefinição de menus. O Editor de Menus possui uma interface gráfica amigável que aplicano outline todas as configurações feitas.

Você pode ativar o editor de menus das seguintes formas:

  Clique no form window, top level table window ou mdi onde você deseja criar o menu.  Acione o menu Component | Menu Editor....

Ou

  Clique com o botão direito do mouse no form window, top level table window ou mdionde você deseja criar o menu.

   No menu de contexto que irá aparecer acione o menu Menu Editor....

Page 82: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 82/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Editor de Menus.

Menus em tempo de execução

Você pode criar um popup menu dinamicamente em tempo de execução, em qualquer posição da tela da sua aplicação, com a função SalTrackPopupMenu ( hWndObj ,sNomeDoMenu , nFlags , nX , nY ).

Onde :

hWndObj É o window handle do objeto que irá processar as mensagens enviadas

 pelo menu.sNomeDoMenu

O nome de um named menu que precisa estar definido em um destes trêslocais:  na seção Named Menus do objeto informado em hWndObj  na seção Named Menus do objeto pai do objeto hWndObj  seção Named Menus do Global Declarations

nFlags Especifica como o popup menu será mostrado. Você pode combinar osvalores dos flags com o operador OR ( | ) .Os flags disponíveis são:TPM_LeftButton - O usuário pode clicar nos itens do menu com o botãoesquerdo.

TPM_RightButton - O usuário pode clicar nos itens do menu com o botão direito.TPM_CenterAlign - Centraliza o menu horizontalmente na janela.TPM_CursorX - Mostra o menu na posição do mouse, ao invés de usar a

 posição nX.TPM_CursorY - Mostra o menu na posição do mouse, ao invés de usar a

 posição nY.TPM_LeftAlign - Alinha o menu horizontalmente à esquerda na janela.TPM_RightAlign - Alinha o menu horizontalmente à direita na janela.

nX e nY As coordenadas da tela onde o menu será desenhado. Esses valores sãoignorados caso você utilize TPM_CursorX e TPM_CursorY em nFlags.

Page 83: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 83/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Observe o código abaixo:

Pushbutton: pbMENU_EDITAROn SAM_Click

Call SalTrackPopupMenu( hWndForm,'menuEditar',TPM_CursorX | TPM_CursorY | TPM_LeftAlign, 0 ,0 ) 

Esse código, quando executado, comporta-se conforme mostrado na figura que se segue.

O menu dinâmico sendo utilizado.

Page 84: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 84/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 85: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 85/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 3O acesso ao SQLBase O Centura SQLBase

Alguns comandos básicosSELECT , INSERT , UPDATE , DELETE , ALTER TABLE, COMMIT,

CREATE INDEX, CREATE TABLE, CREATE VIEW, DROP INDEX,DROP TABLE, DROP VIEW e ROLLBACK.

Tabela de Comandos do Centura SQLBaseTabela de Funções do Centura SQLBase

Usando o Centura SQLBase através do CTDQuando utilizar SqlPrepare / SqlExecute ou SqlPrepareAndExecute ?

Page 86: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 86/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Centura SQLBase

O SQLBase é o Sistema Gerenciador de Banco de Dados Relacional (SGBDR) da Centura SoftwareCorporation, com implementação completa da linguagem SQL. Ele foi desenhado e construído especialmente

 para redes de PC’s na plataforma Intel e suporta várias configurações de LAN/WAN.

As plataformas SQLBase hoje disponíveis são: NetWare 3.x e 4.x, MS Windows 3.1 eWindows for Workgroups 3.11 (16-bits), Windows NT e Windows 95 (32-bits).

 Na plataforma 16-bits, o SQLBase suporta mono-usuários com comunicação local eservidores remotos. Nas outras plataformas, o SQLBase suporta múltiplos usuários comcomunicação remota, através de rede e também comunicação local.

As configurações atualmente existentes para o SQLBase vão desde o SQLBase para Smartcard, utilizado emsmart cards num único processador (chip de memória), passando pelo SQLBase Lite, embutido emaplicações de larga comercialização e baixo custo. Há ainda as tradicionais versões do protuto: a versãoSQLBase Desktop mono-usuário, e as versões multi-usuário do SQLBase Server para 5, 10, 25, 50 e usuários

ilimitados.

Todas as versões do banco de dados SQLBase caracterizam-se por :  alto desempenho ;   baixo consumo de memória –  devido ao “small footprint” gerado ;   escalabilidade –  desde smart cards até ambientes multi-usuário e plataforma ;  necessidade mínima, próxima de zero, de administração de suas bases de dados .

Page 87: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 87/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Alguns comandos básicos

O Centura SQLBase possui uma série de comandos que podem ser utilizados pelo desenvolvedor e peloadministrador das bases de dados. Mostraremos agora os principais comandos a serem utilizados nodesenvolvimento de aplicações com o CTD. Os comandos para administração do servidor, e das bases dedados, não serão abordados por não fazerem parte do propósito deste livro. Os comandos mais utilizados no

desenvolvimento de aplicações client/server, para a manutenção de tabelas, visões e índices são mostradosem detalhes abaixo :

SELECT

Este comando encontra, recupera e mostra dados. Ele especifica as seguintes informações :

• As tabelas ou visões a serem procuradas no banco de dados• As condições de procura • A sequência na qual os dados são mostrados 

Os comandos SELECT são recursivos; eles podem ser aninhados dentro do SELECT principal.

Sintaxe :

SELECT [ ALL ] [ DISTINCT ] <expressao>FROM <nome_da_tabela> / <nome_da_visao>WHERE <condicao_pesquisa>[GROUP BY <constante> / <nome_da_coluna>][HAVING <condicao_pesquisa> ]

[ORDER BY constante [ASC] [DESC]] nome_da_coluna ][FOR UPDATE OF nome_da_coluna ][UNION ]

Argumentos :

ALL O default para um comando SELECT : recuperar todas aslinhas.

DISTINCT  Não mostra linhas duplicadas.Expressao Uma lista de seleção contendo expressões separadas por

vírgulas. Uma expressão pode ser um nome de coluna, uma

constante, uma variável assinalada, o resultado de uma funçãoou uma palavra-chave do sistema.Um máximo de 255 expressões são permitidas na lista.

FROM<nome_da_tabela>

<nome_da_visao>

Contém os nomes de tabelas ou visões a partir das quais umconjunto de linhas é resultante.

WHERE<condicao_pesquisa>

Especifica uma condição de procura para as tabelas básicas ouvisãos.A condição de procura não pode conter funções agregadas.

GROUP BY <constante>

<nome_da_coluna>

Esta cláusula agrupa as linhas resultantes da consulta, de

acordo com os nomes de coluna da cláusula.Se a coluna pela qual o agrupamento ocorre é uma expressão, você deve

Page 88: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 88/580

Programando com o Centura Team Developer 2000

Página PAGE 582

especificar um número que indica a sua posição relativa na lista de seleção,mas apenas se a expressão tem mais de uma coluna.

HAVING<condicao_pesquisa>

Esta cláusula permite estabelecer uma condição de procura porum grupo de linhas resultantes de um GROUP BY ou colunasagrupadas.

ORDER BYconstante [ASC] [DESC]]nome_da_coluna ]

Especifica a ordem das linhas em uma tabela de resultados. Aslinhas podem ser ordenadas por mais de uma coluna.Se a coluna de ordenação é derivada de uma função ouexpressão aritmética, a coluna deve ser especificada por uminteiro que signifique o número relativo da sua posição nocomando SELECT.Cada nome de coluna ou número, pode ser opcionalmenteseguido de ASC ou DESC, indicando ordenação ascendente oudescendente.

[FOR UPDATE OFnome_da_coluna ]

Se você está usando um cursor nomeado, esta cláusula trava partes da tabela, de forma que atualizações e deleções sub-

sequentes não causam incompatibilidades entre usuáriosconcorrentes.

Exemplos :

SELECT * FROM CUSTOMER;

SELECT DISTINCT JOB FROM EMP;

SELECT EMPNO,SALARY/12 FROM EMPSAL WHERE SALARY > 400;

SELECT DEPTNO, MIN(SALARY), AVG(SALARY)FROM EMP, EMPSALWHERE EMP.EMPNO=EMPSAL.EMPNOGROUP BY DEPTNO;

SELECT * FROM EMPWHERE JOB IN(SELECT JOB FROM EMP WHERE LNAME = 'Drape');

SELECT * FROM ORDERSWHERE CUSTNO=2ORDER BY ORDERDATE;

SELECT LNAME FROM EMPWHERE DEPTNO = 2500FOR UPDATE OF JOB;

INSERT

Este comando insere linhas de dados em uma tabela ou visão, não existindo um número

máximo de linhas que podem ser inseridas. No caso das visões, as linhas são inseridas natabela base.

Page 89: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 89/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você deve possuir privilégio INSERT na tabela para executar este comando.Se o banco de dados possui integridade referencial definida, as regras de integridadedevem ser seguidas, para que se possa incluir dados em uma tabela pai, contendo umachave primária, ou em uma tabela dependente, contendo uma chave estrangeira.

Sintaxe :

INSERT INTO <nome_da_tabela> [ <nome_da_coluna> ]<nome_da_visao>

VALUES ( <constantes> )( <variaveis_bind> )( <palavra_chave> )

[ADJUSTING <nome_cursor> ]subselect

Page 90: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 90/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Argumentos :

<nome_da_tabela> Nome de uma tabela existente no banco de dados.<nome_da_visao> Nome de uma visão existente no banco de dados.<nome_da_coluna> Um ou mais nomes de colunas na tabela ou visão

especificada, para as quais serão fornecidos valores. Vocênão pode omitir um nome de coluna ou inserir nulos emcolunas NOT NULL.

<constantes><variaveis_bind><palavra_chave>

Esta cláusula contém uma linha de valores de colunas aserem inseridos. Os valores podem ser constantes, variáveisassinaladas ou palavras-chave do sistema.Separe com vírgulas os valores de colunas.

<nome_cursor> Esta cláusula é usada para programação de conjuntos deresultados (result sets). Ela permite que o usuário insira umalinha sem invalidar o conjunto de resultados corrente.As linhas inseridas são posicionadas no final do conjunto deresultados e do banco de dados.

subselect Insere linhas provenientes de uma tabela de resultados, produzida por um comando SELECT. O número de colunasrecuperadas deve ser igual ao número de colunas a sereminseridas.Você não pode usar a cláusula ORDER BY no sub-select.Você não pode usar a cláusula UNION no sub-select, mas

 pode usar uma visão contendo esta cláusula.

Exemplos :

INSERT INTO EMP VALUES (1001,‘Carver’,‘Dan’,2500,01-APR-1994, ‘Manager’)

INSERT INTO EMP (EMPNO,LNAME,FNAME,HIREDATE)(1002,’Murphy’,’Bill’,17-APR-1994)

INSERT INTO EMP VALUES (1003,’Johnson’,’Bob ”Bo”’, 2500,01-FEB-1994,‘Analyst’) 

UPDATE

Este comando atualiza valores em uma ou mais colunas de uma tabela ou visão, baseadoem condições de procura específicas.

Você deve possuir o privilégio UPDATE nas colunas da tabela ou da visão.

Uma mensagem de erro é retornada se as regras de integridade dos dados forem violadas por um comando UPDATE.

Sintaxe :

UPDATE <nome_da_tabela>

Page 91: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 91/580

Programando com o Centura Team Developer 2000

Página PAGE 582

<nome_da_visao> [ <nome_relacionado> ]SET <nome_da_coluna> = <expressao>

 NULL[WHERE <condicao_de_pesquisa> ]

Argumentos :

<nome_da_tabela> Identifica uma tabela existente. Somente colunas de tabelascriadas pelo usuário podem ser atualizadas.

<nome_da_visao> Identifica uma visão existente. Você não pode atualizar umavisão baseada em mais de uma tabela.

<nome_relacionado> Um nome relacionado deve ser especificado se a condição de procura envolve uma sub-consulta relacionada.

<nome_da_coluna> Identifica as colunas a serem atualizadas em uma tabela ouvisão.Colunas derivadas de uma expressão aritmética, ou uma função,

não podem ser atualizadas.SET Se o valor de atualização for NULL, a coluna deve ter sido

definida de forma a aceitar valores nulos.

Se a coluna a ser atualizada é um índice único, o valor deatualização deve ser único, ou um erro será retornado.

Se o valor de atualização é uma expressão string na qual duas oumais strings são concatenadas, o tamanho resultante da stringnão pode exceder 254 caracteres.

WHERE<condicao_de_pesquisa> A condição de procura qualifica um conjunto de linhas paraatualização.

Exemplos :

UPDATE EMPSAL SET SALARY = 45000 WHERE EMPNO= 1004;

UPDATE EMPSAL SET SALARY = SALARY*1.10WHERE EMPNO IN(SELECT EMPNO FROM EMP WHERE DEPTNO = 2500);

UPDATE EMPSAL SET SALARY= 40000WHERE CURRENT OF EMPCURSOR;

DELETE

Este comando apaga uma ou mais linhas que satisfazem a condição de procura de umaúnica tabela ou visão.Para executá-lo, você deve possuir privilégio DELETE na tabela.

A sintaxe do comando DELETE :

DELETE FROM <nome_da_tabela>

Page 92: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 92/580

Programando com o Centura Team Developer 2000

Página PAGE 582

<nome_da_visao> [<nome_relacionado>][ WHERE <condicao_de_pesquisa> ]

[ CURRENT OF <nome_cursor> ]

Argumentos :

nome_da_tabela Nome de tabela especificado por qualquer usuário, com privilégios de deleção.

nome_da_visao Nome de visão especificado por qualquer usuário com, privilégios de deleção.

nome_relacionado Um nome relacionado pode ser usado dentro da condição de procura para designar a tabela ou a visão.

WHEREcondicao_de_pesquisa

A condição de procura qualifica um conjunto de linhas paradeleção.Obs : Se você não especificar uma condição para o comandoDELETE, todas as linhas da tabela serão apagadas.

CURRENT OFnome_cursor

Um comando DELETE com esta cláusula é chamado“posicional” ou “controlado por cursor”. Este tipo de atualização requer dois cursores abertos:

-  Cursor 1, associado a um comando SELECT;-  Cursor 2, associado a um comando DELETE.

Um nome de cursor deve ser associado ao Cursor 1, antesque este comando seja executado.

Exemplos :

DELETE FROM emp WHERE codemp = 1234

DELETE FROM empsal WHERE codemp IN ( SELECT codemp FROM empWHERE coddepto = 12 )

DELETE FROM hitórico

ALTER TABLE

Este comando pode ser utilizado para executar as seguintes funções :- Adicionar, apagar ou modificar uma coluna.- Renomear uma coluna ou tabela.

As visões que fazem referência a colunas ou tabelas apagadas ou renomeadas, sãoautomaticamente apagadas. Já os comandos pré-compilados que referenciam colunas outabelas apagadas, ou renomeadas, não são apagados.

Sintaxe :

ALTER TABLE <nome_da_tabela>

Page 93: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 93/580

Programando com o Centura Team Developer 2000

Página PAGE 582

DROP <nome_da_coluna>ADD <nome_da_coluna> <tipo_de_dado> [( tamanho)]

[NOT NULL][NOT NULL WITHDEFAULT]

RENAME <nome_da_coluna> <novo_nome_da_coluna>TABLE <novo_nome_da_tabela>MODIFY <nome_da_coluna> <tipo_de_dado> [( tamanho)]

[NULL][NOT NULL][NOT NULL WITHDEFAULT]

Argumentos :

ADD Adiciona uma coluna em uma tabela. As colunas são criadas damesma forma que no comando CREATE TABLE.ADD é a cláusula default se nenhuma cláusula for especificada.

DROP Remove uma coluna de uma tabela. Se a coluna possui dados, osdados são perdidos. Você não pode apagar: uma coluna indexada,uma coluna pertencente a uma chave, colunas do catálogo dosistema.

MODIFY Altera os atributos de uma coluna.Você pode aumentar o tamanho de uma coluna caracter, mas nãodiminuí-lo.Você não pode alterar o tipo de dado da coluna.Você não pode alterar o tamanho de uma coluna numérica.

 NULL - Remove o atributo NOT NULL de uma coluna. NOT NULL - Adiciona o atributo NOT NULL a colunas quecorrentemente aceitam nulos. Se a coluna contém valores nulos,você não pode redefiní-la como NOT NULL.

 NOT NULL WITH DEFAULT - Esta cláusula previne umacoluna de conter valores nulos e permite valores default que nãosejam nulos.

RENAME Altera o nome de uma tabela ou coluna. Tabelas e colunas que

fazem parte do catálogo do sistema não podem ser renomeadas.

Exemplos :

ALTER TABLE EMP ADD JOB VARCHAR(15);

ALTER TABLE EMP DROP JOB, HIREDATE;

ALTER TABLE EMP RENAME TABLE EMPLOYEE;

ALTER TABLE EMP MODIFY HIREDATE NOT NULL;

Page 94: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 94/580

Programando com o Centura Team Developer 2000

Página PAGE 582

COMMIT

Este comando efetiva todas as alterações realizadas no banco de dados desde o último COMMIT ouROLLBACK, ou desde a conexão inicial do usuário, se não houveram comandos realizados.

A operação COMMIT aplica-se a todos os comandos SQL, incluindo comandos de definição (CREATE,DROP, ALTER) e de controle (GRANT, UPDATE, DELETE).

Os “locks” são sempre liberados depois de um COMMIT, a menos que o modo de preservação de cursores

esteja ativo.

Sintaxe :

COMMIT

Exemplos :

COMMIT; (sinaliza fim de transação e início de uma nova)

<Comando SQL ...><Comando SQL ...><Comando SQL ...>COMMIT; (efetiva os três comandos SQL acima)

CREATE INDEX

Este comando cria um índice baseado em uma ou mais colunas da tabela, não existindo

limite para o número de índices por tabela. Os possíveis tipos de índices são : UNIQUE ouCLUSTERED HASHED.

Obs. :- se um índice é do tipo “clustered hashed”, sua chave não pode ser atualizada. - se você cria uma tabela contendo uma chave primária usando CREATE TABLE, devecriar um índice único baseado nas colunas da chave primária.

Funções nos Índices :

Pode-se criar um índice que é o resultado da utilização de funções não-aninhadas na coluna, ou colunas, da

tabela. Estes índices são usados pelo SQLBase sempre que as respectivas funções são chamadas na cláusulaWHERE.

Sintaxe :

CREATE [UNIQUE][CLUSTERED HASHED] INDEX <nome_do_indice>

ON <nome_da_tabela> ( <nome_da_coluna> [ASC ][DESC] )

[PCTFREE integer constant][SIZE integer value ROWS

BUCKETS]

Page 95: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 95/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Argumentos :

UNIQUE Esta palavra-chave força valores únicos dentro da tabela. Um erroé retornado se esta propriedade de unicidade de valores for

violada durante uma operação de inserção ou atualização.CLUSTEREDHASHED

Esta cláusula armazena linhas de dados em localizações baseadasno valor da chave. Um índice deste tipo aumenta a velocidade deacesso randômico às linhas da tabela.O SQLBase usa este tipo de índice quando:- todas as colunas-chave estão na cláusula WHERE;- as colunas somente usam condições de igualdade, como C1=C2.

INDEX<nome_do_indice>

Cada nome de índice consiste de um identificador longo, pré-fixado por um qualificador implícito que é o identificador docriador do índice.

<nome_da_tabela> Nome da tabela para a qual criar o índice. Visão não pode ser

usada.ASC / DESC Especifica se o índice está na ordem ascendente ou descendente.

ASC é o valor default.

Exemplos :

CREATE INDEX HIRE_IDX ON EMP ( HIREDATE )

CREATE INDEX NAME_IDX ON EMP ( LNAME, FNAME )

CREATE UNIQUE INDEX EMP_IDX ON EMP ( EMPNO DESC )CREATE INDEX LN_IDX ON EMP ( @UPPER( LNAME))

CREATE INDEX CODE_IDX ON EMP ( @LEFT( DEPTNO, 3 ) )

CREATE TABLE

Este comando cria uma tabela com colunas específicas-somente poderá ser definido um máximo de 253colunas para cada tabela. Para executá-lo é necessário ter autoridade RESOURCE, SYSADM ou DBA.

Ao usar CREATE TABLE com “constraints” referenciais, você pode definir uma chave estrangeira com asmesmas especificações que a chave primária da tabela pai. Pode-se também especificar a regra de deleção da“constraint” referencial. A regra default é RESTRICT. 

Sintaxe :

CREATE TABLE <nome_da_tabela> ( <nome_da_coluna> <tipo_de_dado>[NOT NULL][NOT NULL WITH

DEFAULT] )[ PRIMARY KEY ( <nome_da_coluna> )]

[ FOREIGN KEY [ <nome_da_chave> ] ( <nome_da_coluna> )

Page 96: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 96/580

Programando com o Centura Team Developer 2000

Página PAGE 582

REFERENCES <nome_da_tabela_pai>[ ON DELETE

[ RESTRICT][ CASCADE][ SET NULL]]] )

Argumentos :

<nome_da_tabela>

Um nome de tabela qualificado tem a forma : identificador.nome databela, onde identificador é o nome do criador da tabela.

<tipo_de_dado> Uma coluna pode ter os seguintes tipos de dados:CHAR (tamanho) , VARCHAR (tamanho) , DECIMAL [(precisão,escala)] , FLOAT ,INTEGER , LONG VARCHAR , NUMBER , SMALLINT , DATE ,DATETIME ,TIME , TIMESTAMP.

PRIMARYKEY

Cria a chave primária para a tabela.As seguintes regras se aplicam para a chave primária:- Se uma tabela possui chave primária, você deve também criar umíndice único baseado nas colunas da chave;- Não pode conter mais de 16 colunas cuja soma do tamanho dosatributos deverá ser menor que 255. Colunas do tipo LONG ou LONGVARCHAR não deverão ser utilizadas;- Os valores da chave primária devem ser únicos;- Cada tabela só pode ter uma chave primária.

FOREIGN KEY Especifica a chave estrangeira para uma tabela. Cada valor na chaveestrangeira deve possuir um valor correspondente na chave primária daqual origina.

<nome_da_chave>

Você pode assinalar um nome à chave estrangeira para identificá-la. Estenome pode ter até 18 caracteres. Se ele não é fornecido, o SQLBase criaum nome baseado na primeira coluna da chave estrangeira.

REFERENCES Identifica a tabela pai em um relacionamento e define as restriçõesnecessárias.

 NOT NULL Requer que dados estejam presentes na coluna toda vez que uma linhafor adicionada à tabela.

 NOT NULLWITH

DEFAULT

Esta cláusula previne uma coluna de conter valores nulos e permitevalores default que não sejam nulos.

ON DELETE Especifica as regras de deleção em uma tabela. O valor default éRESTRICT. Estas regras só são usadas para definir uma chaveestrangeira.

CASCADE Apaga primeiro as linhas selecionadas, depois as linhas dependentes,ignorando as regras de deleção dos dependentes.

RESTRICT Especifica que a linha só pode ser apagada se nenhuma outra linhadepender dela.

SET NULL Especifica que para cada deleção executada na chave primária, valorescorrespondentes da chave estrangeira são configurados como NULL.

Exemplos :

Page 97: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 97/580

Programando com o Centura Team Developer 2000

Página PAGE 582

CREATE TABLE EMP( EMPNO INT NOT NULL ,LNAME VARCHAR(15) ,FNAME CHAR(10) ,

DEPTNO SMALLINT ,HIREDATE DATE ,JOB VARCHAR (15)PRIMARY KEY ( EMPNO ) )

CREATE TABLE EMPSAL( EMPNO INTEGER,SALARY DECIMAL (9,2),REVISÃO LONG VARCHAR,PRIMARY KEY ( EMPNO ) ,FOREIGN KEY ( EMPNO ) REFERENCES EMP

ON DELETE CASCADE )

CREATE VIEW

Este comando cria uma visão a partir de uma ou mais tabelas, ou visões.

Você pode modificar tabelas através de uma visão, somente se a visão referencia um único nome de tabela nacláusula FROM do comando SELECT, e as colunas da visão não são derivadas de funções ou expressõesaritméticas.

Para criar uma visão, você deve possuir privilégio de SELECT nas colunas das tabelas quecompõem a visão.

Sintaxe :

CREATE VIEW <nome_da_visao> [( <nome_da_coluna> )]AS SELECT [WITH CHECK OPTION]

Argumentos :

<nome_da_visao> O nome da visão deve ter a forma: identificador do dono.nome da

visão<nome_da_coluna> Especifica nomes de colunas, devendo apenas ser especificado se

você deseja que as colunas da visão tenham nomes diferentes dascolunas da tabela.

SELECT Um comando SELECT que defina a visão. A visão contém aslinhas resultantes da execução deste comando SELECT.Você não pode usar a cláusula ORDER BY em uma definição deVISÃO.

WITH CHECKOPTION

Faz com que todas as operações de inserção e atualização atravésda visão sejam checadas contra a definição da visão, e rejeitadascaso não estejam em conformidade com a definição.

Page 98: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 98/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Exemplos :

CREATE VIEW PAYAS SELECT FNAME, LNAME, SALARY

FROM EMP, EMPSAL

WHERE EMP.EMPNO = EMPSAL.EMPNO

CREATE VIEWDEPT_SAL (DEPT, TOTSAL)

AS SELECT DEPTNO, SUM(SALARY)FROM EMP, EMPSALWHERE EMP.EMPNO = EMPSAL.EMPNOGROUP BY DEPTNO;

CREATE VIEW WEEK2AS SELECT * FROM ORDERS

WHERE ORDERDATE > = 05-JUL-94WITH CHECK OPTION

DROP INDEX

Este comando remove do banco de dados o índice especificado. Já os comandos pré-compilados, quereferenciam índices apagados, não são automaticamente deletados.

Um índice só pode ser apagado por seu criador ou por um usuário com autoridadeSYSADM ou DBA.

Sintaxe :

DROP INDEX <nome_do_indice>

Argumentos :

<nome_do_indice> Nome do índice a ser removido. Índices de tabelas do sistema não podem ser removidos. Visões e tabelas existentes não são afetadas.

Exemplo :

DROP INDEX EMP_IDX;

DROP TABLE

Este comando remove do banco de dados a tabela especificada. Os comandos pré-compilados quereferenciam tabelas apagadas não são automaticamente deletados. Já as triggers definidas para as tabelas sãoapagadas.

Em um banco de dados com integridade referencial definida, ao apagar a tabela você está apagando a suachave primária, bem como as chaves estrangeiras em outras tabelas que façam referência à tabela pai. Ocomando DROP TABLE apaga todas as “constraints” nas quais a tabela apagada era pai ou dependente. 

Page 99: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 99/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Uma tabela só pode ser apagada por seu criador ou por um usuário com autoridadeSYSADM ou DBA.

Sintaxe :

DROP TABLE <nome_da_tabela>

Argumentos :

<nome_da_tabela> Esta cláusula apaga os seguintes objetos:- a tabela especificada;- todos os sinônimos e índices para a tabela;- todos os privilégios garantidos para a tabela;- todas as visões dependentes;- todas as triggers definidas para a tabela.

Exemplo :

DROP TABLE EMP;

DROP VIEW

Este comando remove do banco de dados a visão especificada. Já os comandos pré-compilados quereferenciam visões apagadas não são automaticamente deletados.

Uma visão só pode ser apagada por seu criador ou por um usuário com autoridade SYSADM ou DBA.

Sintaxe :

DROP VIEW <nome_da_visão>

Argumentos :

<nome_da_visao> Remove do catálogo do sistema a visão especificada, além de todas asvisões dependentes e seus privilégios.

Exemplo :

DROP VIEW WEEK2

ROLLBACK

Este comando finaliza uma transação corrente.

Quando um comando ROLLBACK é executado, o SQLBase aborta a transação corrente. Isto restaura o banco de dados, até o estado que ele estava antes do último COMMIT ou ROLLBACK, ou, se isso não

ocorreu, até o momento da conexão pelo usuário.

Page 100: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 100/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe :

ROLLBACK

Exemplos :

COMMIT;

<SQL Command…> <SQL Command…> <SQL Command…> ROLLBACK ;Tabela dos comandos do SQLBase

Nome DescriçãoALTER DATABASE Altera o grupo de armazenamento ou log para um banco de

dados.ALTER DBAREA Altera o tamanho da área do banco de dados.ALTER EXTERNALFUNCTION

Altera a definição de uma função externa.

ALTER PASSWORD Altera a senha.ALTER STOGROUP Adiciona ou apaga uma área do banco de dados de um

grupo de armazenamento.ALTER TABLE Altera a definição de uma tabela.ALTER TABLE(mensagens de erro)

Torna as mensagens de erro específicas para umadeterminada violação de integridade referencial.

ALTER TABLE(integridade referencial)

Adiciona ou apaga chaves primárias e estrangeiras.

ALTER TRIGGER Habilita e desabilita triggers definidas em tabelas.AUDIT MESSAGE Grava uma mensagem em um arquivo de auditoria.CHECK DATABASE Verifica a integridade do banco de dados.CHECK INDEX Verifica a integridade de um determinado índice.CHECK TABLE Verifica a integridade de uma determinada tabela.COMMENT ON Substitui ou adiciona um comentário à definição de uma

tabela, visão, coluna ou função externa do catálogo dosistema.

COMMIT Finaliza uma unidade lógica de trabalho e efetiva alterações

 por ela realizadas no banco de dados.CREATE DATABASE Cria fisicamente um banco de dados.CREATE DBAREA Cria uma área de banco de dados.CREATE EVENT Cria um evento.CREATE EXTERNALFUNCTION

Cria uma função externa.

CREATE INDEX Cria um índice em uma tabela.CREATE STOGROUP Cria um grupo de armazenamento.CREATE SYNONYM Define um nome alternativo para uma tabela, view ou

função externa.CREATE TABLE Define uma tabela.CREATE TRIGGER Cria uma trigger.

Page 101: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 101/580

Programando com o Centura Team Developer 2000

Página PAGE 582

CREATE VIEW Define uma visão de uma ou mais tabelas ou visões.DBATTRIBUTE Configura atributos específicos do banco de dados.DEINSTALL DATABASE Retira um banco de dados da rede, tornando-o não

disponível para usuários.DELETE Apaga uma ou mais linhas de uma tabela.

DROP DATABASE Apaga fisicamente um banco de dados.DROP DBAREA Apaga fisicamente uma área de banco de dados.DROP EVENT Apaga um evento.DROP EXTERNALFUNCTION

Apaga uma função externa.

DROP INDEX Remove um índice.DROP STOGROUP Apaga um grupo de armazenamento.DROP SYNONYM Apaga um sinônimo.DROP TABLE Apaga fisicamente a tabela de um banco de dados.DROP TRIGGER Apaga uma trigger.

DROP VIEW Apaga uma visão.GRANT (níveis de autoridadeno banco de dados)

Assinala níveis de autorização ou privilégios para um bancode dados.

GRANT(privilégios em tabelas)

Assinala um ou mais privilégios específicos para umatabela ou view.

GRANT EXECUTE ON Assinala privilégio à usuários para execução de stored procedures e funções externas.

INSERT Insere uma ou mais linhas em uma tabela já existente.INSTALL DATABASE Coloca o banco de dados na rede, tornando-o acessível por

usuários.LABEL Adiciona ou altera etiquetas nas definições do catálogo.

LOAD Carrega uma ou mais tabelas em um banco de dados.LOCK DATABASE Coloca um lock exclusivo no banco de dados, prevenindo

conexões por outros usuários.PROCEDURE: Cria um procedimento.REVOKE Revoga níveis de autorização ou privilégios para um banco

de dados.REVOKE EXECUTE ON Revoga privilégio de usuários para execução de stored

 procedures e funções externas.ROLLBACK Finaliza uma unidade lógica de trabalho e desfaz alterações

realizadas no banco de dados durante a última transação.

ROWCOUNT Conta o número de linhas de uma tabela.SAVEPOINT Determina um ponto de checagem dentro de uma transação.SELECT Consulta tabelas ou visões.SET DEFAULT STOGROUP Especifica um grupo de armazenamento default.START AUDIT Inicia uma auditoria no banco de dados.STOP AUDIT Finaliza uma auditoria no banco de dados.UNLOAD Descarrega o banco de dados em um arquivo externo.UNLOCK DATABASE Libera o lock exclusivo de um banco de dados, colocado

através do comando LOCK DATABASE.UPDATE Atualiza valores de colunas de uma tabela ou view.UPDATE STATISTICS Atualiza as estatísticas para um índice de uma tabela.

Page 102: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 102/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tabela das Funções do Centura SQLBase

Nome DescriçãoAVG Média dos itens.COUNT Contador dos itens.

MAX Número máximo de itens.MIN Número mínimo de itens.SUM Somatório dos itens.@ABS Valor absoluto.@ACOS Arco-coseno.

@ASIN Arco-seno.ATAN Arco-tangente do segundo quadrante.@ATAN2 Arco-tangente do quarto quadrante.@CHAR Caracter ASCII de um código decimal.@CHOOSE Seleciona o valor de uma lista baseado em uma correlação.@CODE Código decimal ASCII do primeiro caracter em uma string.

@COS Coseno.@CTERM Período necessário para se obter ganhos no futuro.@DATE Converte para valor do tipo data.@DATETOCHAR Edita valor do tipo data.@DATEVALUE Edita valor do tipo data.@DAY Dia do mês.@DECIMAL Valor decimal de uma string hexadecimal.@DECODE Dada uma expressão, retorna uma string.@EXACT Compara duas strings.@EXP Retorna logarítmo natural base (e) elevado à potência x.

@FACTORIAL Fatorial.@FIND Posição dentro da string1 que ocorre na string2.@FV Valor futuro obtido a partir de uma série de pagamentos iguais.@HEX String hexadecimal de um número decimal.@HOUR Hora do dia.@IF Testa número e retorna 1 se VERDADEIRO ou 2 se FALSO.@INT Parte inteira.@ISNA Retorna VERDADEIRO se NULO.@LEFT Substring mais à esquerda.@LENGTH Tamanho de uma string.@LICS Ordenação usando conjunto de caracteres internacionais.@LN Logarítmo natural base (e) de x (positivo).@LOG Logarítmo de x na base 10.@LOWER Maiúsculo para minúsculo.@MEDIAN Valor do meio de um conjunto de itens.@MICROSECOND Valor em microsegundos.@MID Retorna uma string, começando com o caracter em posição-inicial.@MINUTE Minuto da hora.@MOD Módulo de x/y.@MONTH Mês do ano.@MONTHBEG Primeiro dia do mês.

@NOW Data e Hora correntes.

Page 103: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 103/580

Programando com o Centura Team Developer 2000

Página PAGE 582

@NULLVALUE Retorna uma string ou número especificado por y se x é NULO.@PI Valor Pi ( = 3.14159265).@PMT Pagamentos necessários para quitar um empréstimo.@PROPER Converte o primeiro caracter de cada palavra de uma string para

maiúsculo e torna os outros caracteres minúsculos.

@PV Valor atual de uma série de pagamentos iguais.@QUARTER Número que representa o trimestre.@QUARTERBEG Primeiro dia do trimestre.@RATE Taxa de juros necessária para um investimento crescer para uma

valor futuro.@REPEAT Concatena uma string com ela mesma por um determinado número

de vezes.@REPLACE Substitui caracteres em uma string.@RIGHT Substring mais à direita.@ROUND Arredonda um número.

@SCAN Procura um padrão em uma string.@SDV Desvio padrão.@SECOND Segundos do minuto.@SIN Seno.@SLN Depreciação linear.@SQRT Raiz quadrada.@STRING Converte um número em uma string.@SUBSTRING Retorna uma parte da string.@SYD Método da depreciação da soma dos dígitos do ano.@TAN Tangente.@TERM Número de períodos para pagamento de um investimento.

@TIME Retorna um valor do tipo data/hora dados hora, minuto e segundo.@TIMEVALUE Retorna um valor do tipo data/hora dados HH:MM:SS [AM ou PM].@TRIM Remove brancos; comprime múltiplos espaços.@UPPER Minúscula para maiúscula.@VALUE Converte uma string de caracteres contendo dígitos para um número.@WEEKBEG Primeiro dia da semana (segunda-feira).@WEEKDAY Dia da semana.@YEAR O ano, tendo como base 1900.@YEARBEG Primeiro dia do ano.@YEARNO Ano do calendário.

Usando o Centura SQLBase através do CTD

A utilização de uma base de dados numa aplicação desenvolvida em Centura TeamDeveloper, na maioria dos casos, é feita basicamente da seguinte forma :

Conectar a aplicação ao banco de dados

Para que você possa utilizar um banco de dados é necessário estabelecer uma conexãoentre a aplicação e a base de dados. Esta conexão é feita, em CTD, utilizando-se a função

SqlConnect. O nome da base de dados que será conectada deve estar na variável do sistema

Page 104: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 104/580

Programando com o Centura Team Developer 2000

Página PAGE 582

chamada SqlDatabase, assim como o nome do usuário e a senha devem estar nas variáveisSqlUser  e SqlPassword , respectivamente.

Para saber se a conexão foi bem sucedida, verifique o valor retornado pela funçãoSqlConnect.

Sendo a conexão realizada com sucesso, você terá um handle sql  conectado ao banco dedados. Podemos chamar também este handle sql  de cursor, este termo é também bastanteutilizado e, em resumo, significa que existe um canal de comunicação entre a aplicação e o

 banco de dados. É através deste canal de comunicação que toda a interação com o banco dedados é realizada.

Uma aplicação Centura pode ter um número teoricamente ilimitado de conexõessimultâneas com bancos de dados, inclusive com bancos de diferentes fornecedores. Porexemplo, você pode conectar sua aplicação com bases de dados Centura SQLBase,Oracle/Unix, SqlServer/WindowsNT, DB2/MVS e DBFs/ODBC, ao mesmo tempo.

Observe abaixo um código padrão, mostrando uma típica conexão sendo feita :

Set SqlDatabase = "ISLAND"

Set SqlUser = "SYSADM"Set SqlPassword = "SYSADM"Call SqlConnect( hSql1 )

Obs :Se você executar as funções SqlImmediate ou SqlExists antes de executar SqlConnect, a

aplicação será automaticamente conectada ao banco de dados.

Compilar o comando SQL

Após a conexão ser realizada com sucesso, você pode utilizar os comandos sql para consultar, incluir, alterarou excluir informações da base de dados conectada. Os comandos devem ser enviados ao servidor de bancode dados para que este analise o seu comando. Esta fase, chamada compilação, é conhecida no CTD por

 preparação. Você deve utilizar a função SqlPrepare no CTD para realizar esta função. O comando enviado aoservidor é analisado, verificando-se a existência de algum erro de sintaxe. As visões utilizadas são resolvidas,o comando é otimizado, e então é gerado um plano de execução.

Observe abaixo um código padrão, mostrando uma típica preparação de um comando sql :

Call SqlPrepare( hSql1 , ‘SELECT COMPANY_NAME FROM COMPANY’ ) 

Page 105: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 105/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Definir alguns argumentos

O propósito desta fase é identificar as variáveis da aplicação que recebem os dados atravésdo comando sql utilizado na fase anterior. Estas variáveis são conhecidas no CTD pelotermo variáveis INTO.

Observe abaixo um código padrão, mostrando uma utilização das variáveis INTO :

Call SqlPrepare( hSql1 , ‘SELECT COMPANY_ID , COMPANY_NAMEINTO :dfCodigo , :dfNome FROM COMPANY’ ) 

Obs :Você não pode deixar de utilizar os dois pontos “:” precedendo o nome de cada variável citada nacláusula INTO do comando sql. O compilador do CTD não faz esse tipo de verificação, e o erroserá identificado apenas em tempo de execução da sua aplicação.

Executar o comando

Este passo é realizado pelo servidor de banco de dados, que irá verificar a existência da utilização devariáveis BIND, obtendo os valores necessários para a correta execução do comando. Variáveis BIND são,normalmente, variáveis da aplicação CTD que possuem valores a serem obtidos pelo servidor antes que ocomando sql seja executado. Geralmente são valores utilizados em codições. Você deve utilizar a funçãoSqlExecute no CTD para realizar esta função.

Observe abaixo um código padrão, mostrando uma utilização das variáveis BIND :

Call SqlPrepare( hSql1 , ‘SELECT COMPANY_ID , COMPANY_NAMEINTO :dfCodigo , :dfNome FROM COMPANYWHERE COMPANY_ID = :nCodigo’ ) 

Call SqlExecute( hSql1 )

Obs : Assim como as varíaveis INTO, você não pode deixar de utilizar os dois pontos “:” precedendo o

nome de cada variável BIND do comando sql. O compilador do CTD não faz esse tipo deverificação e o erro será identificado apenas em tempo de execução da sua aplicação.

 A principal diferença entre as variáveis INTO e as variáveis BIND é que as variáveis BIND sãoenviadas ao servidor para que o comando sql seja executado corretamente, exercendo influênciano resultado do comando. As variáveis INTO são enviadas para a aplicação pelo servidor com osdados recuperados.

Page 106: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 106/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Recuperar os dados

Até este momento, o fluxo de informações tem sido sempre da aplicação para o servidor. Nenhum dadoretornou do servidor até agora. O único modo de se obter informações vindas do banco de dados é fazendouso do comando select e, então, recuperando o resultado deste comando. Os passos anteriores sãoresponsáveis pela requisição dos dados, tarefas estas realizadas pelas funções SqlPrepare e SqlExecute, ou

 pela função SqlPrepareAndExecute. Para se obter os dados resultantes do comando select que foi preparado eexecutado anteriormente, faz-se necessário o uso das funções SqlFetchPrevious, SqlFetchRow eSqlFetchNext.

Ao conjunto de linhas que compõem o resultado de um comando  select , dá-se o nome deresult set . As funções SqlFetch* são responsáveis pela navegação neste result set.

As funções SqlFetchPrevious e SqlFetchNext permitem a navegação para trás e para frente, respectivamente,uma linha por vez, através do result set. A função SqlFetchRow permite que uma determinada linha seja

 posicionada sem que seja preciso navegar por todas as demais. Ou seja, salta direto para uma linha específica.Este recurso é chamado de scrolling .

Existem duas funções que recuperam informações do banco de dados carregando-as num objeto visual. Estasexecutam internamente as funções SqlPrepare, SqlExecute e SqlFetchNext. As funções SalTblPopulate eSalListPopulate carregam o result set  obtido por um comando select em objetos do tipo table window, e emlist box (ou combo box), respectivamente. Nestes casos, a navegação pelo result set  não é feita através do usoda funções SqlFetch*.

Obs : A navegação no result set é feita na máquina cliente e não na servidora. Por esse motivo, algunscuidados devem ser observados para a obtenção de resultados satisfatórios, como por exemplo oespaço em disco disponível na máquina cliente, pois, arquivos temporários são gerados. Estesarquivos temporários gerados podem, eventualmente, não serem apagados ao final do processo.Isto pode ocorrer em tempo de desenvolvimento. Não esqueça de apagar estes arquivostemporários.

Finalizar a transação

Para encerrar uma transação você deve utilizar um dos dois comandos disponíveis,dependendo do caso em que se aplicar. Use o comando commit  para tornar permanentes asedições feitas no banco de dados, ou então, use o comando rollback   para descartarqualquer modificação que tenha sido realizada.

Quando um destes comandos é executado, todas as transações abertas são destruídas, ou seja, qualquer

comando que tenha sido preparado com as funções SqlPrepare, SqlPrepareAndExecute e SqlRetrieve sãodestruídas, sendo necessário compilar novamente os comandos.

Para executar um comando commit  você pode utilizar a função SqlCommit. No caso docomando rollback , você pode fazer uso da função SqlPrepareAndExecute( hSql ,“ROLLBACK” ). 

Desconectar do banco de dados

Quando não for mais necessário a utilização de um handle sql, este deve ser desconectado. Para desconectá-lo você deve utilizar a função SqlDisconnect. Neste momento, o canal de comunicação que foi criado com afunção SqlConnect é destruído, liberando recursos de memória da estação cliente e do servidor.

Page 107: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 107/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 108: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 108/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Quando utilizar SqlPrepare / SqlExecute ou SqlPrepareAndExecute ?

 Na maioria dos casos, não há diferença entre utilizar as funções SqlPrepare e SqlExecutecom relação a utilização da função SqlPrepareAndExecute. Porém, é importante observardois detalhes:

Call SqlPrepare( hSql, sComandoSql )Call SqlExecute( hSql ) 

Que pode ser substituído pelo seguinte código :

Call SqlPrepareAndExecute( hSql , sComandoSql )

 Neste caso, é claramente observada uma nítida vantagem na utilização da função SqlPrepareAndExecute, pois, em apenas uma chamada de função, são executadas as duas tarefas anteriores, otimizando a utilizaçãoda rede e do servidor do banco de dados. Isso, já pode ser bastante significante.

Observe este outro exemplo :

Set nIndice = 1While nIndice < 500

Call SqlPrepareAndExecute( hSql,’INSERT INTO tab_a (col1 )

VALUES ( :nIndice ) ‘ ) Set nIndice = nIndice + 1

Call SqlPrepareAndExecute( hSql, ‘ COMMIT ’ ) 

 Neste exemplo, são feitas 500 inclusões no banco de dados, utilizando-se um laço While.Múltiplas atualizações ao banco de dados podem causar problemas na estação cliente e

 junto ao servidor. Para evitar esse tipo de problema, podemos escrever um códigoequivalente ao mostrado acima, porém, mais eficiente.

Set nIndice = 1Call SqlPrepare(hSql,’INSERT INTO tab_a ( col1 ) VALUES (:nIndice ) ‘ ) While nIndice < 500

Call SqlExecute( hSql )Set nIndice = nIndice + 1

Call SqlPrepareAndExecute( hSql, ‘ COMMIT ’ ) 

 No primeiro exemplo, o comando é preparado todas as 500 vezes !

Observe que a compilação do comando está fora do laço, ou seja, o comando é preparadoapenas uma vez. Nas demais vezes, ele é apenas executado. Na preparação do comando émontado o link com a variável BIND nIndice, indicando que, quando o comando forexecutado pelo servidor, o valor de nIndice será utilizado.

Page 109: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 109/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 110: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 110/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 4Programação Baseada em Eventos

O SQLWindows/32 é uma linguagem de programação de quarta geração, extremamente rica e poderosa, que é também orientada a eventos. Aliás, o SQLWindows/32, nasceu  orientado aeventos. Portanto, é de suma importância ao desenvolvedor estar devidamente familiarizadocom os conceitos que orientam o desenvolvimento de aplicações baseadas em eventos.

 Neste capítulo, esses conceitos são apresentados de forma simples, utilizandoexemplos de aplicações que exploram recursos possíveis de seremimplementados apenas numa linguagem orientada a eventos, como é o caso doSQLWindows/32.

Page 111: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 111/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Introdução

O Microsoft Windows é um ambiente orientado a eventos. Todos os objetos de uma aplicação MS Windowssão chamados de window objects. Esses podem ser form windows, data fields, combo box e table windows,entre outros. A responsabilidade em criar, manter e destruir os objetos de uma aplicação é do Windows. Édele também a tarefa de gerenciar os requisitos de memória e recursos para as aplicações.

Linguagens como Pascal ou C são procedurais. O Centura SQLWindows/32 é umalinguagem baseada em eventos e mensagens. Os objetos do SQLWindows/32 recebem amensagem e executam a devida ação. Um evento, ou uma série de eventos, geram umamensagem e esta é enviada aos objetos ativos que executam as devidas ações. Eventos emensagens controlam todo o fluxo de execução de um programa Centura.

Podemos afirmar que é o usuário final quem controla os eventos, assim como a aplicação.Por exemplo, o usuário pode clicar num conjunto de objetos e atingir um determinadoresultado, clicando nos mesmos objetos, porém, numa outra seqüência, os resultados

 podem ser completamente diferentes.

Todos os objetos do ambiente Windows comunicam-se por meio de mensagens.Mensagens são o protocolo para comunicação entre os objetos.

Definição

Eventos

 Num nível bastante básico, o Windows possui quatro eventos de hardware, a saber: :De teclado –  como teclas do cursor e teclas de função.

Do mouse –  como clique do botão esquerdo e clique duplo.De timers –  como o relógio interno.De Caneta Óptica –  a leitura de dados através de uma caneta.

Existem muitos outros eventos derivados dos eventos de hardware e alguns outros que são gerados pelasaplicações. Por exemplo, quando uma aplicação é encerrada, um evento é gerado, resultando no recebimentode uma mensagem pela janela principal.

Mensagens

Uma mensagem é um simples numeral hexadecimal compreendido entre o número 0 e0xFFFF. Essas mensagens podem originar-se do próprio ambiente Windows, doSQLWindows32 ou do código da aplicação. As aplicações enviam mensagens aos objetos.Se um objeto possuir alguma ação preparada para essa mensagem, a ação é executada. Aúnica forma de avisar a um objeto que uma mensagem chegou é através do número damensagem.

Um evento gera uma mensagem e, se o objeto estiver preparado para esta mensagem, umaação será executada em resposta a mensagem enviada.

Objetos

Page 112: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 112/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Um objeto é qualquer elemento visual ou não visual presente numa aplicação. Todos os objetos no CenturaSQLWIndows32 possuem uma seção a ele correspondente no outline. No SQLWindows32 existem dois tiposde objetos:

Objetos Passivos: são objetos que não podem receber e nem enviar mensagens, eles não possuem a seção  Message Actions  no outline. Os objetos background text, group box,frame e line são exemplos de objetos passivos no SQLWindows32.

Objetos Ativos: são objetos que possuem a seção message actions  no outline do SQLWindows32, possibilitando a recepção de mensagens. Tendo recebido uma mensagem, o objeto executa uma ação que pode envolver enviar outras mensagens a outros objetos. Por exemplo, quando o usuário clica num push button, uma mensagem SAM_Click é enviada ao objeto. Neste exemplo, o message actions do objeto precisaestar preparado para receber essa mensagem e executar as ações devidas.

Pushbutton: pb1Message ActionsOn SAM_Click

! Ações

O comando On SAM_Click  informa ao objeto que execute uma ação, quando receber amensagem cujo número corresponda à constante SAM_Click .

Obs :Você pode fazer uso das funções SalGetFirstChild e SalGetNextChild  para acessar osobjetos ativos e passivos numa aplicação.

Evento   Mensagem   Ação

Um evento faz com que uma mensagem seja enviada a um objeto. Se esse objeto captar amensagem através do comando On, todo o bloco de ação subordinado é executado até ofim, ou até que seja executado um comando Return.

 Nem todos os objetos recebem todas as mensagens. Por exemplo, apenas o objeto Aplicação  recebe a mensagem SAM_AppStartup. A aplicação recebe essa mensagemantes que qualquer objeto visual seja criado. Um objeto push button não pode receber essamensagem, assim como não faz sentido a aplicação receber a mensagem SAM_Click .

As mensagens podem partir de três locais distintos :

  MS Windows - Mensagens geradas pelo próprio sistema operacional. Por exemplo,WM_PAINT

  Aplicação Centura, através de interação do usuário - Mensagens geradas devido aações do usuário. Por exemplo, SAM_Click.

  Aplicação Centura, via programação - Mensagens geradas por código SAL.

Três funções podem ser utilizadas para o envio de mensagens entre objetos:

SalSendMsg  –  Envia uma mensagem para a fila de mensagens de um objeto.SalPostMsg  –  Envia uma mensagem para ser executada imediatamente por um objeto.

Page 113: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 113/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalSendMsgToChildren  –  Envia uma mensagem para cada um dos objetos child, a qualdeve ser executada imediatamente.

Mensagens definidas pelo usuário

Uma mensagem é, basicamente, um número. Tanto o MS Windows quanto o Centurareservam um conjunto de número para mensagens. A Constante do SQLWindows32SAM_User marca o fim das mensagens do MS Windows e do Centura, indicando o iníciodas mensagens disponíveis para os usuários do SQLWindows32.

Se o MS Windows ou o Centura adicionarem novas mensagens, o valor da constanteSAM_User é automaticamente incrementado, não ocorrendo impacto algum às aplicações.

Informações adicionais

Fazendo parte de todo esse recurso de mensagens do sistema operacional, existem duasvariáveis do MS Windows que podem ser utilizadas para transmissão de parâmetros. Sãoelas:

wParam( 2 bytes –  tipo WORD )Aceita valores entre 0 e 65.535

lParam( 4 bytes –  tipo LONG )Aceita valores entre –  4.294.967.296 e 4.294.967.295

São comumente utilizadas nas aplicações SQLWindows32.

A utilização da variável wParam é demonstrada no fragmento de código abaixo:

Pushbutton: pbOkMessage Actions

On SAM_ClickCall SalSendMsg( dfNOME , CEM_Limpa , TRUE , 0 )

Data Field: dfNOMEMessage Actions

On CEM_LimpaIf wParam

Set MyValue = 'OK'Else

Set MyValue = '' 

 No exemplo acima, o objeto dfNOME recebe a mensagem CEM_Limpa, enviada pelo push button pbOK e, dependendo do valor da variável wParam. Caso o valor da variávelwParam seja TRUE, é tomada uma determinada ação. Se o valor da variável wParam forFALSE, uma outra ação é tomada.

Exemplo 1

Vamos construir uma aplicação extremamente simples, com base nos conceitos

apresentados neste capítulo, facilitando o entendimento dos mesmos. Lembre-se que os

Page 114: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 114/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 problemas que você terá de resolver, no dia-a-dia das empresas são bem mais complexosdo que este exemplo; entretanto, adequado para ilustrar as teorias apresentadas até então.

1- Inicie uma aplicação nova no Centura SQLWindows/32.

2- Defina uma Constante chamada CEM_Mensagem, na seção Constants do GlobalDeclarations.

3- Construa um form window.

4- Coloque nele dois push button chamados, pbOK e pbLIMPAR, incluindo os seusdevidos títulos.

5- Três data fields devem ser colocados neste form window.

Sua janela deve parecer-se com a figura mostrada abaixo :

6- Insira o código referente ao pbOK.

 No evento SAM_Click, envie a mensagem CEM_Mensagem a todos os objetos filhodo form window, passando TRUE no parâmetro wParam.

Page 115: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 115/580

Programando com o Centura Team Developer 2000

Página PAGE 582

7- O código do pbLIMPAR. No evento SAM_Click, envie a mensagem CEM_Mensagem a todos os objetos filhodo form window, passando FALSE no parâmetro wParam.

8- O código dos data fields são todos iguais.Capture a mensagem CEM_Mensagem e verifique o valor da variável wParam.Quando wParam for TRUE ( 1 ) , escreva ‘Olá ’ no conteúdo do data field.

Quando wParam for FALSE ( 0 ) , limpe o conteúdo do data field.

Se você tiver alguma dúvida, confira a listagem do código fonte abaixo:

Pushbutton: pbOKTitle: OkMessage Actions

On SAM_ClickCall SalSendMsgToChildren( hWndForm, CEM_Mensagem, TRUE, 0 )

Pushbutton: pbLIMPARTitle: LimparMessage Actions

On SAM_ClickCall SalSendMsgToChildren( hWndForm, CEM_Mensagem, FALSE, 0 )

Data Field: df1Message Actions

On CEM_MensagemIf wParam

Set MyValue = 'Olá'Else

Set MyValue = ''Data Field: df2

Page 116: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 116/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Message ActionsOn CEM_Mensagem

If wParamSet MyValue = 'Olá'

ElseSet MyValue = ''

Data Field: df3Message Actions

On CEM_MensagemIf wParam

Set MyValue = 'Olá'Else

Set MyValue = '' 

Você pode fazer download dos arquivos fonte presentes no livro diretamente a partir do sitehttp://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo chama-se exCap04_01.app.

Page 117: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 117/580

Page 118: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 118/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 5Programando com o Centura SQLWindows

 Neste capítulo desenvolveremos algumas aplicações. Várias telas de manutenção, consulta eum album de fotografias são montadas e explicadas em detalhes.

Todos os programas fontes são disponíveis para download no sitehttp://www.centuraexplorer.com.br/livr_ctd2000/ além de alguns outros exemplos e tutoriais.

 Nestes exemplos, é demonstrado o uso das técnicas mais comuns utilizadas na resolução de problemas comerciais típicos, encontrados nas empresas.

 Neste capítulo, utilizaremos o banco de dados que acompanha o próprio

Centura Team Developer, as ferramentas de Bancos de Dados nele contidas, oServidor de SQLBase, a base de dados de exemplos chamada ISLAND e oDatabase Explorer. Portanto, é extremamente importante que a instalação doCentura Team Developer tenha sido realizada conforme as instruções descritasno Apêndice F –  Guia de Instalação do Centura Team Developer 2000.

Obs  : Como a nossa intenção neste momento é obter conhecimento dosrecursos básicos da linguagem Centura, nos exemplos a seguir procuraremossempre implementar o código de modo extremamente simples, sem a utilizaçãodos recursos avançados da linguagem. Essa abordagem mais avançada serávista a partir do sétimo capítulo.

Page 119: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 119/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Login do Sistema

Esta é a janela responsável pela segurança do sistema. Só podem ter acesso ao sistema osusuários autorizados, que tenham conhecimento da senha e de um determinado nome deusuário do banco de dados. No caso do nosso exemplo, o nome do usuário e a senha devem

estar cadastrados no banco de dados que estiver sendo utilizado. Ou seja, só têm acesso aosistema usuários cadastrados no banco de dados.

Esta janela possui o seguinte comportamento : Assim que o usuário executa o sistema, esta janela de login aparece e solicita a digitação do nome do usuário e da senha. Sem estasinformações, o sistema não pode ser utilizado. Caso o usuário não digite corretamente umasenha e um nome de usuário válidos, o sistema emitirá uma mensagem de erro. A janela delogin permanece ativa até que o usuário informe, corretamente, um usuário e senha e cliqueno botão Ok, ou que desista e clique no botão Cancelar.

Observe abaixo o código completo da caixa de diálogo dlgLogin.

Dialog Box: dlgLoginTitle: Login ao SistemaDescription: Solicitar um nome de usuário e senha válidos.Tool BarContents

Background Text: NomeData Field: dfNomeBackground Text: SenhaData Field: dfSenha

Format: InvisiblePushbutton: pbOK

Title: &OkMessage Actions

On SAM_ClickSet SqlDatabase = "ISLAND"Set SqlUser = dfNome

Set SqlPassword = dfSenhaWhen SqlErrorCall SalMessageBox( "Usuário ou senha inválidos." , "Erro no login", MB_Ok)Return FALSE

If SqlConnect( hSql )Set prhSql = hSqlCall SalEndDialog( hWndForm , TRUE )

Pushbutton: pbCancelarKeyboard Accelerator: EscMessage Actions

On SAM_ClickCall SalEndDialog( hWndForm , FALSE )

FunctionsWindow Parameters

Receive Sql Handle: prhSqlWindow Variables

Sql Handle: hSqlMessage Actions

Page 120: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 120/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 121: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 121/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Depurando

  Inicialmente, observe as variáveis que esta janela utiliza. Na seção Window

 Parameters, é declarado um parâmetro da janela de login, tipo  Receive Sql Handle  ( prhSql   ), que será utilizado para retornar um handle válido ao local de onde foi

chamada a janela de login. Já na seção Variables, é declarada uma variável tipo Sql Handle  ( hSql   ), que será efetivamente utilizada na janela para a conexão. Estadeclaração dupla se fez necessária, pois, a função SqlConnect  precisa de uma variávelcomo parâmetro, não sendo possível a utilização de  prhSql , uma vez que este já é um

 parâmetro da janela de login.  O data field  chamado dfSenha é formatado com o atributo Invisible, que faz com que o

conteúdo do campo não fique visível ao usuário. Durante a digitação são mostradosasteriscos para garantir o sigilo da senha.

   No código do evento SAM_Click   no botão  pbOK , o nome da base de dados a serutilizada está sendo atribuído à variável do sistema chamada SqlDatabase. Este nome

está fixo neste exemplo. Eventualmente, também poderia ser digitado na janela delogin, assim como é feito com o nome do usuário ( que é atribuído a SqlUser   ) e asenha do usuário ( que é atribuída a SqlPassword  ). Lembre-se, você não precisa digitarestas três variáveis do sistema, pode escolher com o mouse através do uso do Coding

 Assistant . No combo box,  escolha System Variables, assim, as variáveis do sistemaserão listadas, inclusive estas três citadas acima.

  Ainda no código do evento SAM_Click  no botão  pbOK , é testado o retorno da funçãoSqlConnect . Se a função apresentar algum erro ( retornando FALSE ), o fluxo do

 programa é desviado para o código imediatamente superior, o When SqlError , ondeuma mensagem de erro é mostrada ao usuário. Se tudo ocorrer bem, e a função retornarTRUE, sgnifica que a conexão foi bem sucedida e que o programa pode continuar,

então, o handle sql que foi conectado em hSql  é atribuído a prhSql  e a janela de login éencerrada pela função SalEndDialog , tendo como o seu segundo parâmetro o valorTRUE, indicando o sucesso da operação de login.

   No código do evento SAM_Click  no botão  pbCancelar , a janela de login é encerrada pela função SalEndDialog , tendo como o seu segundo parâmetro o valor FALSE,indicando que o usuário cancelou a operação de login.

  Observe que o botão  pbCancelar  foi configurado de forma que, a qualquer momentoque o usuário pressionar a tecla  ESC, o código deste objeto é acionado. Isso é feitoatravés do atributo  Keyboard Accelerator , e pode ser configurado através doCustomizer  ou do Attribute Inspector .

  Para obter maiores informações a respeito da utilização das funções do Centura,

consulte o apêndice F, Guia de Referência das Funções SAL.

Page 122: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 122/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Menu Principal.

O Menu Principal é a janela de onde todas as funções do sistema são acionadas, é ondetodos os menus estão definidos. Usaremos uma janela tipo MDI Window que é a maisapropriada para esta função, pois, possui a Interface de Múltiplos Documentos ( M ultiple

D ocument I nterface ) permitindo que várias janelas sejam administradas pela janela MDI.

Esta janela possui o seguinte comportamento : Somente após o sucesso no login ( que foi programado no exemplo anterior ), o mdiPrincipal deverá ser mostrado. Em seguida, todosos menus devem ser disponibilizados para o usuário. Assim que o usuário escolher umafunção num dos menus, a janela correspondente deve ser acionada.

Observe abaixo, o código completo do mdiPrincipal.

MDI Window: mdiPrincipalDescription:Named MenusMenu

Popup Menu: CadastrosMenu Item: Empresas

Status Text: Ativa a tela de manutenção de Empresas.Menu Settings

Enabled when: NOT SalFindWindow ( hWndMDI , "frmEmpresa" )Menu Actions

Call SalCreateWindow( frmEmpresa, hWndMDI )Menu Item: Contatos

Status Text: Ativa a tela de manutenção de Contatos.Menu Settings

Enabled when: NOT SalFindWindow ( hWndMDI , "frmContato" )Menu Actions

Call SalCreateWindow( frmContato, hWndMDI )Menu SeparatorMenu Item: Faturas

Status Text: Ativa a tela de manutenção de Faturas.

Menu SettingsEnabled when: NOT SalFindWindow ( hWndMDI , "frmFaturas" )

Page 123: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 123/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Menu ActionsCall SalCreateWindow( frmFaturas , hWndMDI )

Menu SeparatorMenu Item: Sair

Status Text: Sair do sistema.Menu Actions

Call SalSendMsg( hWndMDI , SAM_Close , wParam ,lParam )Tool Bar

ContentsFunctionsWindow ParametersWindow VariablesMessage Actions

On SAM_CreateIf NOT SalModalDialog( dlgLogin , hWndMDI , hSql )

Call SalQuit( ) 

Depurando

  Inicialmente, observe o evento SAM_Create no Message Action do mdiPrincipal , esta parte do código é a primeira a ser executada pela aplicação. Neste momento está sendo

feita uma chamada ao dialog box dlgLogin, que foi definido no exemplo anterior.Conforme as definições lá feitas, observe que, se o dialog box  retornar FALSE, aaplicação é encerrada através da função SalQuit .

  Observe o menu Empresas, a seção Enable When, tem a finalidade de habilitar ou nãoo menu Empresas, de acordo com um valor lógico que será avaliado ali. Nesteexemplo, a função SalFindWindow se encarrega de fazer a verificação da existência dealguma janela com o nome informado e que ainda esteja aberta, caso encontre,retornará TRUE, fazendo com que o menu não fique habilitado para o usuário. Este éum bom exemplo de como fazer para não permitir que a mesma janela seja acionadaduas vezes, podendo vir a causar problemas para a aplicação.

  Ainda no menu Empresas, a seção Menu Actions contém todo o código a ser executadoquando o usuário acionar o menu. Neste caso, a janela  frmEmpresa é criada através douso da função SalCreateWindow. Todos os comandos do Centura podem ser utilizadosnum Menu Actions, exceto o comando On, que captura eventos ocorridos no sistema.

  Para obter maiores informações a respeito da utilização das funções do Centura,consulte o apêndice F, Guia de Referência das Funções SAL.

Page 124: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 124/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Form de manutenção na tabela de empresas

Esta tela de manutenção realiza as funções de consultar, imprimir, incluir, alterar e excluirinformações da tabela de empresa ( tabela COMPANY ) . De uma forma simples e rápida

 procuraremos mostrar como é possível fazer isso, utilizando a linguagem SAL. Um

conhecimento básico de linguagem padrão SQL é necessário agora para os comandosSelect, Insert, Update e Delete.

Consulte o Capítulo 3 –  Acesso ao SQLBase, para maiores informações.

Esta janela é chamada pelo mdiPrincipal quando o usuário ativa o menu Empresas.

Esta tela possui o seguinte comportamento : Inicialmente, o usuário pode realizar umaconsulta. Caso saiba o código da empresa a ser consultada, basta digitar este código nocampo “Código” ( dfCOMPANY_ID ) e então clicar no botão “Procurar” ( pbPROCURAR ). Feito isso, os dados da empresa serão mostrados na tela. Utilizando os botões da barra deferramentas, o usuário pode visualizar o primeiro registro com muita facilidade, para tanto

 basta clicar no botão identificado pelo símbolo “|<” (  pbPRIMEIRO  ). Para ver o últimoregistro, é só clicar no botão com o símbolo “>|” ( pbULTIMO ). Dessa forma, fica bastantefácil a navegação através de todos os registros da tabela. Nesse momento, o usuário podealterar os campos que julgar necessário e então clicar no botão “Gravar” (  pbGRAVAR ) .Assim é possível incluir uma nova empresa, o usuário necessita apenas preencher oscampos e acionar o botão “Gravar”. O Botão “Gravar” distingue o momento correto de

executar uma inclusão ou uma alteração. Para excluir uma empresa, basta fazer umaconsulta, localizar a empresa desejada e clicar no botão “Excluir” ( pbEXCLUIR ).

 Neste exemplo, a impressão do relatório não tem nenhum relacionamento com os dadosque estiverem sendo mostrados no momento. O relatório é impresso sempre com todas asempresas existentes no cadastro.

Page 125: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 125/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Observe abaixo, o código fonte completo desta tela :

Form Window: frmEmpresa Accesories Enabled? YesDisplay Settings

 Automatically Created at Runtime? NoTool Bar

ContentsPushbutton: pbPRIMEIRO

Message ActionsOn SAM_Click

If nTotalLinhas < 2Call SalMessageBox( MSG_ErrNAV , "Err", MB_Ok )

ElseCall SqlFetchRow( hSqlEmpresa , 0, lParam )

Pushbutton: pbANTERIORMessage Actions

On SAM_ClickIf nTotalLinhas < 2

Call SalMessageBox( MSG_ErrNAV , "Err", MB_Ok )Else

Call SqlFetchPrevious( hSqlEmpresa , lParam )Pushbutton: pbPROXIMO

Message ActionsOn SAM_ClickIf nTotalLinhas < 2

Call SalMessageBox( MSG_ErrNAV , "Err", MB_Ok )Else

Call SqlFetchNext( hSqlEmpresa , lParam )Pushbutton: pbULTIMO

Message ActionsOn SAM_Click

If nTotalLinhas < 2Call SalMessageBox( MSG_ErrNAV , "Err", MB_Ok )

ElseCall SqlFetchRow( hSqlEmpresa , nTotalLinhas-1, lParam )

ContentsBackground Text: CódigoData Field: dfCOMPANY_ID

DataMaximum Data Length: 3Data Type: Number

Message ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Call SalEnableWindow( hWndItem )

Background Text: NomeData Field: dfCOMPANY_NAME

DataMaximum Data Length: 30Data Type: String

Message ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Background Text: Endereço

Data Field: dfADDRESSDataMaximum Data Length: 50Data Type: String

Message ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Background Text: TelefoneData Field: dfPHONE

DataMaximum Data Length: 20Data Type: String

Message ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Background Text: CidadeData Field: dfCITY

DataMaximum Data Length: 30

Page 126: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 126/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Data Type: StringMessage Actions

On PAM_LimpaCall SalClearField( hWndItem )

Background Text: EstadoData Field: dfSTATE

DataMaximum Data Length: 30

Data Type: StringMessage Actions

On PAM_LimpaCall SalClearField( hWndItem )

Background Text: PaísData Field: dfCOUNTRY

DataMaximum Data Length: 30Data Type: String

Message ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Background Text: Web SiteData Field: dfCORPORATE_URL

DataMaximum Data Length: 128

Data Type: StringMessage ActionsOn PAM_Limpa

Call SalClearField( hWndItem )Pushbutton: pbLIMPAR

Title: LimparMessage Actions

On SAM_ClickCall SalSendMsgToChildren( hWndForm, PAM_Limpa, 0, 0 )Set nTotalLinhas = 0

Pushbutton: pbGRAVARMessage Actions

On SAM_ClickIf SalIsWindowEnabled( dfCOMPANY_ID )

Call SqlPrepareAndExecute( hSqlEmpresa, sSqlInsert )Else

Call SqlPrepareAndExecute( hSqlEmpresa, sSqlUpdate )Call SqlCommit( hSqlEmpresa )Call SalSendMsg( pbLIMPAR , SAM_Click, 0, 0 )

Pushbutton: pbEXCLUIRMessage Actions

On SAM_ClickIf NOT SalIsWindowEnabled( dfCOMPANY_ID )

If IDYES = SalMessageBox( "Confirma a exclusão do registro", "Exclusão", MB_YesNo )Call SqlPrepareAndExecute( hSqlEmpresa, sSqlDelete )Call SqlCommit( hSqlEmpresa )Call SalSendMsg( pbLIMPAR , SAM_Click, 0, 0 )

Pushbutton: pbPROCURARMessage Actions

On SAM_ClickIf NOT SalIsNull( dfCOMPANY_ID )

Set sWhere = " WHERE COMPANY.COMPANY_ID = :frmEmpresa.dfCOMPANY_ID "

ElseSet sWhere = STRING_NullCall SqlPrepareAndExecute( hSqlEmpresa , sSqlSelect || sWhere || " ORDER BY COMPANY_ID " )If SqlFetchNext( hSqlEmpresa , lParam )

Call SqlGetResultSetCount( hSqlEmpresa, nTotalLinhas )Call SalDisableWindow( dfCOMPANY_ID )

ElseSet nTotalLinhas = 0

Pushbutton: pbIMPRIMIRMessage Actions

On SAM_ClickCall SalReportView( hWndForm, hWndNULL, "company.qrp",

"address, city, company_id, company_name, url, country, phone, state" ,"address, city, company_id, company_name, url, country, phone, state" , lParam )

Pushbutton: pbCANCELARMessage Actions

On SAM_ClickCall SalSendMsg( hWndForm , SAM_Close , 0, 0 )

Functions

Page 127: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 127/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Window ParametersWindow Variables

String: sWhereString: sSqlSelectString: sSqlInsertString: sSqlUpdateString: sSqlDelete!

Sql Handle: hSqlEmpresaNumber: nTotalLinhas!String: addressString: cityNumber: company_idString: company_nameString: urlString: countryString: phoneString: state

Message ActionsOn SAM_Create

Set nTotalLinhas = 0Set sSqlSelect = "

SELECT ADDRESS , CITY ,

COMPANY_ID , COMPANY_NAME ,CORPORATE_URL , COUNTRY ,PHONE , STATE

INTO:frmEmpresa.dfADDRESS , :frmEmpresa.dfCITY ,:frmEmpresa.dfCOMPANY_ID , :frmEmpresa.dfCOMPANY_NAME ,:frmEmpresa.dfCORPORATE_URL , :frmEmpresa.dfCOUNTRY ,:frmEmpresa.dfPHONE , :frmEmpresa.dfSTATE

FROM COMPANY "Set sSqlInsert = "

INSERT INTO COMPANY ( ADDRESS , CITY ,COMPANY_ID , COMPANY_NAME ,CORPORATE_URL , COUNTRY ,PHONE , STATE )

VALUES (

:frmEmpresa.dfADDRESS , :frmEmpresa.dfCITY ,:frmEmpresa.dfCOMPANY_ID , :frmEmpresa.dfCOMPANY_NAME ,:frmEmpresa.dfCORPORATE_URL , :frmEmpresa.dfCOUNTRY ,:frmEmpresa.dfPHONE , :frmEmpresa.dfSTATE ) "

Set sSqlUpdate = "UPDATE COMPANY SET ADDRESS = :frmEmpresa.dfADDRESS ,CITY = :frmEmpresa.dfCITY ,COMPANY_NAME = :frmEmpresa.dfCOMPANY_NAME ,CORPORATE_URL = :frmEmpresa.dfCORPORATE_URL ,COUNTRY = :frmEmpresa.dfCOUNTRY ,PHONE = :frmEmpresa.dfPHONE ,STATE = :frmEmpresa.dfSTATE

WHERE COMPANY_ID = :frmEmpresa.dfCOMPANY_ID"Set sSqlDelete = "DELETE FROM COMPANY WHERE COMPANY_ID = :f rmEmpresa.dfCOMPANY_ID"Call SqlConnect( hSqlEmpresa )

On SAM_ReportStart

Call SqlPrepare( hSqlEmpresa," SELECT ADDRESS , CITY , COMPANY_ID , COMPANY_NAME ,CORPORATE_URL , COUNTRY , PHONE , STATE

INTO:address, :city, :company_id, :company_name,:url , :country , :phone , :state

FROM COMPANYORDER BY COMPANY_ID " )

On SAM_ReportFetchInitReturn SqlExecute( hSqlEmpresa )

On SAM_ReportFetchNextReturn SqlFetchNext( hSqlEmpresa , lParam ) 

Depurando

Page 128: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 128/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  Observe as variáveis definidas neste form na seção Window Variables. Através davariável  sWhere, demonstramos a utilização de uma pesquisa onde a condição só éconhecida quando em tempo de execução. A variável  sWhere é usada para montar acondição da busca de empresa. As demais variáveis,  sSqlSelect , sSqlInsert , sSqlUpdate e sSqlDelete são utilizadas para armazenar os comandos SQL Select , Insert , Update e

 Delete. A utilização destas variáveis pode ser observada no evento SAM_Create  doform frmEmpresa, onde os comandos são atribuídos às variáveis e, posteriormente, nos botões  pbGRAVAR  e  pbEXCLUIR,  onde os comandos são efetivamente utilizados, junto ao banco de dados. Para a utilzação de todos os comandos sql desta janela, foidefinido o handle de conexão chamado hSqlEmpresa. A variável nTotalLinhas  serve

 para o controle da navegação nos registros pesquisados. As demais variáveis (address,city, company_id , company_name, url , country,  phone  e  state  ) são utilizadas para aemissão do relatório das empresas. Sua utilização se faz visível junto ao eventoSAM_ReportStart .

  Observe que o form window  frmEmpresa  foi configurado de forma a não ser criadoautomaticamente, através da propriedade Automatically Created at Runtime, que pode

ser configurada no Customizer  ou no Attribute Inspector .   Neste exemplo é utilizado botões na barra de ferramentas do form window

frmEmpresa, portanto, observe o código da seção Contents  da Tool Bar   deste  form

window. Todos os botões da tool bar   possuem um código bastante parecido, onde basicamente é feita uma verificação para saber se a navegação pode ser realizada e,caso positivo, é feita uma chamada à função SqlFetchRow para que a navegação sejaefetivada. Caso a navegação não seja possível, é mostrada ao usuário uma mensagemde alerta explicando o problema, através da função SalMessageBox. Observe que nautilização desta função é usada uma constante do usuário chamada  MSG_ErrNAV , quefoi definida na seção Constants, no Global Declarations. Foi utilizada esta técnica parademonstrar uma maneira de padronizar todas as mensagens de erro de navegação.

  Estando na seção Constants, observe a definição de uma outra constante chamada PAM_Limpa. Esta constante é utilizada em todos os data fields para capturar o eventogerado pelo usuário para que os campos da janela sejam limpos, permitindo novadigitação.

  Observe o  Message Actions do data field dfCOMPANY_ID. O evento  PAM_Limpa  écapturado e a ação tomada é a de limpar o conteúdo do objeto, a função SalClearField  faz isso. A próxima função chamada é SalEnableWindow, que disponibiliza o objeto

 para a utilização do usuário. Este procedimento é feito todas as vezes em que o data

 field  dfCOMPANY_ID precise ser reiniciado.  Os data fields  restantes seguem o mesmo padrão quanto ao evento  PAM_Limpa. Ou

seja, fazem uma chamada a função SalClearField  para que o seu conteúdo seja limpo.  Observe que os objetos ( data fields ) os quais recebem os dados digitados pelo usuário,

estão configurados conforme a definição da tabela no banco de dados, no que dizrespeito aos tipos de dados e aos tamanhos dos campos.

  O evento SAM_Click   no  Message Actions  do  push button pbLIMPAR  envia amensagem  PAM_Limpa  ( utilizando a função SalSendMsgToChildren  ) para todos os“objetos filhos” do objeto identificado pelo handle hWndForm, que, neste caso, refere-se ao frmEmpresa. Este é o procedimento mais recomendado, de forma que, cadaobjeto filho implemente seu próprio método  PAM_Limpa. Observe que o contador delinhas também é iniciado.

  Já o push button  pbGRAVAR, identifica se a operação a ser executada é uma inclusãoou alteração, baseando-se no estado do objeto dfCOMPANY_ID. Se este objeto estiver

Page 129: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 129/580

Page 130: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 130/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Form de manutenção na tabela de contatos

 Nesta tela é mostrada a utilização do objeto top level table window para imprimir, incluir,alterar e excluir informações na tabela de contatos. Neste exemplo, usaremos o objeto top-level table window, onde os dados são trabalhados na forma de planilha. Assim, pode-se

facilmente trabalhar com vários registros simultaneamente. É possível incluir registros,alterar e excluir “ao mesmo tempo”.

A table window é um objeto bastante poderoso e complexo, conforme demonstramos nosrecursos básicos. As informações são trazidas do banco de dados e mostradas na formatabular, onde cada coluna visual representa uma coluna do banco de dados, ou um campo.Cada linha da table window refere-se a uma linha da tabela no banco de dados, ou, umregistro. O encontro de uma linha numa determinada coluna recebe o nome de célula. Estacélula possui praticamente o mesmo comportamento de um data field, podendo inclusiveassumir o comportamento de um combo box, multiline field ou check box, além docomportamento de data field.

 Na lateral esquerda de cada linha da table window existe uma coluna cinza, não editável.Esta coluna chama-se row header e normalmente é utilizada para servir de sinalizador dostatus da linha da table window. É no row header que é mostrado os flags da linha.

Consulte o Capítulo 2 para obter maiores detalhes sobre a table window, seus flags eatributos.

O comportamento desta tela é parecido com a tela de Empresas, porém, não existe aconsulta, já que os dados são mostrados todos na table window. Um outro recursointeressante que é demonstrado é a utilização da coluna  Empresa ( colCOMPANY_NAME  ), que foi programada e tem o comportamento similar ao objeto combo box.

Observe o código fonte :

Table Window: frmContatosDisplay Settings

Initial State: MaximizedDescription:

Page 131: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 131/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Named MenusMenuTool Bar

ContentsPushbutton: pbNOVALINHA

Message ActionsOn SAM_Click

Call fNovaLinha( )

Pushbutton: pbATUALIZARMessage Actions

On SAM_ClickCall SqlPrepare( hSqlContatos, "

INSERT INTO CONTACT (CONTACT.COMPANY_ID , CONTACT.CONT_EMAIL ,CONTACT.CONT_FAX , CONTACT.CONT_FIRST_NAME ,CONTACT.CONT_LAST_NAME , CONTACT.CONT_PHONE ,CONTACT.CONT_TITLE , CONTACT.CONTACT_ID )

VALUES (:frmContatos.colCOMPANY_ID , :frmContatos.colCONT_EMAIL ,:frmContatos.colCONT_FAX , :frmContatos.colCONT_FIRST_NAME ,:frmContatos.colCONT_LAST_NAME , :frmContatos.colCONT_PHONE ,:frmContatos.colCONT_TITLE , :frmContatos.colCONTACT_ID ) " )

Call SalTblDoInserts( hWndForm , hSqlContatos, TRUE )!

Call SqlPrepare( hSqlContatos, "UPDATE CONTACT SETCONTACT.COMPANY_ID = :frmContatos.colCOMPANY_ID ,CONTACT.CONT_EMAIL = :frmContatos.colCONT_EMAIL ,CONTACT.CONT_FAX = :frmContatos.colCONT_FAX ,CONTACT.CONT_FIRST_NAME = :frmContatos.colCONT_FIRST_NAME ,CONTACT.CONT_LAST_NAME = :frmContatos.colCONT_LAST_NAME ,CONTACT.CONT_PHONE = :frmContatos.colCONT_PHONE ,CONTACT.CONT_TITLE = :frmContatos.colCONT_TITLE

WHERECONTACT.CONTACT_ID = :frmContatos.colCONTACT_ID " )

Call SalTblDoUpdates( hWndForm , hSqlContatos, TRUE )!Call SqlPrepare( hSqlContatos, "DELETE FROM CONTACT

WHERE CONTACT.CONTACT_ID = :frmContatos.colCONTACT_ID" )Call SalTblDoDeletes( hWndForm, hSqlContatos, ROW_MarkDeleted )

Call fPopulate( )Pushbutton: pbIMPRIMIRMessage Actions

On SAM_ClickCall SalShowWindow( colCOMPANY_ID )Call SalReportTableView( hWndForm , hWndNULL , "contatos.qrp", lParam )Call SalHideWindow( colCOMPANY_ID )

Pushbutton: pbCANCELARMessage Actions

On SAM_ClickCall SalSendMsg( hWndForm , SAM_Close , 0, 0 )

ContentsColumn: colCOMPANY_IDColumn: colCONTACT_ID

Title: Código ContatoMaximum Data Length: 18

Column: colCONT_FIRST_NAMETitle: Primeiro NomeMaximum Data Length: 18

Column: colCONT_LAST_NAMETitle: Último NomeMaximum Data Length: 18

Column: colCOMPANY_NAMETitle: EmpresaMaximum Data Length: 30Cell Options

Cell Type? Drop Down ListList ValuesMessage Actions

On SAM_CreateCall SalListPopulate( hWndItem , hSql , "SELECT COMPANY_NAME FROM COMPANY " )

On SAM_AnyEditCall SqlPrepareAndExecute( hSql , " SELECT COMPANY_ID FROM COMPANY

INTO :frmContatos.colCOMPANY_ID WHERE COMPANY_NAME = :MyValue " )Call SqlFetchNext( hSql , lParam )

Page 132: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 132/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Column: colCONT_EMAILTitle: e-mailMaximum Data Length: 64

Column: colCONT_TITLETitle: CargoMaximum Data Length: 18

Column: colCONT_PHONETitle: Telefone

Maximum Data Length: 18Column: colCONT_FAX

Title: Num FaxMaximum Data Length: 18

FunctionsFunction: fNovaLinha

Description:ReturnsParametersStatic VariablesLocal variables Actions

Call SalTblSetFocusCell( hWndForm,SalTblInsertRow( hWndForm,TBL_MaxRow),colCONTACT_ID, -1, -1)Function: fPopulate

Description:Returns

ParametersStatic VariablesLocal variables Actions

Call SalTblPopulate( hWndForm , hSqlContatos, "SELECT

CONTACT.COMPANY_ID ,CONTACT.CONT_EMAIL ,CONTACT.CONT_FAX ,CONTACT.CONT_FIRST_NAME ,CONTACT.CONT_LAST_NAME ,CONTACT.CONT_PHONE ,CONTACT.CONT_TITLE ,CONTACT.CONTACT_ID ,COMPANY.COMPANY_NAME

INTO

:frmContatos.colCOMPANY_ID ,:frmContatos.colCONT_EMAIL ,:frmContatos.colCONT_FAX ,:frmContatos.colCONT_FIRST_NAME ,:frmContatos.colCONT_LAST_NAME ,:frmContatos.colCONT_PHONE ,:frmContatos.colCONT_TITLE ,:frmContatos.colCONTACT_ID ,:frmContatos.colCOMPANY_NAME

FROM CONTACT , COMPANYWHERE

CONTACT.COMPANY_ID = COMPANY.COMPANY_ID ", TBL_FillAll )Window ParametersWindow Variables

Sql Handle: hSqlContatosMessage Actions

On SAM_CreateCall SqlConnect( hSqlContatos )Call fPopulate( )

On SAM_RowHeaderDoubleClickCall SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, TRUE )

On SAM_RowHeaderClickCall SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, FALSE ) 

Page 133: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 133/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Depurando

  Observe a única variável definida na seção Window Variables deste form. Apenas umavariável tipo sql handle ( hSqlContatos ) é utilizada para realizar todas as operações de

 pesquisa e manutenção na tabela. Esta variável é conectada ao banco de dados no

evento SAM_Create do form.   No evento SAM_Create do form é feita a conexão com o banco de dados utilizando

uma função chamada fPopulate. Esta função não faz parte das funções pré-definidas pelo Centura, trata-se de uma função de usuário. Sua finalidade é carregar os dados databela do banco de dados para a table window.

  Observe o código da função fPopulate, definida na seção Functions do top-level tablewindow frmContatos. A função SalTblPopulate executa o comando select e carrega osdados retornados na table window.

  Uma outra função de usuário é utilizada, a qual encontra-se definida na mesma seçãoFunctions deste form. É a função fNovaLinha, que insere uma nova linha na table

window e posiciona o cursor de edição na coluna colCONTACT_ID, para que ousuário inicie a digitação das informações da nova linha.  Ainda no Message Actions do do top-level table window frmContatos, observe o

código dos eventos SAM_RowHeaderClick, que desliga o flag de linha marcada paraser excluída, e o evento SAM_RowHeaderDoubleClick, onde a linha é então marcada

 para exclusão. Essa ação de marcar/desmarcar a linha é efetuada pela funçãoSalTblSetRowFlags.

   Na seção Contents estão definidas as colunas desta table window. Observe que paracada coluna foi configurado um tamanho máximo limitando que sejam digitadasinformações maiores do que a capacidade das colunas da tabela no banco de dados.

  A coluna colCOMPANY_NAME possui uma característica especial, assumindo o

comportamento de um combo box, que é configurado através do customizer ou doattribute inspector. Observe o seu Message Actions. No evento SAM_Create, atravésda função SalListPopulate, o Centura carrega para a coluna os nomes das empresas datable COMPANY. O evento SAM_AnyEdit é utilizado para capturar o momento emque o usuário escolhe uma das empresas na lista. Neste momento, é recuperado databela o código da empresa escolhida, e este é armazenado na colunacolCOMPANY_ID. Observe a utilização da variável de sistema chamada MyValue,que neste caso representa o texto escolhido na porção combo box da coluna.

  O restante do código do programa está na seção Tool Bar. Observe que o push button pbNOVALINHA apenas faz uma chamada à função fNovaLinha. No eventoSAM_Click do push button pbATUALIZAR são executados os comandos insert,update e delete, da forma mais simples a ser implementada no Centura, utilizando-se asfunções SalTblDoInserts, SalTblDoUpdates e SalTblDoDeletes, que procuram na tablewindow alguma linha marcada com os flags de inclusão, alteração e exclusão. Assim,

 pode-se efetuar a devida operação na tabela do banco de dados.  O push button pbIMPRIMIR ativa o preview do relatório, fazendo uso da função

SalReportTableView. Observe que a coluna colCOMPANY_ID é mostrada(SalShowWindow) antes da chamada do preview do relatório, e escondida(SalHideWindow) logo após. Isso é feito, pois a função SalReportTableView só leva

 para o relatório as colunas visíveis da table window. Essa operação é rápida osuficiente para que o usuário não perceba visualmente o ocorrido.

  Para obter maiores informações a respeito da utilização das funções do Centura,consulte o apêndice F, Guia de Referência das Funções SAL.

Page 134: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 134/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 135: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 135/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Construindo um Álbum de fotografias

 No exemplo que se segue demonstramos vários recursos do SQLWindows/32 numa aplicação bastantesimples e curiosa, um Álbum de fotografias. Neste álbum, as fotografias são armazenadas numa base dedados SQL, mais especificamente, utilizando uma base Centura SQLBase.

Este exemplo é composto de três janelas, sendo que, duas delas são do tipo dialog box e uma do tipo formwindow. Na figura abaixo, pode ser observada a janela principal do álbum de fotografias.

Janela principal do Álbum de Fotografias.

Através desta janela, é possível visualizar as diversas categorias de fotografias que já foram cadastradas no banco de dados. Assim que uma categoria é escolhida, no list box ‘Categoria’, os nomes das fotografias nela

cadastradas são listados no list box ‘Imagens’. Quando o usuário clica no nome da fotografia, a imagemcorrespondente é mostrada logo abaixo, no objeto picture.

A qualquer momento podem ser acrescentadas novas categorias às já existentes. Essa função é acionadaatravés do botão chamado ‘Nova...’, localizado logo acima do list box ‘Categoria’, onde são mostrados os

nomes das categorias cadastradas. A janela onde as categorias são inseridas, é mostrada na figura abaixo :

Page 136: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 136/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Janela de cadastramento de novas categorias.

A janela de inclusão de categorias é extremamente simples, possui um list box, onde sãoapresentados os nomes das categorias que já estão cadastradas na base de dados, e um data

field para digitação do nome da nova categoria.

O cadastramento das imagens é feito através da janela mostrada na figura abaixo.

Janela de escolha de novas imagens.

Esta janela apresenta alguns recursos interessantes e bem fáceis de serem utilizados.Logo de início, o combo box ‘Drive’, que é um combo especial, mostra de forma automática todos os drives

disponíveis. Este combo box é um dos objetos da biblioteca de classes Visual Toolchest, que acompanha oCTD.O list box ‘Diretório’, também um objeto da Visual Toolchest, apresenta um

comportamento já bem familiar ao ambiente Windows, onde é permitido navegar entre osdiretórios do drive escolhido no combo box ‘Drive’. 

Assim que o diretório é escolhido, os nomes dos arquivos são mostrados no list box abaixo, conforme o tipode imagem escolhido no combo box ‘Tipo de Imagem’. Quando o usuário clica no nome de um arquivo, aimagem correspondente a este arquivo é visualizada ao lado direito, num objeto picture.Quando o usuário desejar incluir no banco de dados a imagem mostrada, basta clicar no

 botão ‘Incluir’. 

Para que este exemplo funcione corretamente, são necessários dois pré-requisitos básicos :

1  –  A biblioteca de classes Visual Toolchest deve estar disponível. Caso não esteja, você precisa instalar corretamente o CTD, para isso, siga as instruções descritas no Apêndice F -Guia de Instalação do Centura Team Developer 2000.

Page 137: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 137/580

Programando com o Centura Team Developer 2000

Página PAGE 582

2  –  As tabelas utilizadas neste exemplo precisam existir no banco de dados. Do contrário,você deve executar o programa dbAlbum.app, o qual se encontra disponivel para downloadno site http://www.centuraexplorer.com.br/livro_ctd2000/ .

Obs : O programa fonte deste exemplo, ‘Album.app’, também pode ser encontrado no site.

Para programar este exemplo, é necessário informar ao Centura SQLWindows/32 que você deseja utilizar a biblioteca de classes Visual Toolchest. Essa informação deve estar na seção do outline chamada Libraries.Para entrar com essa informação, siga os seguintes passos :

1 –  Inicie uma nova aplicação clicando no botão ‘New’. 2 –  No quadro do lado esquerdo do Centura SQLWindows/32, a árvore dos componentes da aplicação, cliqueuma vez no primeiro elemento da árvore, chamado ‘Application1’. 3 –  Agora, no quadro direito do Centura SQLWindows/32, onde é mostrado o outline, clique na tab inferiorchamada ‘Libraries’. Isto fará com que apenas a seção Libraries seja mostrada no outline.A janela do Centura SQLWindows/32 deve estar conforme mostrada na figura abaixo :

Janela do Centura SQLWindows/32, mostrando uma aplicação nova.

4 –   No outline, clique na seção ‘Libraries’ com o botão direito do mouse, fazendo com que o menu decontexto para o item ‘Libraries’ seja mostrado.

5 –   No menu de contexto, apenas posicione o mouse sobre a opção chamada ‘Add Next Level’. Isso fará com

que um novo menu seja mostrado. Neste menu, aparecem os nomes das bibliotecas que podem seradicionadas ao seu programa. Escolha, então, a opção chamada ‘Visual Toolchest’. Isto fará com que a

 biblioteca chamada ‘vt.apl’ seja adicionada ao programa fonte. 

Page 138: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 138/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A biblioteca Visual Toolchest sendo adicionada ao outline.

Observe abaixo, o fonte da janela principal do álbum de fotografias :

Form Window: frmAlbumTitle: Album Accesories Enabled? YesTool Bar

ContentsBackground Text: CategoriaPushbutton: pbINCLUIR_CATEGORIA

Message ActionsOn SAM_Click

If SalModalDialog( dlgINCLUIR_CATEGORIAS , hWndForm )Call SalSendMsg( lbCATEGORIAS, CEM_Populate, wParam , lParam )

List Box: lbCATEGORIAS

List InitializationMessage ActionsOn SAM_Create

Call SalSendMsg( hWndItem, CEM_Populate, wParam , lParam )On CEM_Populate

Call SalListPopulate( hWndItem , hSql, "SELECT NOME FROM IMG_CATEGORIAS" )On SAM_Click

Set sItemEscolhido = SalListQueryTextX( hWndItem , SalListQuerySelection( hWndItem ) )Call SqlPrepareAndExecute( hSql , "SELECT ID_CATEGORIA INTO :nIdCategoria FROM

IMG_CATEGORIASWHERE NOME = :sItemEscolhido " )

Call SqlFetchNext( hSql , lParam )Call SalSendMsg( lbIMAGENS, CEM_Populate, wParam , lParam )

Background Text: ImagensList Box: lbIMAGENS

Message ActionsOn CEM_Populate

Call SalListPopulate( hWndItem , hSql, "SELECT NOME_ARQ FROM FOTOS WHERECATEGORIA = :nIdCategoria" )

On SAM_ClickSet sImagem = SalListQueryTextX( hWndItem , SalListQuerySelection( hWndItem ) )Call SqlPrepareAndExecute( hSql , " SELECT FOTO INTO :lsIMAGEM FROM FOTOS

WHERE NOME_ARQ = :sImagem AND CATEGORIA =:nIdCategoria " )

If SqlFetchNext( hSql , lParam )Call SalPicSetString( picIMAGEM , PIC_FormatObject, lsIMAGEM )

Pushbutton: pbEXCLUIR_IMGMessage Actions

On SAM_ClickIf IDYES = SalMessageBox( "Deseja realmente excluir a imagem " || sImagem || " ?" ,"Confirma

exclusão", MB_YesNo | MB_IconQuestion)Call SqlPrepareAndExecute( hSql , " DELETE FROM FOTOS WHERE nome_arq = :sImagem

 AND categoria = :nIdCategoria" )

If SqlCommit( hSql )Call SalSendMsg( lbIMAGENS, CEM_Populate, wParam , lParam )

Page 139: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 139/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Pushbutton: pbINCLUIR_IMGMessage Actions

On SAM_ClickCall SalModalDialog( dlgINCLUIR_IMAGENS , hWndForm , nIdCategoria )Call SalSendMsg( lbIMAGENS, CEM_Populate, wParam , lParam )

ContentsPicture: picIMAGEM

Fit: Size for Best Fit

Tile To Parent? YesFunctionsWindow ParametersWindow Variables

String: sItemEscolhidoNumber: nIdCategoriaString: sImagemLong String: lsIMAGEMSql Handle: hSql

Message ActionsOn SAM_Create

Set SqlDatabase = 'ISLAND'Call SqlConnect( hSql )

On SAM_CloseCall SqlDisconnect( hSql ) 

Depurando

  Este form contém cinco variáveis. sItemEscolhido é utilizada no SAM_Click do list box lbCATEGORIAS, para armazenar o nome da categoria escolhida pelo usuário,assim como a variável nIdCategoria armazena o código da categoria escolhida. Deforma similar a variável sImagem utilizada no SAM_Click do lbIMAGENS, armazenao nome do arquivo da imagem que o usuário escolheu,. Ainda neste mesmo evento, avariável lsIMAGEM serve de intermediária entre a imagem no banco de dados e suarepresentação visual ao usuário, através do objeto picIMAGEM. Uma imagem gravadano banco de dados precisa ser trazida à aplicação numa variável do tipo long string,

 para ser então associada a um objeto picture. Isso é feito utilizando-se a funçãoSalPicSetImagem. A variável hSql é o handle sql conectado ao banco de dados.

  Observe que, o código do botão pbEXCLUIR_IMG faz com que uma caixa de diálogo padrão do Windows pergunte ao usuário se ele deseja realmente excluir a imagemselecionada. Esse procedimento sempre é adotado antes das exclusões de informaçõesno banco de dados. O registro será excluído apenas se o usuário confirmar a exclusão,clicando no botão ‘Sim’. 

  Observe que os botões pbINCLUIR_IMG e pbINCLUIR_CATEGORIA, apenasativam a janela de inclusão de imagens e categorias, respectivamente.

   Neste exemplo é utilizado um evento definido pelo programador, chamadoCEM_Populate. Esta definição é feita na seção Constants do Global Declarations. Esteevento permite forçar a carga dos dados no objeto, neste caso, no lbCATEGORIAS eno lbIMAGENS.

  Para obter maiores informações a respeito da utilização das funções do Centura,consulte o Apêndice F - Guia de Referência das Funções SAL.

Observe abaixo o fonte da janela onde são incluídas novas categorias :

Dialog Box: dlgINCLUIR_CATEGORIASTitle: CategoriasContents

Background Text: Nome da Nova CategoriaData Field: dfCATEGORIA

Data

Page 140: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 140/580

Page 141: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 141/580

Programando com o Centura Team Developer 2000

Página PAGE 582

inclui a categoria digitada pelo usuário, com o código obtido no comando anterior, natabela IMG_CATEGORIAS.

  Observe que, o código do botão pbOK faz uma crítica ao valor retornado pela funçãofIncluiCategoria. Se a função retornar FALSE, significa que a inclusão não foirealizada com sucesso. Então, é enviada a mensagem SAM_Close para o top level,

fazendo com que a janela seja encerrada. Se a inclusão for bem sucedida, a mesmamensagem é enviada, porém, o valor do último parâmetro da função SalSendMsg é 1,ou seja, lParam é igual a 1. Observe que na mensagem SAM_Close dodlgINCLUIR_CATEGORIAS, a última função utilizada, SalEndDialog, usa a variávellParam no seu último parâmetro. Ess procedimento faz que a janela principal daaplicação, o frmAlbum, tome conhecimento do momento em que a inclusão dacategoria foi bem sucedida, para então carregar novamente os dados no list boxlbCATEGORIAS.

  Obtenha maiores informações a respeito da utilização das funções do SQLWindows/32consultando o Apêndice F - Guia de Referência das Funções SAL.

Observe abaixo o fonte da janela onde são incluídas novas imagens :

Dialog Box: dlgINCLUIR_IMAGENSTitle: Incluir ImagensContents

Background Text: DriveCombo Box: cmbDRIVE

Class: cDriveComboBoxMessage Actions

On SAM_ClickSet sDrive = cmbDRIVE.GetSelectedDrive( )Call SalSendMsg( lbDIR , CEM_Populate, 0, 0 )

Background Text: DiretóriosBackground Text: Pré-visualização da imagemBackground Text: ArquivosList Box: lbDIR

Class: cDirListBoxMessage Actions

On CEM_PopulateCall lbDIR.Populate( sDrive )

On VTM_ClickCall SalSendMsg( lbARQUIVOS, CEM_Populate, 0, 0 )

List Box: lbARQUIVOSMessage Actions

On CEM_PopulateCall fCarregaArquivos( )

On SAM_ClickCall SalPicSetFile( picPREVIEW , lbDIR.GetSelectedDir( ) || "\\" || SalListQueryTextX( hWndItem ,

SalListQuerySelection( hWndItem ) ) )Picture: picPREVIEW

Pushbutton: pbINCLUIRMessage Actions

On SAM_ClickCall fIncluir( )

Pushbutton: pbFECHARMessage Actions

On SAM_ClickCall SalDestroyWindow( hWndForm )

Background Text: Tipo de ImagemCombo Box: cmbTIPO

List InitializationText: Windows ( *.bmp )Text: Imagens Gif ( *.gif )Text: Internet ( *.jpg )

Message ActionsOn SAM_Create

Call SalListSetSelect( hWndItem , 0 )On SAM_Click

Page 142: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 142/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Call fCarregaArquivos( )Functions

Function: fCarregaArquivosLocal variables

String: sFiltroString: asArquivos [*]

 ActionsCall SalListClear( lbARQUIVOS )

Set sFiltro = lbDIR.GetSelectedDir( ) || fGetTipoArquivo ( )Call VisDosEnumFiles( sFiltro , FA_Standard , asArquivos )Call fCopiaVetorParaLista( asArquivos , lbARQUIVOS )

Function: fGetTipoArquivoReturns

String: Actions

If cmbTIPO = "Windows ( *.bmp )"Return "\\*.bmp"

If cmbTIPO = "Imagens Gif ( *.gif )"Return "\\*.gif"

If cmbTIPO = "Internet ( *.jpg )"Return "\\*.jpg"

Function: fIncluirLocal variables

Long String: lsIMAGEM

String: sNomeArqString: sPathCompleto Actions

Call SalPicGetString( picPREVIEW, PIC_FormatObject, lsIMAGEM )Set sPathCompleto = lbDIR.GetSelectedDir( ) || SalListQueryTextX( lbARQUIVOS , SalListQuerySelection(

lbARQUIVOS ) )Set sNomeArq = SalListQueryTextX( lbARQUIVOS , SalListQuerySelection( lbARQUIVOS ) )Call SqlPrepareAndExecute( hSql , "INSERT INTO FOTOS

( CATEGORIA , NOME_ARQ, DESC_FOTO , FOTO ) VALUES( :pnIdCategoria, :sNomeArq, :sPathCompleto , :lsIMAGEM ) " )

If SqlCommit( hSql )Call SalMessageBox( "Imagem foi incluída com sucesso.", "Inclusão de imagem", MB_Ok )

Window ParametersNumber: pnIdCategoria

Window VariablesString: sCategoria

String: sDriveSql Handle: hSqlMessage Actions

On SAM_CreateCall SqlConnect( hSql )Call SqlPrepareAndExecute( hSql , " SELECT NOME INTO :sCategoria FROM IMG_CATEGORIAS WHERE

ID_CATEGORIA = :pnIdCategoria" )If SqlFetchNext( hSql , lParam )

Call SalSetWindowText( hWndForm , "Escolher imagens a serem incluídas na categoria " || sCategoria )On SAM_Close

Call SqlDisconnect( hSql ) 

Depurando

  Observe que este dialog box recebe um parâmetro definido na seção WindowParameters, chamado pnIdCategoria. Este parâmetro indica a categoria onde asimagens serão incluídas. O nome da categoria, mostrado na barra de título do dialog

 box, através da função SalSetWindowText, é obtido no SAM_Create do dialog box.  Observe que o cmbDRIVE pertence a uma classe de objetos especial, a classe

cDriveComboBox. Este objeto não possui definições para o evento SAM_Create. Asinstruções para este evento encontran-se na classe. Apenas o código do SAM_Click foidefinido na instância, e este obtém a letra do drive escolhido ( através da funçãoGetSelectedDrive ) enviando a mensagem CEM_Populate para o lbDIR, que mostraráos diretórios do drive selecionado.

Page 143: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 143/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  O objeto lbDIR também pertence a uma classe especial, chamada cDirListBox. Nestaestão codificados os procedimentos para que este objeto comporte-se de forma similarao list box de diretórios do Windows. Isso é feito para tornar a utilização do objetofamiliar aos usuários do Windows.

  Observe o código do CEM_Populate do objeto lbARQUIVOS, onde é feita uma

chamada à função fCarregaArquivos, a qual é definida na seção Functions. Nela, sãoutilizadas algumas funções da biblioteca Visual Toolchest, entre elas a funçãoVisDosEnumFiles, que obtém os nomes dos arquivos, de acordo com o filtroespecificado na variável sFiltro. A função fCopiaVetorParaLista é definida pelo

 programador, e seu código ( conforme listado abaixo ) está presente na seção InternalFunctions do Global Declarations.

  A cada clique do usuário num dos nomes das imagens, mostrados no lbARQUIVOS, éexecutado o código do evento SAM_Click, onde a função SalPicSetFile mostra noobjeto picture o conteúdo de um arquivo de imagem tipo bmp, gif ou jpg.

  Observe a forma como é incluída a imagem no banco de dados, na função fIncluir. Afunção SalPicGetString copia a imagem mostrada no objeto picture para a variávellsIMAGEM, que é gravada no banco de dados.

  Para obter maiores informações a respeito da utilização das funções doSQLWindows/32, consulte o Apêndice F - Guia de Referência das Funções SAL.

Segue abaixo o código da função fCopiaVetorParaLista :

Function: fCopiaVetorParaListaDescription: Copia todos os elementos de um vetor tipo string para um objeto do tipo list box ou combo box.Parameters

String: pasVetor [*]Window Handle: phWndLista

Local variablesNumber: nNumElementosNumber: nNumItem

 ActionsCall SalArrayGetUpperBound( pasVetor , 1, nNumElementos )While nNumItem <= nNumElementos

Call SalListAdd( phWndLista , pasVetor [ nNumItem ] )Set nNumItem = nNumItem + 1 

Page 144: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 144/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Debug do Centura SQLWindows/32

O debugador  do Centura SQLWindows/32 é uma poderosa ferramenta que você tem emmãos para auxíliá-lo no processo de depurar a aplicação e encontrar possíveis falhas.Analisando a lógica de execução da aplicação, o conteúdo das variáveis e dos objetos, os

valores de retorno das funções, entre outros recursos que tornam indispensável oconhecimento do debug . Esta ferramenta é mostrada a seguir.

Para que você possa depurar sua aplicação é necessário que a mesma esteja sendoexecutada a partir do Centura SQLWindows/32. Não é possível depurar uma aplicaçãosendo executada a partir de um executável.Mesmo no Centura SQLWindows/32, existem algumas situações onde o depurador nãoatua. São elas :

  Funções externas  –  Estas funções são, geralmente, definidas em arquivos tipo DLL eEXE, são normalmente geradas através de outros compiladores.

  Dynalibs –  Uma dynalib é como uma DLL, o seu código já está compilado e protegido.  Objetos ActiveX  –  As funções e eventos destes objetos também são protegidos, não

sendo possível depurá-los. Porém, seus atributos estão acessíveis ao depurador.

O processo de depuração consiste em identificar uma linha no código fonte, onde, a partir desta linha, aexecução do programa poderá ser acompanhada passo-a-passo, assim como os valores dos objetos, variáveisetc, poderão ser analisados, e até mesmo alterados.

Para identificar a linha de código desejada, você deve clicar nesta linha com o mouse, e marcar a linha comobreakpoint . Então, a linha marcada terá sua cor alterada de modo a ser destacada visualmente das demaislinhas do programa. Estando com uma linha marcada, ative ou desative um breakpoint  de uma das seguintesmaneiras :

   pressione a tecla de atalho F9.  acione o menu de contexto e selecione a opção Toggle Breakpoint .  acione o menu Debug  / Breakpoints / Toggle.

Estes passos podem ser efetuados tanto em modo de execução como em modo de design.

Obs : A linha marcada como breakpoint  será destacada das demais linhas do programa, conforme definiçãofeita na janela de configurações de preferências. O default do Centura SQLWindows/32 é mostrar osbreakpoints na cor vermelha. Você pode alterar este default acionando o menu Tools / Preferences, na áreade configurações chamada Outline.

A barra de ferramentas do debug

Quando o fluxo de execução do programa atingir a linha marcada com o breakpoint, a execução do programaserá interrompida e a janela da aplicação será substituída pela janela do Centura SQLWindows/32, entáo, ooutline é mostrado com a linha marcada com o breakpoint em destaque. Estará disponível neste momento a

 barra de ferramentas do debug, onde é possível acionar algumas tarefas, conforme descritas abaixo :

Page 145: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 145/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As descrições detalhadas de cada ícone da barra de ferramentas do debug.

Continue  –   Use esta ferramenta para fazer com que o programa continue a serexecutado normalmente, ou seja, sair do modo de depuração. Porém, se o fluxo deexecução do programa encontrar outro breakpoint , o depurador é ativadonovamente.Break  –  Use esta ferramenta para fazer com que o fluxo de execução do programaseja interrompido, não importando o local onde esteja, e o modo de depuração seráativado.Step into  –  Use esta ferramenta quando a linha a ser executada possuir uma função

cujo código você deseja depurar. O depurador “entra” na função e continua aexecução, passo-a-passo, no seu message actions.Step over  –  Use esta ferramenta quando a linha a ser executada possuir uma funçãocujo código você não deseja depurar. O depurador executa a função, porém, nãomostra a sua execução passo-a-passo, continuando o fluxo de execução do

 programa. Observe que, se no message actions desta função (ou de alguma funçãoque esta chamar) houver alguma marca de breakpoint, o depurador pára a execuçãonessa linha.Variables –  Use esta ferramenta para visualizar numa janela os valores de algumasvariáveis selecionadas previamente. Através desta janela, é possível tambémadicionar algumas variáveis, além de expressões. Esta janela pode continuar sendo

visualizada enquanto o programa é depurado. Isso é de grande utilidade, pois, nesta janela, você pode inspecionar o valor de várias váriáveis ao mesmo tempo. Call stack  –   Use esta ferramenta para visualizar numa janela todo o fluxo deexecução do programa, os objetos, eventos executados nestes objetos e funçõeschamadas. Esta janela mostra todas estas informações na sequência em que sãochamadas, ajudando muito na depuração do código. Messages  –  Use esta ferramenta para visualizar numa janela todos os eventos que aaplicação está executando, até mesmo os eventos do sistema operacional. Estaferramenta é extremamente útil, pois, através da janela por ela acionada, obtemos,além dos nomes dos eventos executados, a informação de qual objeto recebeu

determinado evento e os valores das variáveis do sistema operacional lParam ewParam.Expressions  –  Use esta ferramenta para visualizar uma janela que permite obter ovalor de expressões e variáveis, mesmo estas não estando relacionadas ao fluxoatual do programa. 

Page 146: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 146/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 147: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 147/580

Page 148: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 148/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A Arquitetura dos QuickObjects

Os QuickObjects são desenvolvidos em linguagem SAL, utilizando-se técnicas de orientação a objetos, portanto, uma vez conhecendo sua arquitetura, o programador poderá perfeitamente criar novosQuickObjects a partir dos já existentes, ou até mesmo criar QuickObjects completamente novos.

Existem três tipos de QuickObjects

  Data Sources  Visualizers  Commanders

Data Sources

Os QuickObjects Data Sources são utilizados para acessar dados estruturados, ou não, como por exemplo bancos de dados sql, e-mail e Lotus Notes.

São representados visualmente por um objeto tipo child table. Cada coluna dessa child table corresponde auma informação na fonte de dados.

Os QuickObjects Data Sources para bancos de dados sql são representados numa aplicação SQLWindows/32 pela classe cQuickTable, e permitem acesso a todos os tipos de bancos de dados com os quais oSQLWindows/32 possui conectividade: Centura SQLBase, Oracle, Sybase, MS SQLServer entre outros. (Consulte no Capítulo 3 - Acesso ao SQL, a seção Conectividade, para maiores detalhes sobre aconectividade do SQLWindows/32 )

Os QuickObjects para sistemas de e-mail são representados numa aplicação SQLWindows/32 pela classecQuickEMail, e suportam os sistemas de e-mail da Lotus ( VIM ), da Microsoft ( MAPI ) e da Novell ( MHS).

Os QuickObjects Data Sources são a parte principal do QuickObjects do SQLWindows/32, eles controlam oestado dos Commanders e o que será mostrado nos Visualizers.

Visualizers

Os QuickObjects Visualizers são utilizados para mostrar e manipular os dados providos pelos QuickObjectsData Sources, estando sempre ligados a estes.

Os QuickObjects Visualizers são associados aos QuickObjects Data Sources no momento em que odesenvolvedor está ‘desenhando’ a tela, em tempo de design, através da Paleta de Controles. Os Visualizers

 podem ser personalizados pelo Customizer.

Os QuickObjects Visualizers são representados visualmente, numa aplicação SQLWindows/32, pelasseguintes classes:

  cQuickField –  Similar ao objeto Data Field.  cQuickMLField –  Similar ao objeto Multiline Text.  cQuickRadio –  Similar ao objeto Radio Button.  cQuickRadioGroup –  Similar ao objeto Radio Button.  cQuickCheckBox –  Similar ao objeto Check Box.  cQuickListBox –  Similar ao objeto List Box.  cQuickComboBox –  Similar ao objeto Combo Box.  cQuickPicture –  Similar ao objeto Picture.  cQuickGraph –  Permite apenas visualização.

Page 149: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 149/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Commanders

Assim como os Visualizers, os Commanders estão sempre ligados aos QuickObjects Data Sources, essa‘ligação’ é feita em modo de design. Os comandos dependem do tipo do Data Sources associado, conforme

relacionado abaixo:

Comandos associados aos QuickObjetcs Data Sources para Bancos de Dados:

  Apply  –  Faz as atualizações necessárias, dos dados que tenham sido excluídos, alterados ou incluídos.Similar ao comando sql commit.

  Delete  –  Quando associado a um Data Source tipo  Master , marca para exclusão o registro pai e todos osfilhos. Quando associado a um Data Source tipo  Detail , marca para exclusão apenas os registrosselecionados no objeto filho.

  Discard   –   Desconsidera todas as edições feitas nos dados contidos no Data Source ao qual oQuickObject Commander está associado, carregando novamente os dados da fonte de dados. Similar aocomando sql rollback.

  First  –   Este é um comando para navegação pelos dados do Data Source, faz com que o foco seja posicionado na primeira linha de dados.

  Last  - Este é um comando para navegação pelos dados do Data Source, faz com que o foco seja

 posicionado na última linha de dados.  New  –  Prepara o Data Source para a inclusão de uma nova linha de dados.  Next  - Este é um comando para navegação pelos dados do Data Source, faz com que o foco seja

 posicionado na próxima linha de dados.  Previous  - Este é um comando para navegação pelos dados do Data Source, faz com que o foco seja

 posicionado na linha anterior.  Retrieve  –  Carrega todos os dados no QuickObject Data Source.

Comandos associados aos QuickObjetcs Data Sources para E-Mail:

  Address  –  Obtém a lista de endereços dos destinatários.  Attach  –  Anexa arquivos a uma mensagem.

  Forward  –  Encaminha uma mensagem.  Login  –  Efetua login no sistema de e-mail.  Logout  –  Efetua logout no sistema de e-mail.  Mark Read  –  Marca uma mensagem como lida.  Reply  –  Responde uma mensagem ao destinatário.  Save  –  Salva o conteúdo de uma mensagem.  Send  –  Envia uma mensagem.

Comandos associados aos QuickObjetcs Data Sources para Lotus Notes:

  First  –  Move para o primeiro documento, no result set de documentos do Lotus Notes.  Last - Move para o último documento, no result set de documentos do Lotus Notes.  Next - Move para o próximo documento, no result set de documentos do Lotus Notes.  Previous - Move para o documento anterior, no result set de documentos do Lotus Notes.  Retrieve - Carrega novamente os dados da fonte de dados.  New - Prepara o Data Source para a inclusão de um novo documento.  Delete  –  Marca um registro para ser excluído.  Apply - Faz as atualizações necessárias aos dados que tenham sido excluídos, alterados ou incluídos.  Discard  –  Descarta as modificações feitas, carregando novamente os dados da fonte de dados.  Mail  –  Mostra a caixa de diálogo para enviar correio do Notes.  Replicate Server  –  Cria uma réplica do servidor atual.  New Replica  –  Cria uma nova réplica do banco de dados atual no servidor escolhido.

Os QuickObjects Commanders não executam comando algum junto ao banco de dados, na realidade, elesapenas comunicam ao QuickObject Data Sources, a que estão relacionados, a ação a ser realizada. Por

exemplo, quando o usuário aciona o comando First, o QuickObject Commander envia uma mensagem aoQuickObject Data Source, onde o comando First será então executado. Toda a interface entre a aplicação e o

Page 150: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 150/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 banco de dados é feita sempre pelo QuickObject Data Source. Os demais QuickObjects fazem a solicitação junto ao Data Source, e este a executa junto ao banco de dados.

AtençãoAo desenvolver uma aplicação utilizando os QuickObjects da Centura, os QuickObjects Data Sources devem

ser criados antes dos demais QuickObjects Commanders e Visualizers. Caso os Commanders ou Visualizerssejam criados antes, não será possível relacioná-los a um QuickObjects Data Sources.

Como funciona um QuickObject ?

Um QuickObject é um objeto especial do SQLWindows/32 que possibilita o desenvolvimento de aplicaçõessem a necessidade de escrever código adicional. Isso não quer dizer que não seja possível adicionar códigoSAL a um QuickObject. Um QuickObject, assim como um objeto normal do SQLWindows/32, éconfigurado através do seu Customizer   ( ou  Attribute Inspector  ), porém, no caso dos QuickObjects, existeuma propriedade adicional. É através dessa propriedade que o desenvolvedor tem acesso às configurações‘Quick’. 

Por exemplo, um QuickComboBox recebe, em tempo de design, a informação de qual comando sql deve serexecutado para que as informações, em tempo de execução da aplicação, sejam mostradas ao usuáriocorretamente. Dessa forma, não existe a necessidade de codificação pelo programador.

Existem duas formas básicas pelas quais os QuickObjects trabalham, são elas:

Geração de Código

Uma das maneiras de trabalhar dos QuickObjects, que tornam os objetos do SQLWindows/32 avançados e poderosos, é a Geração de Código SAL. Um QuickObject, como por exemplo uma classe cQuickTable, emtempo de desenvolvimento, cria as colunas, na seção Contents da table window, equivalentes ao comando sqlnecessário para carregar os dados, quando a aplicação estiver sendo executada. Essa geração de código já

utilizada nos QuickObjects do Centura ( que acompanham o pacote do CTD ), está também disponível aos programadores através da interface provida pelo Components Developer Kit, o CDK, porém, não entraremosem detalhes sobre esse assunto agora. O CDK é estudado no Capítulo 10  –   Criando seus própriosQuickObjects.

Nomeação de Propriedades

A outra forma de trabalhar dos QuickObjects, que expande as características naturais dos objetos Centura, échamada  Named Properties, algo como Nomeação de Propriedades. Funciona baseada em propriedades eseus valores. Uma propriedade é basicamente composta de dois elementos: um nome e um valor . Cada umdos elementos mostrados no Customizer de um objeto é uma propriedade com um valor associado. Essas

 propriedades são configuradas em tempo de design, ou seja, quando o objeto ainda está sendo criado pelo programador. Por exemplo, um data field possui uma propriedade chamada Editable, que pode possuir dois

valores, Yes ou No, determinando quando o usuário poderá editar o valor deste data field. Essa propriedade, etodas as demais que são mostradas num Customizer de um objeto do SQLWindows/32, são propriedadesnaturais do objeto. A Nomeação de Propriedades consiste na definição de propriedades adicionais. Porexemplo, esse mesmo data field poderia conter uma propriedade nomeada pelo desenvolvedor chamadaTextoExplicativo, utilizada para que, em tempo de execução, quando o mouse estivesse por cima do objeto, ovalor da propriedade TextoExplicativo fosse mostrado na barra de status do form.

Page 151: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 151/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Construindo uma Aplicação

Vamos criar uma típica aplicação de negócios, utilizando o QuickObject chamado QuickForm, que acessaráduas tabelas relacionadas. Utilizaremos a base de dados ISLAND, que acompanha o CTD, e que é instaladaconforme as instruções do Apêndice F  –  Guia de Instalação do Centura Team Developer 2000.

A tabela COMPANY será a tabela principal da nossa aplicação, também chamada de tabela Master, e atabela INVOICE será a tabela filha, também chamada tabela Detail. Essa aplicação será capaz de realizar anavegação através de todos os registros da tabela COMPANY, sendo que, sempre serão mostrados osregistros da tabela INVOICE relacionados à empresa que estiver com o foco. Ou seja, para cada empresaescolhida, serão apresentadas as invoices pertencentes a essa empresa. Além da navegação, será possíveltambém realizarmos alterações de informações, inclusões e exclusões. A aplicação será capaz de realizartodas essas atividades, sem que seja necessário qualquer conhecimento da linguagem SAL pelo programador,

 pois, não será preciso escrever código algum.

Acompanhe as instruções a seguir, para criar uma aplicação de acesso a banco de dado, utilizando osQuickObjects do SQLWindows/32:

Inicie o Centura SQLWindows/32 clicando no respectivo ícone do menu iniciar. Normalmente o menu do

Centura está localizado no Menu iniciar | Programas | Centura | Team Developer 2000. Então escolha oícone do SQLWindows 2000.

Você deve ativar o Assistente do QuickForm que está localizado na caixa de diálogo onde concentram-setodos os Assistentes do SQLWindows/32. Essa caixa de diálogo recebe o nome de Wizards, e pode seracionada através do botão chamado Wizards, situado na barra de ferramentas do SQLWindows/32. Ouatravés do menu Component | Wizards.

- botão chamado Wizards, situado na barra de ferramentas do Centura SQLWindows/32.

O menu Component | Wizards. 

Page 152: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 152/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na janela Wizards, selecione o Assistente chamado QuickForm, e clique no botão Start .

A janela Wizards. 

 Na janela inicial do Assistente QuickForm, escolha:Tipo de form: Form WindowPosição da ToolBar: TopE clique no botão Next .

Assistente do QuickForm, escolha aqui a aparência da sua aplicação.

Page 153: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 153/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O Assistente do QuickForm precisa agora conectar-se ao banco de dados. Efetue a conexão através da janelaabaixo, Database Login, informando o nome da base de dados. Neste exemplo utilizaremos a base chamada

 ISLAND. Informe SYSADM , no campo nome do usuário, e senha.

A janela Database Login, do QuickForm.

O próximo passo agora é escolher os nomes das tabelas que serão os Data Sources da aplicação. Escolhainicialmente a tabela COMPANY. Quando você escolhe uma tabela, o seu nome e os seus campos sãomostrados no quadro do lado direito. Isso pode ser feito de uma das seguintes formas:

  Clicando duas vezes no nome da tabela desejada.  Clicando uma vez no nome da tabela e arrastando para o quadro do lado direito.  Clicando ou utilizando as teclas para cima e para baixo, posicionando o foco no nome da tabela desejada,

e clicando no botão Choose Source.

Page 154: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 154/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você deve, neste momento, saber quais colunas da tabela escolhida deverão fazer parte da sua aplicação.Observe que, ao escolher a tabela COMPANY, no quadro do lado direito apareceu o nome da tabela e osnomes de todas as colunas que a compõem. Ao lado do nome de cada coluna existe um ícone amarelo. Aaplicação gerada pelo QuickForm irá considerar apenas as colunas que possuírem esse ícone ao seu lado.Então, basta clicar uma vez no nome da coluna que você não quer que apareça na sua aplicação. Para esse

exemplo, deixe marcadas as colunas conforme a figura anterior, ou seja, as colunas COMPANY_ID,COMPANY_NAME, CORPORATE_URL e PHONE devem estar selecionadas.

A tabela COMPANY é a tabela master dessa nossa aplicação.

Você deve agora escolher a tabela detail, ou seja, a tabela INVOICE. Siga os mesmos procedimentosutilizados na escolha da tabela COMPANY, selecionando a tabela INVOICE e deixando visíveis todas assuas colunas. Conforme a figura abaixo :

Tabelas Master e Detail da nossa aplicação.

Observe que, as duas tabelas foram ligadas visualmente. Um link foi feito ligando a tabela COMPANY àtabela INVOICE. Esse link é o relacionamento entre os dois Data Sources que serão criados na sua aplicação.

Clique então no botão Finish para que o QuickForm crie a aplicação, que deve ter o visual semelhante aomostrado na figura abaixo:

Page 155: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 155/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Janela da aplicação gerada pelo QuickForm.

Observe que o Centura SQLWindows/32, automaticamente, posiciona a aplicação gerada na Tab chamadaLayout. Isso faz com que a janela da aplicação seja vista. Dessa forma, nesta aplicação, podemos facilmenteobservar os três tipos de QuickObjects de que falamos no início deste capítulo. Os pushbuttons são osCommanders ( First, Prev, Next, Last, Retrieve, New, Delete, Apply e Discard ), os data fields são osVisualizers ( Company Id, Company Name, Corporate Url e Phone ) e a child table window é o QuickObjectData Source para a tabela INVOICE. Suas colunas são Visualizers. O Data Source da tabela COMPANY estácom a propriedade Visible configurada para No, por esse motivo, não está visível.

 Neste momento, você pode alterar, da maneira que desejar, a posição dos objetos gerados pelo QuickForm.A aplicação está pronta para ser executada. Pressione a tecla F7 ou acione o menu Debug | Go.Quando o SQLWindows/32 pedir que a aplicação seja salva, informe o nome qckForm1.app, para facilitarfuturas referências.

Com a aplicação em execução, clique nos botões Last, Prev, Next e First da barra de ferramentas paranavegar pelos registros da tabela master, a tabela COMPANY. Observe que cada vez que uma nova empresaé selecionada, a child table onde são mostradas as INVOICES é atualizada com as informações referentes àempresa escolhida.

Page 156: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 156/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Aplicação gerada com o QuickForm sendo executada.

Observe o código fonte gerado pelo QuickForm, estão lá todos os objetos e seus respectivos códigos

necessários para o funcionamento correto da aplicação.

Para ver o código fonte da aplicação:

  Volte ao Centura SQLWindows/32, fechando a janela da aplicação gerada pelo QuickForm, que estásendo executada.

  Clique na Tab chamada Outline, isso fará com que o SQLWindows/32 mostre o código fonte gerado pelo QuickForm momentos antes.

Sua janela deverá se parecer com a figura abaixo:

Page 157: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 157/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Visão do outline mostrando o código fonte gerado pelo QuickForm.

A aplicação está pronta e você pode realizar quaisquer alterações que julgue necessário.Por exemplo, altere o número de colunas visíveis na table window onde aparecem as INVOICES. Não énecessário que as colunas COMPANY_ID e COMPANY_NAME estejam visíveis. Então, através do

customizer ( ou do Attribute Inspector) de cada uma, atribua No à propriedade Visible.

 Na figura abaixo, a coluna COMPANY_ID está sendo configurada através do Attribute Inspector.

Page 158: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 158/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Coluna Company_id sendo configurada, através do Attribute Inspector.

Page 159: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 159/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Alterando e expandindo a aplicação

 Nesta aplicação montada, você tem, rapidamente, as informações sobre as INVOICES da empresa desejada.Vamos agora acrescentar uma outra tabela a nossa aplicação. Será uma tabela filha da tabela INVOICES,contendo os itens que compõem a INVOICE selecionada na child table. Ou seja, acrescentaremos agora àaplicação um terceiro QuickObject Data Sources, correspondente à tabela do banco de dados, chamada

INVOICE_ITENS.

 No SQLWindows/32, selecione a Tab chamada Layout para que a janela da aplicação seja visualizada.Ative a paleta de controles ( pressionando Alt-4 ) e escolha o controle tipo child table window.

Controles. Em destaque, a classe cQuickTable.

 Neste momento, serão mostrados na paleta de controles os nomes das classes de child table. Clique uma vezna classe chamada cQuickTable e coloque na janela da aplicação a child table.

Imediatamente, após esse ato, a child table window será desenhada no local onde você colocou, acionando pelo SQLWindows/32, a janela de configuração da classe cQuickTable. Essa janela aparecerá solicitando asinformações para login na base de dados. Informe os valores: ISLAND, SYSADM e SYSADM paraDatabase, User Name e Password, respectivamente. Em seguida, na janela chamada cQuickTable Properties,você deverá informar o nome da tabela que será utilizada como Data Source, na child table colocada naaplicação. Escolha então a tabela desejada, clicando duas vezes no nome da tabela chamadaINVOICE_ITEM. São mostrados os nomes das colunas.

Escolha as colunas que deverão fazer parte da aplicação. Para este exemplo, selecione todas as colunas.

Page 160: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 160/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Janela de configuração das propriedades da classe cQuickTable.

Os pushbuttons dessa janela serão habilitados neste momento, clique no pushbutton chamado Sort, e informea coluna chamada ITEM_NO. Clique então no botão Ok.

Janela para informar a classificação dos dados.

De volta à janela principal das propriedades da classe cQuickTable, clique no pushbutton Apply para que oQuickObject escreva as instruções referentes às configurações realizadas.

A aplicação será gerada, ou melhor, ao código já existente, um novo código, referente ao QuickObject DataSource, será acrescentado a tabela INVOICE_ITEM.

Devemos relacionar a tabela INVOICE_ITEM com a sua tabela pai, no caso, a tabela INVOICE. Para isso,

siga os seguintes passos:

Page 161: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 161/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  Clique com o botão direito do mouse na child table window tblINVOICE1, que é a tabelacorrespondente ao Data Source para a tabela INVOICE.

  Ao aparecer o menu de contexto, conforme a figura abaixo, clique na opção chamada Quick Table.

Menu de contexto, permiti acesso à janela de configuração das propriedades da cQuickTable.

Assim, você tem acesso à janela de configuração das propriedades do cQuickTable, onde o pushbutton Linksdeve ser pressionado.

Isso fará com que você tenha acesso à janela de configuração dos links, mostrada na figura abaixo, onde osData Sources são relacionados entre si.Escolha, então, no list box Master Table Columns, a coluna INVOICE_NO, pois esta é a coluna chave da

tabela INVOICE. No lado direito, no combo box Detail Tables\Columns, você deve clicar no nome da childtable tblINVOICE_ITEM3, que foi adicionada à aplicação recentemente. Clique no pushbutton New.

Page 162: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 162/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Definição do relacionamento entre os Data Sources INVOICE e INVOICE_ITENS.

Clique no pushbutton OK para salvar esta configuração. De volta à janela de configuração da cQuickTable,clique no pushbutton Apply para salvar as alterações, e para que as configurações sejam aplicadas ao

 programa fonte.

Se você desejar, altere a propriedade Visible da coluna INVOICE_NO para  No, pois, não é necessário que

essa esteja visível.

Feito isso, execute novamente a aplicação para realizar um teste.Observe que, para cada INVOICE  escolhida, serão listados agora todos os itens que a compõem.

Page 163: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 163/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Nesta figura pode ser observada todos os itens que compõem uma INVOICE.

Observe na figura acima que, os valores da coluna Color formam um conjunto de valores que podem serapresentados de outra forma, visualmente, através de outro objeto. Esse é um ótimo exemplo para conhecer afuncionalidade de um outro QuickObject, o QuickRadioGroup.

Acione a paleta de controles do SQLWindows/32 e selecione o controle Radio Button. Ao fazer isso serãomostradas na paleta as classes de radio button disponíveis. Escolha a classe cQuickRadioGroup. O Centuraidentifica que essa corresponde a uma classe de QuickObjects e, imediatamente, a paleta de controles passa amostrar também os nomes dos Data Sources disponíveis. Selecione o Data Source chamadotblINVOICE_ITEM3 e a coluna COLOR, conforme mostrado na figura abaixo:

Page 164: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 164/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Paleta de controles.

Esse QuickObject fará uma consulta ao banco de dados pela coluna COLOR, utilizando a cláusulaDISTINCT no comando select, obtendo assim os valores existentes na coluna escolhida. Para cada valorretornado, este QuickObject cria um radio button na aplicação, fazendo com que a mesma fique assim:

Page 165: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 165/580

Programando com o Centura Team Developer 2000

Página PAGE 582

QuickRadioButton criados a partir da coluna COLOR.

 Na verdade, cada item dessa INVOICE corresponde a um pedido de camisetas, indicando a quantidade, o preço e a estampa. A estampa correspondente ao item é a informação contida na coluna STYLE_ID.Utilizaremos essa informação para mostrar a imagem da estampa num objeto picture, também sem escrevernenhuma linha de código SAL.

Page 166: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 166/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O processo agora é o mesmo utilizado nos exemplos anteriores.

  Acione a paleta de controles ( Alt-4 ).  Escolha o objeto tipo child table.  Selecione a classe cQuickTable, para adicionar um novo QuickObject Data Source.  Ao colocar essa child table da classe cQuickTable na sua aplicação, aparecerá a janela de configurações

da classe.  Efetue o login e selecione a tabela chamada PRODUCT.  Dessa tabela, escolha apenas as colunas STYLE_ID e PICTURE.  Clique em seguida no pushbutton Apply.  A child table chamada tblPRODUCT4 é criada e as duas colunas escolhidas são colocadas no seu

interior.  Você precisa agora relacionar os dois Data Sources.  Então, clique com o botão direito do mouse na tblINVOICE_ITENS3 e escolha no menu de contexto a

opção chamada Quick Table. Efetue o login, se for necessário.   Na janela de configuração das propriedades do objeto tblINVOICE_ITENS3, clique no pushbutton Links

 para relacionar o Data Source com o recém incluído tblPRODUCT4.  A coluna a ser utilizada para relacionamento é a coluna chamada STYLE_ID. Não esqueça de pressionar

o pushbutton New.  Clique no botão OK e, na janela de configuração das propriedades, pressione o pushbutton Apply.  Selecione, na paleta de controles, o objeto tipo picture, a classe cQuickPicture e o Data Source que você

acabou de adicionar, ou seja, tblPRODUCT4.  Selecione então a coluna PICTURE, colocando-a na sua aplicação.  Você já pode executar a aplicação. Observe que, para cada item selecionado na child table

tblINVOICE_ITENS3, a imagem correspondente será mostrada no objeto picture.

Visualização da estampa da camiseta.

Page 167: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 167/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você tem pronta uma aplicação que trabalha com quatro tabelas relacionadas entre si, completamentefuncional, mostrando inclusive figuras, sem digitar nenhuma linha de código SAL.

Os próximos passos são, estudar os outros QuickObjects do SQLWindows/32, que são mostrados noCapítulo 7  –  Explorando os QuickObjects, e aprender a construir seus QuickObjects no Capítulo 10  –  

Criando seus próprios QuickObjects.

Page 168: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 168/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 169: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 169/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 7Explorando os QuickObjectsDando prosseguimento ao Capítulo 7, onde foram apresentados os conceitos básicos dos

QuickObjects do SQLWindows/32, apresentaremos neste capítulo mais algunsQuickObjects, que auxiliarão o programador a construir aplicações avançadas. Serãoabordados os principais quickobjects disponíveis, com exemplos e instruções passo-a-

 passo para que você, ao término do estudo, esteja apto a aplicar os recursos aquidemonstrados.

O estudo deste capítulo possui dois pré-requisitos:

  É extremamente necessário que o Capítulo 6 tenha sido estudado e

compreendido totalmente, pois, uma série de instruções contidasnestes dois capítulos, são idênticas. Porém, não serão explicadasdetalhadamente novamente, já que o fizemos no capitulo 6.

  É importante lembrar que, para que todos os QuickObjects aquicitados estejam disponíveis, é necessário que as instruções descritas noApendice A  –   Guia de Instalação do Centura Team Developer2000, tenham sido seguidas.

Page 170: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 170/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Usando os QuickTabs

Os QuickTabs são os QuickObjects do SQLWindows/32 que facilitam a utilização doscontroles de Tabs nas aplicações escritas em linguagem SAL. Os controles de Tabs sãoextremamente úteis quando se faz necessário mostrar muitas informações numa mesma

 janela. Com as Tabs é possível que, na mesma janela, sejam mostradas muitas informaçõesdivididas em categorias, por exemplo. Com os QuickTabs você poderá construir aplicaçõesno SQLWindows/32 onde os recursos visuais serão idênticos aos encontrados normalmenteem ferramentas como o Microsoft Office.

 No Capítulo 6 foi desenvolvida uma aplicação envolvendo as tabelas de company, invoice,invoice_item e product. Todas estas informações foram colocadas numa mesma janela,tornando-a um pouco ‘apertada’ devido ao grande número de informações presentes.

Agora será desenvolvida a mesma aplicação, porém, as informações serão divididas emcategorias e colocadas em Tabs. Observe na figura abaixo a aplicação que você iráconstruir utilizando os QuickTabs :

Janela da aplicação utilizando os QuickTabs.

Acompanhe os passos a seguir, para criar esta aplicação, utilizando os QuickObjects doSQLWindows/32:

Inicie o Centura SQLWindows/32. Se este já estiver aberto, salve a aplicação que

 porventura esteja sendo utilizada, e inicie uma nova aplicação clicando no botão da barrade ferramentas chamado New, pressionando juntas as teclas Ctrl+N ou acionando o menuFile | New.

Para desenvolver esta aplicação, utilizaremos os QuickObjects do SQLWindows/32,conforme demonstrado no Capítulo 6. Portanto, é necessário informar ao CenturaSQLWindows/32 que serão utilizadas as classes dos seus QuickObjects. Essas classesestão numa biblioteca, assim como as classes dos QuickTabs. Então, inclua essas duas

 bibliotecas ao programa.

Page 171: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 171/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para incluí-las, localize a seção Libraries do outline e informe os nomes das bibliotecasclicando com o botão direito do mouse na palavra Libraries, no outline, e escolhendo asduas bibliotecas, conforme ilustrado abaixo :

Biblioteca dos QuickObjects sendo incluída ao programa.

Dessa forma, inclua ao seu programa as duas bibliotecas. No final dessa operação, a seção Libraries do seuoutline deve estar assim :

Agora, adicione em sua aplicação o form window que irá conter os demais objetos. O formwindow utilizado deve ser da classe cQuickTabsForm. Proceda da seguinte forma:

 No Centura SQLWindows/32, clique com o botão direito do mouse no item chamadoWindows, localizado no quadro esquerdo, chamado Application1. Escolha as opções New e depois cQuickTabsForm, no menu de contexto que aparecerá.

Page 172: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 172/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O form window sendo incluído através do menu de contexto.

Isso fará com que um form window da classe cQuickTabsForm seja adicionado ao outline.Coloque um nome para o seu form e ative a paleta de controles pressionando as teclas Alt-4.

Adicione ao form window uma child table da classe cQuickTable que servirá como DataSource relacionado à tabela COMPANY da base de dados.Escolha os seguintes campos da tabela COMPANY:  COMPANY_ID  COMPANY_NAME  ADDRESS  CITY  CORPORATE_URL  COUNTRY  PHONE  STATE

Através do Customizer, ou do Attribute Inspector, altere a propriedade View  da tablewindow tblCOMPANY1 para o valor Browse Bar. Isso fará com que a table windowmude sua aparência, tornando-se uma barra de navegação.

 Na paleta de controles, clique no ícone correspondente ao data field e selecione a classecQuickField. Escolha o Data Source tblCOMPANY1 e marque todas as colunas mostradasna paleta de controles, exceto a coluna chamada ROWID. Feito isso, clique no formwindow para que os data fields correspondentes às colunas escolhidas sejam criados naaplicação.

 Neste momento, sua aplicação deve estar assim:

Page 173: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 173/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Aplicação sendo construída dentro do objeto QuickTab.

Você precisa adicionar mais uma Tab ao seu form window. Clique com o botão direito domouse numa área do form window, até que o menu de contexto abaixo seja mostrado :

Menu de contexto do QuickTab.

Escolha a última opção, Tab Frame Properties.Você terá acesso à janela de configuração das propriedades do QuickTabs. Todas as

configurações são feitas nesta janela.

Page 174: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 174/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Inclua mais três linhas na table window desta janela, clicando no botão New.

Caixa de diálogo onde todas as propriedades do QuickTab são configuradas.

Em cada uma das linhas incluídas escreva Invoice, Itens  e Detalhes Itens. Em seguida,clique no pushbutton OK. Isso fará com que seja adicionado ao form window mais trêsTabs, cada uma com os nomes digitados.

Clique na Tab chamada Invoice e adicione uma child table da classe cQuickTable. Atravésda janela de configuração das propriedades da classe cQuickTable, relacione esse DataSource à tabela INVOICE.Selecione as seguintes colunas da tabela INVOICE:  AMOUNT_PAID  COMPANY_ID  DATE_PAID  INVOICE_DATE  INVOICE_NOAtravés do pushbutton Sort, configure para que a classificação dos pedidos seja pela coluna INVOICE_NO.

Agora, o seu form window deve estar assim :

Page 175: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 175/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tela da aplicação após a inclusão do Data Source para a tabela INVOICE.

Relacione os Data Source tblCOMPANY1 e tblINVOICE2 através da janela deconfigurações do Data Source tblCOMPANY1.Lembre-se, a coluna COMPANY_ID é o link entre os dois objetos.

Você pode executar a aplicação agora e verificar que, os pedidos mostrados na Tab Invoiceestão sempre relacionados à Empresa escolhida na Tab Empresa. Desta vez, é possívelvisualizar mais informações na tela, de forma bem mais confortável, pois, as informaçõesestão organizadas nas Tabs.

Do mesmo modo descrito no capítulo 6, você pode acrescentar à aplicação as demaisinformações dos itens dos pedidos ( INVOICE_ITENS) e a imagem da estampa

(PRODUCTS).

Page 176: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 176/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 As Propriedades do QuickTabs

A caixa de diálogo das propriedades do QuickTabs possui as seguintes Tabs, que sãodescritas abaixo:

Tabs  –  Associa um Tab Label a uma determinada Tab Name. Tab Label é o nome queaparecerá para o usuário, quando a aplicação estiver sendo executada. Nessa Tab, você pode criar, apagar, alterar e mudar a posição das Tabs da sua aplicação.

Fonts  –  Você pode definir o tipo de fonte e o tamanho que desejar para ser utilizada pelaaplicação. Ao informar uma fonte específica, tenha certeza de que a fonte especificadaestará disponível no seu sistema. Você pode também definir que as fontes utilizadas serãoas mesmas da janela pai, para isso, marque o radio button chamado User Parent’s Font.

Colors  –   Especifica as cores das letras e do fundo da janela (background). As coresdefinidas são aplicadas a todas as Tabs. Não é possível especificar cores diferentes para

cada Tab.

Size  –  É nesta pasta que você configura se as Tabs da aplicação terão o tamanho da janela pai. Neste caso, os valores informados nos campos Left, Right, Top e Botton, indicam adistância da borda da janela para a borda do quadro dos Tabs.

Style  –  Você pode especificar o número de linhas de Tabs que desejar, se a posição dasTabs será acima ou abaixo, assim como a aparência ( seguindo o padrão Windows3.1 ouWindows95 ).

Windows  –   Nesta Tab da janela de configurações você pode associar uma Tab da sua

aplicação a um form window ou um dialog box, que será criado assim que a Tab sejaacionada pela primeira vez.

 As Mensagens do QuickTabs

O QuickTabs possui uma série de mensagens que podem ser interceptadas pelo programador, que são:

TABSM_Create  - Para garantir a correta inicialização da classe picTabs. Utilize estamensagem, ao invés de usar SAM_Create.

TABSM_UserRequest  –   Esta mensagem é enviada a um objeto da classe picTabs paraindicar que o usuário tentou selecionar uma das Tabs disponíveis. Verifique o valor davariável wParam para saber o número da Tab que o usuário clicou. Se você quiser impediro usuário de escolher uma determinada Tab, Utilize a função CancelMode( ).

TABSM_TabActivateStart  - Esta mensagem é enviada a um objeto da classe picTabs,antes que os objetos pertencentes à Tab sejam mostrados, para indicar que umadeterminada Tab foi selecionada pelo usuário. Verifique o valor da variável wParam parasaber o número da Tab escolhida pelo usuário.

TABSM_TabActivateFinish - Esta mensagem é enviada a um objeto da classe picTabs,depois que os objetos pertencentes à Tab são mostrados, para indicar que uma determinada

Page 177: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 177/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tab foi selecionada pelo usuário. Verifique o valor da variável wParam para saber onúmero da Tab escolhida pelo usuário.

Você pode também, ao invés de capturar essas mensagens, utilizar as funções late boundequivalentes a cada uma das mensagens. São elas:

Nome da Mensagem Função late boundTABSM_Create TabCreate ( )TABSM_UserRequest TabUserRequest ( )TABSM_TabActivateStart TabActivateStart ( )TABSM_TabActivateFinish TabActivateFinish ( )

Page 178: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 178/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Utilizando o QuickGraph

O QuickGraph é um QuickObject tipo Visualizer, que utiliza um QuickObject Data Source para apresentar as informações graficamente. Os gráficos podem ser apresentados baseando-se em uma ou mais colunas da table window.

Entre alguns recursos do QuickGraph, destacam-se:

  Gráficos verdadeiramente 3D.  Total controle de elevação, rotação e perspectiva.  Hot-Graphs para criação de gráficos sensíveis ao click.  Controle das fontes utilizadas nos títulos e legendas.  Controle sobre os estilos das grades.  Impressão e exportação dos gráficos.

Assim como os demais QuickObjects, o QuickGraph não necessita de nenhuma programação, porém, possuiuma rica gama de funções que podem ser utilizadas através do SQLWindows/32, que tornam os gráficosextremamente flexíveis quando utilizados via programação. O QuickGraph é uma classe doSQLWindows/32, podendo ser modificada e expandida com facilidade.

Pré-requisitos

Para utilizar o QuickGraph, conforme mostrado neste exemplo, a instalação doSQLWindows/32 deve ter sido feita seguindo-se as instruções descritas no Apendice F  –  Guia de instalação do Centura Team Developer 2000.

 Na aplicação, você precisa incluir na seção Libraries, a biblioteca de QuickObjectschamada qckdvc.apl, onde é definida a classe cQuickGraph.

Assim como todos os QuickObjects Visualizers, você precisa associá-los a umQuickObject Data Source.

A utilização do QuickGraph é extremamente simples, conforme mostrado abaixo:

Inicie uma nova aplicação no Centura SQLWindows/32.Declare a biblioteca de classes qckdvc.apl na seção Libraries do Outline.

Você precisará de um DataSorce para servir os dados para o QuickGraph.Observe a figura abaixo, nela foi desenvolvida uma aplicação simples. Uma aplicaçãoMaster/Detail envolvendo as tabelas COMPANY e INVOICE, como demonstramos noCapítulo 6.

Page 179: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 179/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Aplicação que servirá de Data Source para o QuickGraph.

O próximo passo é selecionar, na paleta de controles, o objeto QuickGraph.

Escolha o Data Source chamado tblINVOICE2, conforme ilustrado na figura que se segue:

O Data Source tblINVOICE2 sendo selecionado.

Coloque então o QuickGraph na janela da sua aplicação.Através da barra de ferramentas do QuickGraph você poderá personalizar os diversosaspectos do seu gráfico, como por exemplo as colunas nele mostradas.

Clique no ícone chamado QuickGraph, que está na barra de ferramentas do QuickGraph.Isso fará com que a janela de configurações chamada Graph Control apareça. Efetue asconfigurações conforme ilustrado na figura abaixo:

Page 180: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 180/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Janela de controle dos elementos do QuickGraph.

Salve sua aplicação como exQckGraph.app.Execute a aplicação pressionando a tecla F7.

Page 181: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 181/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Aplicação utilizando o QuickGraph.

Page 182: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 182/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Utilizando o QuickHTML

Com o QuickHTML é possível, facilmente, construir uma aplicação para navegação pelaInternet, ou seja, um Web Browser, com todas as funcionalidades de navegaçãoencontradas no Microsoft Internet Explorer.

Construir um simples web browser é extremamente fácil, não sendo necessário escrevernem uma linha de código SAL.

Observe a figura abaixo, onde um web browser contruído com o QuickHTML está sendoutilizado para navegar pela Internet.

Um Web Browser construído com o QuickHTML.

Pré-requisitos

Para utilizar o QuickHTML, a instalação do SQLWindows/32 deve ter sido feita seguindo-se as instruções descritas no Apendice F  –   Guia de instalação do Centura TeamDeveloper 2000. 

 Na aplicação, você precisa incluir na seção Libraries, a biblioteca onde o QuickHTML estádefinido. Inclua a biblioteca chamada qckwax.apl.

Para construir um web browser com o QuickHTML, siga os seguintes passos:

Page 183: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 183/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Inicie uma nova aplicação no Centura SQLWindows/32.Declare a biblioteca de classes qckwax.apl na seção Libraries do Outline.Crie um form window.Ative a paleta de Controles e escolha o objeto do tipo Custom Control.

Escolha a classe cQuickHTML e coloque o objeto no form window.

Altere algumas características do objeto cQuickHTML, através do Customizer ou doAttribute Inspector.

 Name : oCTDBrowserTile to Parent : Yes

Através do Customizer ( ou Attribute Inspector) do form window, altere as seguintes propriedades:

 Name: frmQckHTMLObject Title: CTD Browser

Accessories Enabled: YesInitial State: Maximized

 Na barra de ferramentas do form window, coloque um data field ( dfURL) e um pushbutton ( pbABRIR).O seu código fonte deve ficar assim:

Form Window: frmQuickHTMLDescription:Named MenusMenuTool Bar

ContentsBackground Text: URL :Data Field: dfURL

Pushbutton: pbABRIRContents

Custom Control: oCTDBrowserMessage Actions

FunctionsWindow ParametersWindow VariablesMessage Actions 

A janela, em modo de design, deve estar assim:

Page 184: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 184/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O form window que será utilizado para navegar na Internet.

Você já pode executar o seu browser e navegar naturalmente pela Internet.Digite o endereço do site desejado, no campo Address do controle web browser, e utilizeos pushbuttons na sua barra de ferramentas.

Tudo deve funcionar perfeitamente, exceto os dois objetos que foram colocados na barrade ferramentas, pois, ainda não escrevemos código para eles.

Para isso, escreva o seguinte código no Message Actions do pbABRIR :

Pushbutton: pbABRIRKeyboard Accelerator: EnterMessage Actions

On SAM_ClickCall oCTDBrowser.PageLoad( dfURL ) 

Observe a propriedade Keyboard Accelerator do pbABRIR. Isso faz com que, quando o

usuário digitar o endereço e pressionar a tecla Enter, seja ativado o SAM_Click do pbABRIR.

Propriedades do QuickHTML

Através da caixa de diálogo de propriedades do QuickHTML é possível configurar ealterar diversos comportametos do objeto.

Page 185: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 185/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As propriedades da classe cQuickHTML.

Funções do QuickHTML :

EnumLinks ( )   –  Obtém todos os links da página html.GetSource ( )   –  Obtém o código fonte em HTML da página.GetCurrentURL ( )  –  Obtém o endereço da página.GetPageTitle ( )   –  Obtém o título de uma página.GetStatus ( )  –  Obtém o código de status de uma página.GoHome ( )   –  Vai para a página especificada na propriedade m_strHomePage.PageCancel ( )   –  Cancela o carregamento da página.

PageLoad ( )   –  Carrega uma determinada página.PageBackward ( )   –  Mostra a página anterior da lista de histórico.PageForward ( )   –  Mostra a página seguinte da lista de histórico.PageReload ( )   –  Carrega novamente uma página.SetSource ( )   –  Define o texto origem para ser mostrado.

Page 186: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 186/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 187: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 187/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 8Programação Orientada a Objetos com oSQLWindows/32

Este capítulo descreve as características do SQLWindows no suporte a Orientação aObjetos. São mostradas as classes e objetos, herança, encapsulamento, polimorfismo ea implementação de todos estes conceitos no SQLWindows.

A compreensão deste capítulo é muito importante para o prosseguimento do estudodos demais capítulos.

Page 188: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 188/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Os Benefícios da Orientação a Objetos

Modelagem mais próxima da realidade, mais apurada.A reutilização de código é aumentada.A confiança é aumentada.

Diminuição dos problemas com manutenção.

Classes

Classe é a base da programação orientada a objetos. É um modelo que define as ações e osatributos de um determinado tipo de objeto. Todos os indivíduos de uma determinadaclasse são idênticos em sua forma e comportamento, mas possuem dados diferentes emseus atributos. Aos indivíduos das classes dá-se o nome de instâncias. As classes podemser criadas em hierarquias, que podem passar os dados e comportamentos entre elas.

Os atributos de uma classe são os dados da classe. Por exemplo:

Classe de Pushbutton: cpbNavegacaoAtributos : Titulo

MsgDicaMsgStatusMsgErro

As ações definidas numa classe são os procedimentos, ou comportamentos, comuns entretodos os membros dessa classe. As implementações dessas ações são chamadas demétodos.

Os métodos podem ser internos e externos, ou privados e públicos. Um método interno nãorequer interação com outros objetos, são métodos acionados pelo próprio objeto. Ummétodo externo necessita de uma interação com objeto para ser realizado.

Os métodos de uma classe são as ações tomadas pela classe. Por exemplo:

Classe de Pushbutton: cpbNavegacaoMétodos : MostrarMsgDica

MostrarMsgStatusMostrarMsgErro

 _AtivarBarraDeStatusExistem duas formas de se acionar procedimentos nos objetos:

Passiva - esta forma caracteriza-se pelo recebimento, pelo objeto, de uma mensagem que pode ter sido enviada de algum objeto da mesma classe, ou de outra. O objeto que recebe amensagem deve decidir se executa alguma ação ou se simplesmente ignora a solicitação.

Ativa  - desta forma, um objeto externo explicitamente requisita que alguma açãoespecífica seja realizada, normalmente, o valor de algum atributo é obtido.

Page 189: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 189/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Uma Instância refere-se a um determinado objeto que pode ser desenhado numa tela, nocaso dos objetos visuais, ou declarado, no caso de objetos abstratos. 

Objetos

Objetos são criados numa aplicação em tempo de execução, são chamados também deinstâncias de uma classe. As classes são apenas as definições de um conjunto de objetos.Objeto refere-se a uma instância específica de uma classe, que possui as característicasdefinidas na classe.

 No SQLWindows/32 podemos criar os seguintes tipos de classes de objetos:Classes de Objetos Visuais –  como data fields, combo box, pushbutton ...Classes de Objetos Custom Controls.Classes Abstratas –  Functional Class.

Os atributos de um objeto são comuns em relação aos outros objetos da mesma classe, porém, os valores dos seus atributos são diferentes. Por exemplo:

Pushbutton cpbNavegacao: pbPrimeiroAtributos : Titulo  'Primeiro'

MsgDica  'Vai para o primeiro registro'MsgStatus  'Posiciona no primeiro registro do conjunto de registros pesquisados.'MsgErro  'Erro ao tentar posicionar no primeiro registro.'

Classe Base

É a classe da qual uma determinada classe é derivada. A classe derivada herda da suaclasse base todas as definições dos dados e do seu comportamento.

Uma classe base é expandida em classes mais especializadas, e estas são derivadas daclasse base. A classe cAutomoveis  é uma classe derivada da classe cMeiosDeTransporte,que é a classe base.

Herança

Herança é a maneira pela qual uma classe na hierarquia pode compartilhar dados e

comportamentos de outras classes, sem duplicação de código. Uma classe derivada,automaticamente, inclui dados e comportamentos de todas as suas classes base. Podeacrescentar seus próprios dados e comportamentos, e pode também redefinir os dados ecomportamentos herdados das classes base.

A herança permite que uma classe utilize e expanda todas as propriedades, operações (osmétodos) e mensagens a outras classes.

Quando uma classe é criada derivada de uma classe base, dá-se o nome de HerançaSimples. E quando a classe deriva de mais de uma classe base, chamamos de HerançaMúltipla.

Page 190: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 190/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Encapsulamento

O ideal é que um objeto jamais acesse diretamente os atributos de outro objeto. O correto éque cada objeto defina uma interface para que outros objetos possam utilizar ao requisitardados e invocar métodos. Dessa forma, um objeto pode ser tratado como uma caixa preta,

 possuindo sua interface para entrada/saída, fazendo com que não seja necessário aodesenvolvedor conhecer as definições internas do objeto. Então, são criados métodos paraatribuir e obter os valores dos atributos e um objeto, escondendo a complexidade internanecessária para manter os valores dos seus atributos.

 No objeto  pbPrimeiro, que é uma instância da classe cpbNavegacao, o métodoObtemTitulo( ) retorna o valor do atributo do objeto chamado Titulo. O métodoMostraMsgErro( ) mostra ao usuário a mensagem adequada de erro numa caixa de diálogo.Objetos externos podem utilizar os métodos sem preocupar-se com a complexidade queenvolve o processamento dos mesmos.

Polimorfismo

É basicamente o fato de objetos da mesma classe (ou não) responderem de forma diferentea mesma mensagem.

 Normalmente, o método padrão para uma determinada operação é especificado em algumaclasse pai. Eventualmente, uma ou mais classes filhas podem necessitar de umaimplementação diferente para um determinado método. Sendo assim, a classe filha faz aespecificação da operação que passa a ser um método interno seu. Fazendo isso, a classefilha não herda mais as especificações para esse método, definido em suas classes pai.

 Nesse caso, diz-se que foi implementado o polimorfismo através de sobreposição demétodos, a classe filha "sobrescreveu" o método antes definido na classe pai. Observe oexemplo:

Classe cCalculadoraMétodos

Imprimir ( )  imprime o resultado da operação matemática realizada.Copiar ( )  copia o resultado para a área de transferência.

Classe cCalculadoraAvancada

Classe Base : cCalculadoraMétodosImprimir ( )  imprime o resultado das últimas dez operações realizadas.

Copiar ( )  copia os últimos dez resultados para a área de transferência.

Comportamento

Muitos objetos de uma classe podem apresentar o mesmo comportamento ao representar e processar dados. Esse comportamento é conhecido como comportamento da classe.Existem casos em que os objetos de uma mesma classe apresentam comportamentodiferente, o qual é conhecido como comportamento da instância.

Page 191: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 191/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Implementando OOP no Centura SQLWindows/32

As classes no SQLWindows/32 estão localizadas no outline, na seção Global Declarations| Classes, ou, conforme ilustrado abaixo, na pasta Classes, localizada no quadro esquerdo

do SQLWindows/32.Observe abaixo como são organizadas as classes no outline.

Exemplo de classe de form window :

Representação de uma classe de form window no SQLWindows/32.

 Na figura acima estão mostradas as seções pertencentes a uma classe de form window.Cada tipo de classe possui seções específicas ao seu tipo. Porém, as seções são

 basicamente as mesmas. Por exemplo, uma classe de pushbutton possui as mesmas seçõesdescritas abaixo, com exceção das seções que são específicas aos objetos do tipo form

window. No caso da classe de form window, as seções são:

Seção no Outline DescriçãoForm Window Class:cfrmPadrao

Descreve o tipo e o nome da classe. O nome da classeserá utilizado quando você instanciar um objeto, estenome será apresentado no menu de contexto de criaçãode objetos tipo top level.

Description A descrição da classe. Utilize para propósitos dedocumentação, informando o que esta classe faz.

Derived From Quando esta classe é derivada de outra, o nome daclasse base fica nesta seção. No caso de herança

múltipla, os nomes aparecem listados aqui. A ordemdos nomes das classes pode fazer muita diferença.

Menu A definição do menu que será utilizado pelos membrosda classe.

Tool Bar A definição da toolbar utilizada pelos membros daclasse.

Contents Os objetos child.Class Variables Variáveis que são compartilhadas entre os membros da

classe.Instance Variables Variáveis específicas para cada instância desta classe.

São as variáveis cujos valores são únicos para cadaelemento.

Page 192: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 192/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Functions Funções ( métodos ) que poderão ser utilizadas pelosmembros da classe. São similares às funções utilizadasno restante da aplicação, exceto pelo fato de que osmétodos aqui declarados dão acesso aos atributos daclasse ( as variáveis de classe e de instância ).

Message Actions As ações padrões aos membros da classe.

A definição da classe 

A figura abaixo ilustra a definição de uma classe de pushbutton chamada cpbDica:

Definição da variável de instância isMsgDica.

A variável isMsgDica será utilizada para mostrar ao usuário um texto identificando a suafunção. Cada instância da classe cpbDica  precisa atribuir à variável isMsgDica  amensagem que será mostrada ao usuário, a sua mensagem específica.

Isto é feito conforme ilustrado na figura abaixo:

A inicialização da variável de instância isMsgDica  com as mensagens a seremmostradas.

Podemos agora analisar o funcionamento do método MostrarMsgDica( ):

Page 193: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 193/580

Page 194: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 194/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Essa modificação no código faz com que o  pb1  continue funcionando conforme asinstruções descritas na classe base. Já o objeto  pb2, que teve o código referente ao eventoSAM_Click modificado, não executará o código padrão definido na classe. Esse exemplodemonstra o polimorfismo por sobreposição de código.

Classes Derivadas

Vamos agora definir uma classe de pushbutton que deve ser derivada da classe cpbDica,ou seja, tudo o que já foi codificado para a classe cpbDica será automaticamente herdado

 por essa nova classe.

Apenas para demonstrar outra maneira de se definir uma classe, utilizaremos o assistentedo SQLWindows/32 para essa tarefa.

Ative o Assistente para Geração de Classes, através da caixa de diálogo Wizards ( Ctrl-W ).

 Na sua primeira janela, você precisa informar ao Assistente de Classes o tipo da classe aser gerada.

Assistente de Classes.

Conforme a figura acima, escolha no list box com os tipos de classes a classe dePushbutton, em seguida clicando no pushbutton Next .

 Na próxima janela do Assistente de Classes você deve informar o nome e a descrição daclasse a ser gerada.

Page 195: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 195/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Assistente de Classes, informações sobre o nome da classe.

Conforme a figura acima, dê o nome para a classe e sua descrição.Classe : cpbDica2Descrição : Classe de pushbutton para servir de base aos objetos que deverão apresentar a

sua mensagem de dica na barra de status.

E clique no pushbutton Next .

 Na próxima janela do Assistente de Classes você deve selecionar a classe que será a classe base da classe gerada.

O Assistente de Classes, a escolha da classe base.

Conforme a figura acima, escolha a classe cpbDica, que foi previamente criada.Clique no pushbutton Add  para que a classe base seja efetivamente escolhida.

Prossiga pressionando no pushbutton Next .

Page 196: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 196/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na próxima janela do Assistente de Classes você poderá confirmar o que será gerado nasua aplicação. Clicando no pushbutton Finish, o Assistente de Classes irá criar a classe nolocal apropriado do Outline, que ficará conforme mostrado na figura abaixo:

O código da classe que foi gerado pelo Assistente de Classes.

Page 197: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 197/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Tipos de classes do SQLWindows/32

O SQLWindows/32 suporta quatro tipos de classes. Esses tipos de classes possuem emcomum vários recursos como funções, variáveis de instância e de classe. Com exceção dasclasses do tipo Functional Class, todas as demais possuem a seção message actions.

Veremos uma descrição dos tipos de classes disponíveis no SQLWindows/32:

Functional Class

A classe functional é um objeto não visual que pode ser utilizado para representar objetosintangíveis. Por exemplo, um processo de controle de estoque não pode ser representadovisualmente, porém, o processo possui um padrão definido. Classes funcionais também

 podem ser utilizadas como Classes Abstratas Base, para objetos tangíveis.

General Window Class

Uma classe tipo General Window possui todas as funcionalidades encontradas numa classetipo functional e possui ainda a seção Message Actions. Assim como a classe Functional,essa classe não possui representação visual, porém, pode ser utilizada para compartilhar afuncionalidade das mensagens, das funções e variáveis entre todos os demais tipos declasses. Classes do tipo General Window só podem ser utilizadas como classe abstrata.

Classes Window

Classes Window são as classes correspondentes a cada tipo de objeto do SQLWindows/32(por exemplo, scroll bars, radio buttons e combo box). Essas classes devem ser utilizadascomo base para as definições das classes instanciadas pelos objetos visuais. Devem serusadas também para dar a aparência correspondente à funcionalidade das aplicações.

Classes Custom Control

Classes tipo custom control são utilizadas para permitir que DLLs e controles do VisualBasic possam ser utilizados no SQLWindows/32. Através de classes custom control o

 programador pode expandir a funcionalidade de um controle, ou empacotar   afuncionalidade para facilitar a sua utilização. A grande diferença presente nesta classe estáem prover a funcionalidade necessária para se relacionar com rotinas externas.

Page 198: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 198/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A representação das classes no outline do SQLWindows/32

Uma classe no outline do SQLWindows/32 é representada por uma determinada estrutura.Essa estrutura é padrão e pouca diferença há entre as estruturas de diferentes classes.Abaixo estão descritas as seções que são adicionadas ao outline quando você cria uma

classe.

As seções das classes são:

Nome da classe

É utilizado quando você instancia um objeto. Esse nome é apresentado no menu decontexto de criação de objetos tipo top level. Para classes de objetos child, o nome daclasse é mostrado na paleta de controles. Assim que você escolher um tipo de objeto, asclasses desse objeto são listadas na Paleta de Controles.

Derived From

Quando uma classe é derivada de outra, o nome da classe base fica nesta seção. Você não pode derivar classes de tipos diferentes. Por exemplo, uma classe de combo box não podeter como classe base uma classe de pushbutton.

Classes tipo functional só podem ter como classe base uma ou mais classes do tipofunctional.

Classes tipo general window só podem ter como classe base uma ou mais classes do tipofunctional e general window class.

Classes de objetos top level e child só podem ter como classe base uma ou mais classes domesmo tipo, classes tipo functional e/ou do tipo general window class.

Class Variables

Variáveis de classe são as variáveis que armazenam dados compartilhados entre todos osmembros da classe. Isso significa que existe apenas um único local alocado paraarmazenamento desse tipo de variável para todos os membros da classe. Esse tipo devariável é bastante parecido com uma variável Global, exceto pelo fato de que só pode ser

utilizada por membros da classe.Se um membro da classe armazena um valor numa variável de classe, todos os demaismembros da classe podem ver  o novo valor.

Instance Variables

Variáveis de instância são variáveis definidas para utilização pela classe. Porém, diferentedas variáveis de classe, existe um local de armazenamento para cada membro da classe.Dessa forma, cada instância da classe possui seus próprios valores para os mesmosatributos.

Functions

Page 199: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 199/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Funções (métodos) que poderão ser utilizadas pelos membros da classe. São similares àsfunções utilizadas no restante da aplicação, exceto pelo fato de que os métodos aquideclarados dão acesso aos atributos da classe (as variáveis de classe e de instância), e não

 podem ser utilizados de fora da classe.

Message Actions

Todos os tipos de classe possuem esta seção, exceto as classes functional e as classes deobjetos passivos (como line, background e frames). Todo o processamento global demensagens deve ser codificado nesta seção. A única forma de compartilhamento demensagens entre objetos visuais de tipos diferentes é através do message actions da classegeneral window.

Page 200: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 200/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 201: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 201/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 9Ampliando o desenvolvimento com o CDK

 Neste capítulo você conhecerá os fundamentos do CDK, seus benefícios,componentes, e aprenderá a utilizar seus recursos, entre eles a geração decódigo fonte, talvez o mais interessante dos recursos disponíveis noSQLWindows/32.

Page 202: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 202/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apresentação

O CDK é uma biblioteca orientada a objeto que possui uma série de classes, as quais podem ser utilizadas pelos programadores em SQLWindows/32 e em linguagem C++.

O CDK torna possível:

  O desenvolvimento de ferramentas adicionais para os programadores em linguagemSQLWindows/32.

  A confecção de assistentes, componentes e uma série de utilitários que ajudam aaumentar a produtividade.

  Adaptação do ambiente de desenvolvimento Centura de acordo com as necessidades dodesenvolvedor.

  A integração do Centura com outras ferramentas de desenvolvimento, como porexemplo ferramentas upper-CASE, ferramentas de teste e análise de performance.

Utilização e benefícios

Utilizando os objetos providos pela biblioteca CDK você pode desenvolver uma série deferramentas que aumentarão sua produtividade em diversas tarefas repetitivas, tarefas que,se realizadas manualmente, podem demorar muito tempo para ficarem prontas, além denão haver garantia de padronizacão e de qualidade.

Alguns exemplos de ferramentas que você pode construir:

  Um programa que salve as aplicações e suas respectivas bibliotecas em formato binárioou texto. Essa é uma forma muito interessante de economizar o espaço ou de atualizaras bibliotecas de todas as suas aplicações.

  Pode alterar a funcionalidade da opção Save  na barra de ferramentas doSQLWindows/32, para que, automaticamente, seja realizado um backup do arquivofonte.

  Personalizar o ambiente de desenvolvimento, permitindo que você configure as propriedades de vários objetos num form window, ao mesmo tempo.

  Personalizar objetos de forma que suas propriedades sejam configuradas através deamigáveis assistentes, ficando essas armazenadas dentro do objeto, não aparecendo nooutline. Essas propriedades são recuperadas pelo objeto quando for necessário, e o

 programador pode alterá-las através da sua janela de configuração.

  Um programa que faz as correções necessárias, quanto ao tratamento de datas comquatro dígitos para o ano, evitando assim que ocorram erros com a chegada do ano

2000.

Page 203: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 203/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  Expandir e aumentar o seu ambiente de trabalho, criando você mesmo seus utilitários para ajudá-lo no processo de desenvolvimento.

  Melhorar a precisão da implementação do código, utilizando ferramentas que, de forma bastante simples, através de interfaces amigáveis, façam a geração de código

automaticamente.

Page 204: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 204/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Interfaces

O CDK possui três interfaces, descritas abaixo:

  Interface Outline

Esta interface é composta de um conjunto de classes e funções que permitem amanipulação do outline de uma aplicação SQLWindows/32. Essa manipulação é feitaatravés de um outro programa escrito em SQLWindows/32 ou C++. Para utilização dessa

 biblioteca de classes, é necessário o conhecimento da estrutura do outline doSQLWindows/32.

Utilize a interface Outline para criar programas que leiam e que gerem aplicaçõesSQLWindows/32 com a linguagem SAL ou C++.

As classes e funções providas pela interface Outline estão presentes na biblioteca chamada

CDK.APL, que é instalada junto com o CDK, conforme instruções descritas no Apêndice F- Guia de instalação do Centura Team Developer 2000.

  Interface Runtine

Esta interface permite que se obtenha o estado dos objetos de uma aplicaçãoSQLWindows/32 quando estes encontram-se em tempo de execução, pode ser utilizada poruma série de utilitários como ferramentas de automatização de testes.

Você pode utilizar a interface Runtime para avaliações de performance, depuração etc.Pode também acompanhar a execução de cada comando, gravando um arquivo de log, semutilizar nenhum comando de depuração do SQLWindows/32, ou seja, sem alteração nocódigo fonte.

  Interface Notification

Esta interface permite que um programa receba avisos cada vez que você modificar o foco

no outline, apagar um item, adicionar um item, abrir ou salvar uma aplicação noSQLWindows/32. Você pode criar ferramentas que executem tarefas, como selecionar umalinha na visão Outline. A interface Notification atua sobre a interface do SQLWindows/32com o programador.

Ferramentas do CDK

O CDK possui algumas ferramentas para o SQLWindows/32 que são instaladas junto como produto no subdiretório cdk\samples, são elas:

Page 205: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 205/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  CDK Item ExplorerCada elemento no outline do SQLWindows/32 possui um valor numérico, identificado

 por uma constante declarada na seção Constants na biblioteca CDK.APL. Este utilitário permite que você conheça os valores de cada elemento do outline, bastando que vocêselecione o componente desejado.

  Wizard WizardInstala o seu assistente junto aos assistentes do SQLWindows/32.

  Property EditorMostra as propriedades de um objeto, permitindo que sejam alteradas.

  Mass CustomizerLista todos os objetos child de um determinado top level window e permite que vocêmodifique os valores dos atributos de um ou mais objeto ao mesmo tempo.

Page 206: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 206/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O modo de funcionamento

O modo de funcionamento do CDK é bastante simples. Consiste basicamente de umaaplicação ( ativa ), que serve como um editor das propriedades, ou seja, uma  janela de

configurações, que lê e escreve o código fonte na aplicação que está sendo configurada

(passiva). A aplicação ativa pode ser escrita em SQLWindows/32 ou em linguagem C++.

Existem quatro maneiras de relacionar sua aplicação SQLWindows/32 à aplicação queconfigura as propriedades, são elas:

  Relacionando, através do QuickObject Editor, o objeto à aplicação que serve deeditor das propriedades.

  Adicionando um ícone na barra de ferramenats do SQLWindows/32 que ativa o editorde propriedades.

  Escrevendo código na aplicação a partir de um programa em execução, o qual abre umfonte SQLWindows/32, lê e escreve os comandos necessários, salva e fecha aaplicação.

  Registrando, como um Assistente, a aplicação que serve como editor de propriedades.Essa aplicação passa a ser ativada a partir da janela Wizards  do próprioSQLWindows/32.

Serão mostrados exemplos para cada um dos casos citados acima.

iInformação:Os capítulos 9 e 10 dão todas as informações necessárias para realizar essasquatro tarefas citadas acima, sendo de suma importância que você compreendao funcionamento dos QuickObjects, que foi explicado no capítulo 6, e asclasses estudadas no capítulo 8.

Utilizando o QuickObject Editor

Através do QuickObject Editor, você relaciona uma classe a um aplicativo que iráconfigurar suas propriedades.

A criação de uma aplicação que configura as propriedades de objetos é estudada emdetalhes no capítulo 10 - Criando seus próprios QuickObjects.

A seguir, serão enumeradas as instruções que você deve seguir para relacionar uma classeao aplicativo que irá configurar as suas propriedades.

1- Inicie uma nova aplicação no SQLWindows/32.

2- Crie uma nova classe de data fields, chamada cMeuDataField , na seção de classesdo outline.

3- Crie um novo form window chamado frmExemplo.

Page 207: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 207/580

Programando com o Centura Team Developer 2000

Página PAGE 582

4- Coloque um data field da classe cMeuDataField  no form window frmExemplo.

Dê um nome a esse data field, utilize o nome dfTEXTO  para facilitar futurasreferências.

5- Acione o QuickObject Editor através dos menus Component | QuickObjectEditor....

6- Na tela do QuickObject Editor preencha os campos com as informações descritas aseguir:

7- Selecione a classe cMeuDataField  que você criou conforme o item 2.

8- No campo  Application Name informe a aplicação chamada exCDK_App_01.exe,(posteriormente estudaremos detalhadamente a construção dessa aplicação).

Você pode fazer download dos arquivos fonte presentes no livro diretamente a

 partir do site http://www.centuraexplorer.com.br/livro_ctd2000/.9- No combo box Dialog Name você deve escolher o dlgConfigProp.

10- No campo Command Text  escreva "Propriedades..." ( sem as aspas ).

11- Sua tela deve estar igual a figura mostrada abaixo:

Page 208: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 208/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Clique no botão OK para aplicar as configurações feitas e fechar a janela doQuickObject Editor. Os demais campos dessa tela serão explicados no final desteexemplo.

12- Acione o customizer do data field que você colocou no form window frmExemplo.

Observe que uma nova opção apareceu no customizer, a opção chamada Propriedades....

Essa nova opção foi criada para ativar a aplicação que irá configurar as propriedades desse objeto.

Page 209: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 209/580

Programando com o Centura Team Developer 2000

Página PAGE 582

13- Abaixo você pode observar a janela de configuração das propriedades que foichamada conforme configurado no QuickObject Editor.

Essa janela é a janela de configuração das propriedades da classe cMeuDataField.

Para facilitar referências futuras, salve sua aplicação como exCap10_01.app. 

O QuickObject Editor

O QuickObject Editor serve para relacionar as classes visuais desenvolvidas noSQLWindows/32 as suas respectivas aplicações, responsáveis por configurar os seusatributos. Essa aplicação deve ter sido construída numa versão binariamente compatívelcom o SQLWindows/32 que está sendo executado no momento. Por exemplo, não é

 possível a uma classe, atualmente carregada no outline do SQLWindows/32, serconfigurada por uma aplicação gerada numa versão do SQLWindows/16, ou ainda numaversão anterior do Centura Team Developer 2000.

Observe abaixo o que significa cada objeto presente na tela do QuickObject Editor:

Page 210: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 210/580

Page 211: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 211/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A seguir, serão enumeradas as instruções que deverão ser seguidas para adicionar um íconena barra de ferramentas do SQLWindows/32. Neste exemplo, o ícone executará a mesmaaplicação do exemplo anteiror.

1- Caso seja necessário, inicie o SQLWindows/32 e carregue a aplicação exemplo 

chamada exCap10_01.app, utilizada no exemplo anterior.

2- Acione a janela de configurações das ferramentas através do menu Tools | UserTools.

3- Para adicionar uma nova ferramenta você deve clicar no botão Add.

4- No campo chamado Command  informe a aplicação chamada exCDK_App_01.exe, Não esqueça de colocar o path completo, para que a aplicação seja encontrada.Essa foi a mesma aplicação utilizada no exemplo anterior.

5- No campo Parameters digite:"dlgConfigProp" $Outline $MarkedItem $MainWindow

Posteriormente esses parâmetros serão explicados.

6- No campo Working Directory informe o mesmo path utilizado no item 4.

7- No campo Menu Text  informe "Propriedades" ( sem as aspas ).

8- No campo Tool Tip informe "Propriedades do objeto" ( sem as aspas ).

9- Clique no botão OK para salvar as configurações feitas.

10- Observe que foi adicionado ao menu Tools o item que você acabou de adicionar.

Para acionar a janela de propriedades, selecione o objeto data field e acione omenu Tools | Propriedades.

11- Você pode também ativar a barra de ferramentas do SQLWindows/32. Acione o

menu Tools | Toolbars ...

Page 212: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 212/580

Programando com o Centura Team Developer 2000

Página PAGE 582

12- Marque o check box Tools para que a barra de ferramentas apareça.

13- A barra de ferramentas pode ser posicionada em qualquer lugar da tela.

A janela Tools

Através da janela Tools é possível adicionar novas funcionalidades ao menu Tools doSQLWindows/32. Você pode adicionar seus QuickObjects ( como mostrado no exemploanterior ) ou chamadas para quaisquer aplicativos que você desejar, como seu browser,

aplicativo de e-mails, editor de textos ou agenda.

Cada aplicativo adicionado ao menu Tools está também, automaticamente, disponível na barra de ferramentas Tools.

Observe abaixo o que significa cada objeto presente na tela de configurações do menuTools.

Page 213: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 213/580

Programando com o Centura Team Developer 2000

Página PAGE 582

1 O objeto mostrado no campo Tools é um list view, onde são mostrados os ícones eos nomes das aplicações já configuradas no menu Tools, as aplicações já existentes.Caso você queira alterar alguma configuração feita numa ferramenta presente, bastaclicar uma vez sobre seu ícone ou nome, fazer as alterações desejadas e então clicarno botão OK  para gravar as configurações.

2 Quando o check box  Ask for arguments  está selecionado, o SQLWindows/32, aoexecutar o aplicativo que está sendo configurado, mostra uma caixa de diálogosolicitando por mais algum argumento a ser passado como parâmetro ao aplicativode configuração.

3 Ao marcar o check box Ask to save outline, o SQLWindows/32 sempre irá perguntarse você deseja salvar a aplicação antes de executar o aplicativo configurado.

4 Informe no campo Command   a linha de comando completa para a execução daferramenta desejada, ou seja, o path completo e o nome do aplicativo. Para executaro nosso aplicativo exemplo, informamos o path e o nome do seu executável. Porexemplo, caso você queira ativar o windows explorer informeC:\WINDOWS\EXPLORER.EXE.

Page 214: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 214/580

Programando com o Centura Team Developer 2000

Página PAGE 582

5 No campo Parameters são colocados os parâmetros que serão enviados ao aplicativoa ser executado. No caso dos QuickObjects, os quatro primeiros parâmetros sempredevem ser o nome do dialog box que será ativado no aplicativo, o handle do outlineatual, o handle do objeto ativo e o handle da janela principal. Você deve utilizar asmacros descritas abaixo:

$File A especificação completa do nome do arquivo que representa ooutline.

$FileName O nome e extensão do arquivo que representa o outline.$FileDir O drive e diretório do arquivo que representa o outline.$Outline Um valor numérico equivalente ao outline atual.$MainWindow

O handle da janela principal.

$DesignItem O handle do objeto top level que está sendo utilizado noSQLWindows/32 ( é o handle do form window, mdi, dialog box outable ).

$MarkedItem O handle do objeto selecionado no outline.

6 Informe no campo Working Directory o diretório de trabalho da aplicação informadano campo 4.

7 O texto informado no campo Menu Text  será adicionado ao menu Tools.

8 O texto informado no campo Tool Tip será mostrado quando o mouse estiver sobre oícone da barra de ferramentas correspondente a essa ferramenta.

9 Você pode escolher um dos ícones mostrados no campo  Available Icons, para queseja associado ao aplicativo que você está configurando. Esse ícone é mostrado na barra de ferramentas Tools.

10

O botão identificado pelo número dez aciona um menu mostrando as macros quevocê pode informar no campo Parameters.

Escrevendo código numa aplicação

 Neste exemplo, mostraremos como construir uma aplicação em SQLWindows/32 que,utilizando o CDK, irá abrir uma aplicação, escrever algumas linhas de código, salvar e

fechar a aplicação. Os passos são os seguintes:

  Abrir a aplicação fonte, chamada exCap10_01.app, que criamos no primeiro exemplo.  Localizar o form window que chamamos de frmExemplo.  Definir uma variável na seção variables do form window frmExemplo.  Dentro desse form window, localizar o data field chamado dfTEXTO.  Escrever algumas linhas de código para o dfTEXTO.  Salvar a aplicação com o nome exCap10_02.app.  E sair.

Observe as instruções detalhadas para executarmos estas operações:

Page 215: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 215/580

Programando com o Centura Team Developer 2000

Página PAGE 582

1 - Caso seja necessário, inicie uma nova aplicação no SQLWindows/32.

2 - Declare na seção file Include do outline a biblioteca do CDK chamada CDK.APL.

3- Crie um novo form window chamado frmGeraCodigo.

4- Coloque um pushbutton nesse form window, com o nome pbGERAR_CODIGO ecom título "Gerar Código".

5- Declare algumas variáveis na seção Variables do form window  frmGeraCodigo,conforme mostrado abaixo:

6-

1234567891011

1213 

Digite o código mostrado abaixo no message actions do botão pbGERAR_CODIGO. As linhas de código estão numeradas para facilitar asexplicações:

On SAM_ClickCall SalWaitCursor( TRUE )Call CDK_App.InitFromFile ( "exCap10_01.app" )If CDK_App.GetTopLevelWindow ( "frmExemplo" , oForm )

Call oForm.AddWindowVariable( CDK_IT_String, "sNome" )If oForm.GetChildWindow ( "dfTEXTO" , oDataField )

Call oDataField.AddMessageAction ( "SAM_Create" , oMensagem )Call oMensagem.GetActions ( oAcao )Call oAcao.InsertAfter ( "Call SalGetItemName( hWndItem , sNome )" )

Call oAcao.InsertAfter( "Set MyValue = 'Olá, este é o objeto ' || sNome")Call CDK_App.SaveOutline ( "exCap10_02.app" )

Page 216: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 216/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Call CDK_App.CloseApp ( )Call SalWaitCursor( FALSE )

 Na linha 3, a aplicação exCap10_01.app é inicializada pela função do CDKchamada InitFromFile. A variável CDK_App representa o objeto aplicação.

 Na linha 4 a função GetTopLevelWindow está localizando o objeto frmExemplo e,quando encontrar, inicializa o objeto representado pela variável oForm.

 Na linha 5, uma variável tipo String, chamada sNome, é definida no objetoidentificado pela variável oForm. CDK_IT_String é uma constante do CDK querepresenta o tipo de dado string, na definição de variáveis.

 Na linha 6 a função GetChildWindow localiza o objeto dfTEXTO, dentro doobjeto representado pela variável oForm, ou seja, o dfTEXTO é procurado dentrodo frmExemplo. Quando o data field for encontrado, o objeto representado pelavariável oDataField é inicializado.

 Na linha 7 é adicionado o evento SAM_Create no message actions do data field.

A linha 8 inicializa o objeto oAcao, que será utilizado para escrever o códigoreferente ao conteúdo do evento SAM_Create.

 Na linha 9 é inserido uma linha de código dentro do evento SAM_Create, essalinha obtém o nome do objeto, armazenando-o na variável sNome, que foi definidana linha 5.

 Na linha 10 o valor do conteúdo do data field é definido, utilizando-se o conteúdoda variável sNome.

7- Salve a aplicação ( como exCap10_03.app) e execute.

8- Clique no pbGERAR_CODIGO, para que o códgo seja escrito na aplicaçãodestino.

9- Após o término da execução, carregue a aplicação destino (exCap10_02.app) noSQLWindows/32 e observe o código que foi escrito.

Form Window: frmExemplo

ContentscMeuDataField: dfTEXTO

On SAM_CreateCall SalGetItemName( hWndItem , sNome )Set MyValue = 'Olá, este é o objeto ' || sNome

Execute a aplicação e veja o resultado.

Assim, utilizando o CDK, você pode construir programas que escrevam código fonte no

outline de aplicações SQLWindows/32, podendo vir a criar aplicações completas dessa

Page 217: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 217/580

Programando com o Centura Team Developer 2000

Página PAGE 582

forma. Este assunto será estudado detalhadamente no Capítulo 11 - Criando seus própriosQuickObjects.

Registrando seus Assistentes

Suas aplicações construídas com o CDK podem ser transformadas em Assistentes, e você pode registrar essas aplicações na caixa de diálogo de assistentes do próprioSQLWindows/32, a janela Wizards, facilitando a utilização por parte dos desenvolvedores.

Para que você inclua suas aplicações na janela Wizards, é necessário registrar noSQLWindows/32 o Assistente dos Wizards, uma aplicação que é instalada junto com oCDK, chamada Wizard Wizard.

Para instalar o Wizard Wizard siga os seguintes procedimentos:

1- Ative o SQLWindows/32, caso seja necessário.

2- O Wizard será adicionado na janela dos Wizards do SQLWindows/32. PressioneCtrl-W, ou ative o menu Component | Wizards ...  para visualizar a janelaWizards.

Clique no botão Cancel para fechar a janela Wizards.

3- A aplicação Wizard Wizard precisa ser executada, isso pode ser feito de uma dasmaneiras mostradas abaixo:

  Ative o menu Executar no Menu Iniciar do seu Windows e informe o

Page 218: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 218/580

Programando com o Centura Team Developer 2000

Página PAGE 582

aplicativo "C:\Program Files\Centura\cdk\sal\samples\Wizwiz.exe" para serexecutado.

  Através do Windows Explorer, localize o diretórioC:\CENTURA\CDK\TOOLS e clique duas vezes no programa WIZWIZ.EXE.

4- Confirme a execução da aplicação quando esta janela de confirmação formostrada.

Page 219: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 219/580

Programando com o Centura Team Developer 2000

Página PAGE 582

5- A janela abaixo mostra as informações que serão gravadas no registro do sistema.

 Não altere nenhuma das informações mostradas, simplesmente clique no botão Install  para que a instalação seja realizada.

6- A janela mostrada abaixo indica que o processo de instalação do Wizard Wizardfoi concluído com sucesso.

7- O Wizard Wizard, devidamente registrado na janela Wizards do SQLWindows/32.

Page 220: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 220/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Uma vez que o Wizard Wizard encontra-se instalado, você pode instalar seus própriosWizards. O Wizard Wizard faz com que sua aplicação seja um assistente auto-instalável,ou seja, que se registra automaticamente junto aos assistentes do SQLWindows/32.

Para exemplificar o registro de uma aplicação com Assistente de Wizard utilizaremos aaplicação chamada "exemplo de editor de propriedades", exCDK_App_01.app, a qual foi

citada no início deste capítulo para ilustrar a utilização de uma aplicação que configura as propriedades de algum objeto.

Siga as instruções abaixo para registrar a aplicação na janela de Wizards doSQLWindows/32:

1- Ative o SQLWindows/32, se for necessário, e carregue a aplicação chamadaexCDK_App_01.app

2- Salve a aplicação exCDK_App_01.app com o nome exCDK_App_01a.app.

3- O Wizard Wizard escreverá as instruções necessárias na seção Application

Page 221: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 221/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Actions, na aplicação, para que essa se comporte como um assistente auto-instalável, então, apague ou comente a linha referente ao evento On AppStartup, noApplication Actions da aplicação exCDK_App_01.app.

Comente apenas a linha do evento AppStartup, conforme mostrado acima.

Apague ou comente  o dialog box chamado dlgConfigProp  que existe nessaaplicação.

4- Ative a janela Wizards e execute o Wizard Wizard.

A figura mostrada acima é a janela inicial do Wizard Wizard, o programa quetransforma sua aplicação em um assistente auto-instalável. Clique no botão  Next  

 para iniciar.

5- Nesta janela você deve informar o nome do aplicativo e o seu ícone. Após serinstalado, o seu aplicativo será identificado na janela Wizards pelo nome que vocêdigitar no campo Title.

Page 222: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 222/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O nome do ícone mostrado no campo  Icon File ( D:\Aplicacao\help.ico ) é apenasuma sugestão.

Clique no botão Next  para prosseguir.

6- Nesta janela, digite "Propriedade" ( sem as aspas ) no campo Key.

Isso identifica o seu assistente perante o registro do Windows.

7- Conforme a figura abaixo, digite o nome do dialog box que será executado quandoo seu aplicativo, que será transformado em assistente, for ativado. Informe aqui onome da janela principal do seu assistente, digitando "dlgConfigProp".

Clique no botão Next  para continuar.

Page 223: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 223/580

Programando com o Centura Team Developer 2000

Página PAGE 582

8- Na janela abaixo, o Wizard Wizard está mostrando as informações que serãoregistradas.

Clique no botão Finish.

Ao término desse processo, o código adicionado pelo Wizard Wizard transformou aaplicação num assistente auto-instalável. Quando a aplicação for executada pela primeiravez, ela automaticamente será registrada no Registro do Windows, e o seu ícone seráadicionado à janela Wizards do SQLWindows/32.

Page 224: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 224/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 225: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 225/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 10Criando seus próprios QuickObjects

 No capítulo 6 foi mostrado como desenvolver aplicações com os QuickObjects queacompanham o Centura Team Developer. Foram construídas rapidamente algumasaplicações sem a necessidade de programação em SQLWindows/32. Agora mostraremoscomo construir seus próprios QuickObjects, através de exemplos simples e instruções

 passo-a-passo. Através dos exemplos mostrados procuramos fazer com que vocêcompreenda as diversas possibilidades dos QuickObjects.

Para construir seus próprios QuickObjects, você precisa ter compreendido os conceitosapresentados nos capítulos 8 - Programação Orientada a Objetos com o

SQLWindows/32 e 9 - Ampliando o desenvolvimento com o CDK , pois essa é a base datecnologia dos QuickObjects.

Page 226: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 226/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Introdução

Vamos relembrar alguns conceitos sobre os QuickObjects que precisam estar bem clarosneste momento.

  Os QuickObjects são classes especiais que possuem uma interface amigável com o programador, para que sejam configuradas suas características, parâmetros e algunscomportamentos para o objeto, quando este estiver sendo executado.

  Uma classe pode ser configurada via programação através de escrita de código SALdiretamente no message actions do objeto instanciado, dessa forma configuramos oscomportamentos e atributos. Através do customizer configura-se as características doobjeto. Nesse ponto, os QuickObjects entram em ação, oferecendo uma maneiraamigável e produtiva para a configuração das propriedades do objeto, podendo vir asubstituir totalmente os outros dois modos citados anteriormente.

  A configuração via QuickObjects consiste de uma aplicação que é chamada paraconfigurar as propriedades do objeto. Essa aplicação pode ter sido escrita emSQLWindows/32 ou em linguagem C++, utilizando a interface Outline da bibliotecaCDK.

  O relacionamento entre uma classe e a aplicação que irá configurar suas propriedades,é feito através do QuickObject Editor.

O ciclo de atividades de uma aplicação configuradora  de propriedades em umadeterminada classe é descrito abaixo:

1 A aplicação QuickObject precisa saber quem a chamou, isso é possível através dos parâmetros recebidos na variável do sistema chamada strArgArray. Estasinformações necessárias estão contidas nos quatro primeiros elementos deste vetor:strArgArray[1]- O nome da caixa de diálogo a ser criada, para configurar as

 propriedades.strArgArray[2]- O identificador do outline da aplicação.strArgArray[3]- O identificador do objeto no outline.strArgArray[4]- O handle do objeto principal da janela de design.

Você não precisa preocupar-se com isso, deve apenas ter conhecimento. Existe um

 procedimento padrão a todas as aplicações QuickObjects que configuram propriedades em objetos, este código deve estar presente na seção ApplicationActions e é mostrado abaixo:

On SAM_AppStartupCall CDK_App.InitializeFramework()Call CDK_App.DisplayModalWindow()

On SAM_AppExitCall CDK_App.CloseApp()Call CDK_App.CloseFrameWork()

2 A aplicação deve obter as propriedades a serem configuradas, para que, senecessário, sejam alteradas. Existem várias formas de se obter uma propriedade de

um objeto, diversas funções podem ser utilizadas, por exemplo:

Page 227: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 227/580

Programando com o Centura Team Developer 2000

Página PAGE 582

oObjeto.GetClassName ( ) - Obtém o nome da classe do objeto oObjeto.oObjeto.GetName ( ) - Obtém o nome do objeto.oObjeto.GetStrProperty ( 'PropXXX' , sProp ) - Obtem o valor da propriedade'PropXXX'.

A função GetStrProperty deve ser utilizada para recuperar os valores das propriedades definidas pelo programador.

!Lembre-se:As propriedades definidas pelo programador são armazenadas no interior doobjeto, não estando visíveis no attribute inspector, customizer ou no outline. Aúnica forma de acessar essas propriedades e alterar seus valores é através dasua própria aplicação configuradora.

3 Ao término da operação de configuração, a aplicação deve gravar as propriedadesconfiguradas no interior do objeto. Existem várias formas de se gravar uma

 propriedade num objeto, diversas funções podem ser utilizadas, por exemplo:

oObjeto.SetObjectClass ( ) - Define a classe base do objeto.oObjeto.SetName ( ) - Define o nome do objeto.oObjeto.SetStrProperty ( 'PropXXX' , sProp ) - Gravar o valor da propriedade'PropXXX' no objeto.

A função SetStrProperty deve ser utilizada para gravar os valores das propriedadesdefinidas pelo programador.

!Lembre-se:As propriedades criadas pelo programador são do tipo de dado string. Vocêsempre deve tomar os devidos cuidados junto a sua utilização, convertendotipos diferentes ao gravá-las dentro do objeto ( SetStrProperty ), e aorecuperá-las ( GetStrProperty ).

Eventualmente utilizaremos alguns exemplos de aplicações construídas em capítulos

anteriores, você pode utilizar as aplicações contruídas por você ou recuperá-la diretamentedo CD-ROM que acompanha o livro.

Exemplo 1Trabalhando com propriedades definidas pelo programador.

 Neste exemplo iremos criar uma típica janela de propriedades que será utilizada para permitir que o programador configure o texto que será mostrado na barra de status, quandoo usuário posicionar o mouse por cima do objeto.

1 - Inicie uma nova aplicação no SQLWindows/32.

2 - Carregue no SQLWindows/32 a aplicação chamada exOOP2.app que foi

Page 228: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 228/580

Programando com o Centura Team Developer 2000

Página PAGE 582

construída no Capítulo 8 - Programação Orientada a Objetos noSQLWindows/32.

Você pode fazer download dos arquivos fonte presentes no livro diretamente a partir do site http://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo

chama-se exOOP2.app.

Essa aplicação, mostrada na figura acima, faz com que uma mensagem sejamostrada na barra de status do form window. A mensagem é configurada através

do método DefineMsgBarraStatus que foi definido na classe de pushbuttoncpbDica.

A utilização dessa função não será mais necessária, pois, criaremos uma interfaceamigável para configurar esta propriedade.

3 - Comente as linhas de código existentes no message action do pbOK e do pbCANCELAR.

4 - Para facilitar futuras referências salve a aplicação com o nome exQO2.app.

5 - Inicie uma outra instância do SQLWindows/32. Você ficará com doisSQLWindows/32 abertos em seu Windows, dessa forma ilustraremos melhor o queestá acontecendo.

6 - Neste segundo SQLWindows/32 aberto defina na seção Libraries do outline ainterface Outline do CDK, cujo nome do arquivo é CDK.APL.

LibrariesFile Include: CDK.apl

7 - Para facilitar futuras referências salve a aplicação com o nome exQO2Prop.app.

Page 229: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 229/580

Programando com o Centura Team Developer 2000

Página PAGE 582

8 - Insira, na seção Application Actions desta aplicação, as linhas de código mostradasabaixo:

On SAM_AppStartupCall CDK_App.InitializeFramework()Call CDK_App.DisplayModalWindow()

On SAM_AppExitCall CDK_App.CloseApp()Call CDK_App.CloseFrameWork() 

Essas linhas representam a inicialização e a finalização do QuickObject queestamos criando.

9- Crie um objeto dialog box chamado dlgConfigPropriedades, conforme mostradona figura abaixo:

A mensagem que será mostrada na barra de status do form será mostrada no datafield chamado dfTEXTO, permitindo assim, que o programador configure amensagem de forma mais amigável. Para gravar as alterações basta clicar no botãoOk. Caso queira sair sem salvar as alterações, utiliza-se o botão Cancela.

10- Para que o dfTEXTO mostre a mensagem configurada para o objeto você precisaescrever as seguintes instruções no seu message actions:

O primeiro parâmetro da função GetStrProperty é o nome da propriedade a ter seuvalor recuperado, este valor é armazenado na variável ou objeto informado nosegundo parâmetro.

Page 230: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 230/580

Page 231: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 231/580

Page 232: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 232/580

Programando com o Centura Team Developer 2000

Página PAGE 582

E clique no botão OK para salvar as configurações.

4 - Agora que a classe está configurada, você pode testar a utilização do seuQuickObject.

5 - Ative a paleta com os controles ( Ctrl-W ) e escolha o objeto do tipo pushbutton,conforme mostrado na figura abaixo:

Escolha a classe cpbDica e coloque o objeto no form window da sua aplicação.

6 - Ative o menu de contexto do objeto clicando sobre o mesmo com o botão direitodo mouse, para então acionar opção chamada "Propriedades".

7 - Na janela de propriedades, digite o texto que você deseja que seja mostradoquando o mouse passar por cima do objeto.

Page 233: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 233/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Clique no botão Ok para gravar e sair do QuickObject.

8 - Execute a aplicação.

Você pode utilizar quantas propriedades forem necessárias para resolver as necessidadesda sua aplicação, nesse exemplo, utilizamos apenas uma como efeito didático.

Page 234: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 234/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Exemplo 2Populando uma table window

 Neste exemplo mostraremos como fazer um assistente que gera uma aplicaçãoSQLWindows/32 escrevendo o código fonte necessário para o seu funcionamento. Esta

aplicação que será gerada será capaz de carregar, numa table window, as informações presentes nma tabela do banco de dados, de acordo com as colunas que o programadordesejar.

A janela da aplicação gerada será parecida com a figura abaixo:

Este assistente que criaremos a seguir irá gerar o código necessário para que a aplicaçãofuncione, o programador não precisará escrever nenhuma linha de programação. Observeabaixo o código fonte necessário para que a janela acima funcione. Este código foi gerado

 pelo assistente que criaremos a seguir:

Será necessário registrar o assistente na janela Wizards do SQLWindows/32, portanto, émuito importante o total domínio das instruções necessárias a esse procedimento, que foiexplicado no capítulo 10 - Ampliando o desenvolvimento com o CDK.

1 - Inicie uma nova aplicação no SQLWindows/32.

Page 235: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 235/580

Programando com o Centura Team Developer 2000

Página PAGE 582

2 - Para facilitar futuras referências salve a aplicação com o nome exQO3Wiz.app.

3 - Registre sua aplicação como Wizard auto instalável . Os procedimentos sãodetalhadamente explicados no capítulo 10 - Ampliando o desenvolvimento com oCDK, na seção chamada Registrando seus assistentes.

4 - Além da biblioteca CDK.APL você deve incluir na seção Libraries do outline a biblioteca chamada dlgLOGIN.APL, pois, nela encontra-se a janela que efetuará ologin no banco de dados.A seção Libraries da sua aplicação deve estar parecida com a figura mostradaabaixo:

5 - Observe abaixo o layout do dialog box dlgGeraTbl, faça o mesmo em suaaplicação.

O programador deve escolher no combo box Tabela o nome da tabela desejada. No

list box chamado Colunas o programador deve clicar duas vezes no nome de cadacoluna que será incluída na aplicação. As colunas mostradas no list box do lado

Page 236: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 236/580

Programando com o Centura Team Developer 2000

Página PAGE 582

direito serão incluídas na aplicação que será gerada.Quando for acionado o botão Ok o programa escreverá o código fonte necessário

 para que a aplicação funcione.

6 - Observe abaixo os nomes dado aos dos objetos, é importante que este padrão seja

seguido para facilitar as explicações a seguir.

7 - Abaixo é mostrado o código fonte referente a inicialização do dialog box:

On SAM_CreateIf NOT SalModalDialog( dlgLOGIN, hWndForm )

Call SalQuit( )Else

Call SqlConnect( hSql )

O dialog box dlgLOGIN é ativado logo no início da aplicação, para que o programa seja conectado ao banco de dados.

8 - Abaixo é mostrado o código fonte referente a inicialização do combo boxcmbTABELAS:

Combo Box: cmbTABELASMessage Actions

On SAM_CreateCall SalListPopulate( hWndItem, hSql, "SELECT NAME FROM SYSTABLES")

Isso faz com que os nomes de todas as tabelas do banco de dados sejamcarregados no combo box.

9 - Quando o nome de uma tabela for escolhida no combo box cmbTABELA osnomes das colunas desta tabela devem ser mostrados no list box lbCOLUNAS.

Combo Box: cmbTABELASMessage Actions

On SAM_ClickCall SalListPopulate( lbCOLUNAS, hSql,

"SELECT NAME FROM SYSCOLUMNS WHERE TBNAME = :cmbTABELAS" )

Esse é o código necessário ao cmbTABELAS, para que os nomes das colunassejam mostrados no list box lbCOLUNAS.

10 - Quando o programador clicar duas vezes em algum dos nomes mostrados nolbCOLUNAS, esse nome deve ser colocado no lbCOLS_ESCOLHIDAS e

retirado do lbCOLUNAS.

Page 237: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 237/580

Programando com o Centura Team Developer 2000

Página PAGE 582

List Box: lbCOLUNASMessage Actions

On SAM_DoubleClickCall SalListAdd( lbCOLS_ESCOLHIDAS,

SalListQueryTextX( hWndItem, SalListQuerySelection( hWndItem )))Call SalListDelete( hWndItem, SalListQuerySelection( hWndItem )) 

Observe que a função SalListQuerySelection obtém o número do itemselecionado, o item que o programador clicou, esse número é passado como

 parâmetro para a função SalListQueryTextX que retorna o texto deste item, essetexto é inserido no list box lbCOLS_ESCOLHIDAS pela função SalListAdd.Tudo isso é feito na primeira linha de código do message actions, a segunda linhasimplesmente exclui o item selecionado no list box lbCOLUNAS.

11 - O lbCOLS_ESCOLHIDAS possui comportamento semelhante, observe o códigofonte:

List Box: lbCOLS_ESCOLHIDASMessage Actions

On SAM_DoubleClickCall SalListAdd( lbCOLUNAS,

SalListQueryTextX( hWndItem, SalListQuerySelection( hWndItem )))Call SalListDelete( hWndItem , SalListQuerySelection( hWndItem )) 

12 - No botão Ok está a parte principal deste programa, é através dele que o programador encerra a execução do programa e ativa a geração do código fonte.O message actions do pbOK é extremamente simples:

Pushbutton: pbOK

Message ActionsOn SAM_ClickCall dlgGeraTbl.fListaParaStr( )Call dlgGeraTbl.fGeraCodigo( )Call SalEndDialog( hWndForm , TRUE )

Vamos analisar mais detalhadamente as duas funções utilizadas.

13 - A função fListaParaStr transfere os nomes das colunas que foram escolhidas, eque estão no lbCOLS_ESCOLHIDAS, para uma variável stgring chamadasColunasEscolhidas. Nessa variável as colunas estão separadas por vírgulas. Issoé feito para que seja montado parte do comando SELECT que será utilizado paracarregar os dados na table window.Observe abaixo o código fonte da função fListaParaStr:

Function: fListaParaStrLocal variables

Number: nQtdEscolhidasNumber: nIdxString: sColuna

ActionsSet nQtdEscolhidas = SalListQueryCount( lbCOLS_ESCOLHIDAS )Set sColunasEscolhidas = STRING_NullWhile nQtdEscolhidas >= nIdx

Set sColuna = SalListQueryTextX( lbCOLS_ESCOLHIDAS, nIdx )If SalStrLength( sColuna ) >= 1

If SalStrLength( sColunasEscolhidas ) >= 1Set sColunasEscolhidas = sColunasEscolhidas || ", " || sColuna

ElseSet sColunasEscolhidas = sColuna

Page 238: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 238/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Set nIdx = nIdx + 1 

Suponha que o programador escolheu as colunas COMPANY_ID,COMPANY_NAME e PHONE. Estas colunas encontram-se no list boxlbCOLS_ESCOLHIDAS. Ao término da execução dessa função o conteúdo davariável sColunasEscolhidas será "COMPANY_ID, COMPANY_NAME,

 PHONE ".

14 - Isso tudo é a preparação para a função fGeraCodigo, que gera o código fonte, seucódigo é mostrado abaixo:

Function: fGeraCodigoLocal variables

Number: nNumColunasNumber: nColunacdkBaseTable: oTablecdkColumn: oColunacdkActionBlock: oAcaocdkMessageAction: oMsgAction

cdkContainer: oFormActions1 Call CDK_App.AddTopLevelWindow( CDK_IT_TableWindow ,

"tw" || cmbTABELAS , oTable )2 Call oTable.SetWindowTitle( "Dados da tabela " || cmbTABELAS )3 Set nNumColunas = SalListQueryCount( lbCOLS_ESCOLHIDAS )4 Set nColuna = 05 While nNumColunas > nColuna6 Call oTable.AddColumn( "col" ||

SalListQueryTextX( lbCOLS_ESCOLHIDAS, nColuna ) , oColuna )7 Call oColuna.SetWindowTitle( SalStrProperX(

SalListQueryTextX( lbCOLS_ESCOLHIDAS, nColuna ) ) )8 Set nColuna = nColuna + 1

!9 Call oTable.AddWindowVariable( CDK_IT_SqlHandle, "hSql" )

!10 Call oTable.AddMessageAction( "SAM_Create", oMsgAction )11 Call oMsgAction.GetActions( oAcao )

!12 Call oAcao.InsertAfter( "Set SqlDatabase = '" || SqlDatabase || "' " )13 Call oAcao.InsertAfter( "Set SqlUser = '" || SqlUser || "' " )14 Call oAcao.InsertAfter( "Set SqlPassword = '" || SqlPassword || "' " )15 Call oAcao.InsertAfter( "Call SqlConnect ( hSql ) " )

!16 Call oAcao.InsertAfter( "Call SalTblPopulate ( hWndItem , hSql ,

' SELECT " || sColunasEscolhidas ||" FROM " || cmbTABELAS || " ' , TBL_FillAll ) " )

!17 Call oTable.AddMessageAction( "SAM_Close", oMsgAction )18 Call oMsgAction.GetActions( oAcao )19 Call oAcao.InsertAfter( "Call SqlDisconnect ( hSql ) " ) 

As linhas foram numeradas para facilitar as explicações a seguir:A linha 1 insere na aplicação um objeto tipo top level table window, nestemomento, a variável oTable é inicializada representando o objeto criado. O títuloda table window é atribuído na linha 2.

 Na linha 3 o número de colunas escolhidas é armazenado na variávelnNumColunas que será utilizada juntamente com a variável nColuna ( na linha 4 )no loop definido pelo comando While ( na linha 5 ). Esse laço é utilizado paracriar as colunas na aplicação, de acordo com as colunas escolhidas nolbCOLS_ESCOLHIDAS. A linha 6 insere a coluna enquanto que a linha 7determina o seu título.A variável que será utilizada como handle sql é inserida no outline da aplicação,

conforme mostrado na linha 9. As próximas instruções, entre as linhas 10 e 19,

Page 239: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 239/580

Programando com o Centura Team Developer 2000

Página PAGE 582

são utilizadas para a escrita propriamente dita do código fonte. Essas linhas sãoinseridas no message actions da table window, são as informações necessárias

 para a conexão e para a carga dos dados na table window.

15 - Você deve gerar o executável desta aplicação ( exQO3Wiz.exe ) e executá-lo para

que seja adicionado à janela Wizards do SQLWindows/32.

 Nesse exemplo mostramos como programar a geração de código completamente funcionalem SQLWindows/32 utilizando a biblioteca CDK. Você pode modificar e melhoraralguma funcionalidade dessa aplicação para melhor satisfazer suas necessidades dedesenvolvimento.

Page 240: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 240/580

Page 241: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 241/580

Page 242: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 242/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O mecanismo de impressão de relatório do Centura Team Developer

O Report Builder é a ferramenta que acompanha o Centura Team Developer destinada aconfecção dos relatórios executados a partir das aplicações desenvolvidas emSQLWindows. É no Report Builder que você define o layout do seu relatório, as colunas,

os grupos de quebras, os totais e as fórmulas. Eventualmente você pode ter necessidade decriar relatórios com gráficos, necessidade suprida no Report Builder através de um objetoespecífico para gráficos.

Você define o layout desejado para o seu relatório no Report Builder e salva este layoutcomo um arquivo apropriado, com extensão "QRP", que pode ser utilizado noSQLWindows como parâmetro nas funções SalReport* para identificar o relatório a serexecutado pela aplicação.

Em tempo de execução da aplicação, no momento em que o relatório é solicitado pelousuário, você deve fazer uso das funções SalReportPrint() ou SalReportView() para iniciar

a impressão ou a visualização do layout montado. Em tempo de execução os dados sãoincorporados ao layout e o relatório é então extraído para a impressora ou tela.

O programador possui total controle sobre o envio dos dados da aplicação para o ReportBuilder. Através de uma série de mensagens a comunicação entre as duas aplicações éestabelecida e a troca de informações é constante.

 No momento em que o programador faz uma chamada às funções que disparam o relatório,o Report Builder é iniciado, por isso o executável do aplicativo Report Builder deve serinstalado no ambiente do cliente junto com a aplicação. Junto a essa chamada que inicia orelatório são passados vários parâmetros partindo da aplicação para o Report Builder. Umdesses parâmetros é o nome do arquivo de layout a ser carregado.

Logo na sua inicialização o Report Builder faz algumas verificações como por exemplocertificar-se da existência do arquivo de layout informado. Existindo alguma anormalidadea própria função que iniciou o relatório retorna um erro para a aplicação.

Caso nenhum erro ocorra o Report Builder carrega na memória o layout informado e avisa para a aplicação que a inicialização do relatório foi efetuada com sucesso. O modo peloqual o Report Builder avisa a aplicação que tudo está OK é enviando a mensagemSAM_ReportStart para o objeto identificado na inicialização como objeto responsável pela

comunicação entre a aplicação e o Report Builder. Você deve interceptar essa mensagemna aplicação caso queira configurar alguns parâmetros, variáveis ou executar algumastarefas típicas de inicialização de relatório.

 Neste momento o Report Builder está apto a receber dados vindos da aplicação. A tarefa de buscar os dados do conteúdo do relatório no banco de dados deve ser realizada pelaaplicação, o Report Builder apenas recebe estas informações, formata de acordo com adefinição do layout e envia para a impressora.

Após a mensagem SAM_ReportStart o Report Builder envia outra mensagem à aplicação para indicar o momento em que a primeira página do relatório será formatada. A

mensagem SAM_ReportFetchInit indica que o Report Builder está apto a receber as

Page 243: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 243/580

Programando com o Centura Team Developer 2000

Página PAGE 582

informações a serem impressas. Você deve, neste momento, iniciar o envio do conteúdo aser impresso.

O restante da comunicação entre a aplicação e o relatório passa a ser estabelecida atravésde duas mensagens:

SAM_ReportFetchNext Quando o Report Builder envia esta mensagem para a aplicaçãosignifica que esta pode enviar dados para serem impressos. Aaplicação deve, neste momento, obter a próxima linha de dadosdo local de origem das informações a serem impressas, este localnão precisa ser obrigatoriamente um banco de dados padrão SQL.Relatórios podem ser impressos no Report Builder com dadosvindos de qualquer lugar onde uma aplicação CenturaSQLWindows seja capaz de ir buscar, por exemplo arquivosTXT, DBF, documentos de um processador de textos ou sitesweb.

O Report Builder aguarda pelo valor de retorno da mensagemSAM_ReportFetchNext. Quando a aplicação determinar que orelatório deve ser encerrado, um valor FALSE deve ser retornadonesta mensagem.

Caso um valor TRUE seja retornado o Report Builder continua aimpressão do mesmo.

SAM_ReportNotify As informações enviadas a partir da aplicação vão sendoformadas pelo Report Builder em blocos para então seremimpressas. Quando estes blocos atingem o limite de uma página a

 página é impressa ou visualizada na tela.A mensagem SAM_ReportNotify é enviada à aplicação antes quequalquer desses blocos sejam formatados ou impressos, de modoque você possa modificá-los antes de serem formatados peloReport Builder. Por exemplo, antes de formatar o cabeçalho você

 pode enviar informações como nome da empresa, intervalo dedatas do período de abrangência do relatório ou até mesmo onome do módulo da aplicação.Consulte o Apêndice C - Guia das Mensagens SAM para obter

maiores detalhes sobre o funcionamento da mensagemSAM_ReportNotify.

De acordo com as definições feitas no layout quanto aos grupos de quebras o ReportBuilder automaticamente efetua as quebras de grupo atualizando os devidos sub-totais.

 Nenhum esforço de programação é necessário para que as quebras de grupo sejam feitas.Da mesma forma que nenhum esforço se faz necessário no que diz respeito às quebras de

 página. De acordo com as definições de layout de página (tamanho, margens etc) o próprioReport Builder se encarrega de imprimir o rodapé, saltar uma página, imprimir o cabeçalhoe continuar a impressão normalmente do relatório.

Page 244: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 244/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Já que é a aplicação o responsável por enviar os dados para o Report Builder, ela mesma éa responsável por determinar quando o relatório deve ser encerrado. Para que o ReportBuilder entenda que o relatório deve ser encerrado basta que, assim que a aplicação recebera mensagem SAM_ReportFetchNext, um valor FALSE seja retornado para o relatório.

 Neste momento o Report Builder se encarrega de imprimir o rodapé da página e, caso sejadefinido, a página final de resumo do relatório. Assim que o Report Builder termina essetrabalho a mensagem SAM_ReportFinish é enviada à aplicação.

Este é todo o ciclo de comunicação entre a aplicação e o Report Builder necessário paraimprimir qualquer tipo de relatório.

Existe uma alternativa muito prática e que pode ser utilizada na grande maioria dosrelatórios necessitados pelas empresas. Consiste em carregar numa child table windowtodos os dados a serem enviados para o Report Builder, na ordem de classificação em quedevem ser impressos. Simplesmente fazendo-se uma chamada à função

SalReportTablePrint() ou SalReportTableView() o processo de enviar os dados para oReport Builder é feito de forma automática, sem que seja necessário interceptar asmensagens SAM_ReportStart, SAM_ReportFetchInit, SAM_ReportFetchNext eSAM_ReportFinish na aplicação. Esta é uma forma muito utilizada pois a mensagemSAM_ReportNotify continua a ser recebida pela aplicação, permitindo as "customizações"que forem necessárias.

O Report Builder

Apresentaremos agora o Report Builder, a ferramenta onde os layouts são definidos, paraem seguida mostrar alguns exemplos de como enviar dados e receber informações doReport Builder.

O Report Builder pode ser ativado a partir do ambiente do SQLWindows, onde a aplicaçãoé codificada. Através do menu Tools | Report Builder você tem acesso ao Report Builder.

A interface padrão do Report Builder é mostrada na figura abaixo:

Page 245: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 245/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Assim como o ambiente de desenvolvimento de aplicações SQLWindows, o ReportBuilder também possui os quadros esquerdo e direito, de forma a melhor organizar asinformações e facilitar a definição do layout do relatório.

 No quadro esquerdo estão as definições dos itens, das variáveis, fórmulas, totais e dasquebras de grupos. Basta acionar o menu de contexto clicando com o botão direito domouse para ter acesso às telas de configurações de cada item, permitindo que itens sejamincluídos, alterados e excluídos rapidamente.

 No quadro direito está localizado o layout propriamente dito. Onde devem ser colocados ositens a serem impressos. Existem áreas distintas para que seja configurado o conteúdo doReport Header, Page Header, Detail Block, Page Footer e Report Footer. Cada uma dessasáreas, quando expandidas, podem possuir diversas linhas onde os itens a serem impressossão colocados. Todas as configurações quanto a posição, formatação de fonte, cores emelhoramento de fonte deve ser definida neste momento pois o relatório será impressoconforme as definições feitas neste local.

A figura abaixo ilustra o item chamado PHONE, que está posicionado no Detail Block,

Page 246: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 246/580

Programando com o Centura Team Developer 2000

Página PAGE 582

tendo sua fonte configurada através do combo box situado na barra de ferramentas doReport Builder.

Caso seja necessário realizar configurações mais profundas num determinado item, bastaativar o menu de contexto do objeto clicando sobre ele com o botão direito do mouse eacionando o menu item Properties. Isso fará com que uma janela de configurações das

 propriedades do item selecionado seja mostrada e diversas configurações possam serrealizadas numa única janela. Conforme ilustrado na figura abaixo:

A janela com as propriedades do objeto escolhido.

Você pode mover os itens situados na árvore localizada no quadro esquerdo diretamente para a posição desejada no layout, desta forma a confecção do seu layout de impressão é bastante agilizada.

Observe que no momento em que você adiciona um Break Group, dois novos itens sãoadicionados na estrutura das seções no quadro direito, uma chamada Header do grupo e

Page 247: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 247/580

Programando com o Centura Team Developer 2000

Página PAGE 582

outra Footer. Através dessa estrutura toda a implementação aos grupos de quebra e seusrespectivos sub-totais é habilitada.

As fórmulas

Você pode inserir fórmulas em qualquer local do relatório, no quadro esquerdo você definea fórmula e posteriormente a arrasta posicionando-a no quadro direito. Opcionalmentevocê pode inserir um objeto do tipo campo (Field) e clicar no botão chamado Editor,localizado na barra de ferramentas do Report Builder.

Selecione o objeto Field, posicione o objeto no layout e clique no botão Editor.

Dessa forma você terá acesso à janela do Editor de Formulas do Report Builder, ondefórmulas complexas podem ser definidas mesclando-se os itens de dados definidos e asfunções nativas do Report Builder.

O Editor de Fórmulas do Report Builder.

Consulte o Apêndice D - Guia das Funções do Report Builder para obter informaçõesdetalhadas do funcionamento de cada uma das funções disponíveis no Report Builder,além de seus parâmetros, valores de retorno e descrição.

Montando um relatório rapidamente

O Report builder presente no Centura Team Developer 2000 provê um meio extremamente

rápido para a definição de layouts com nível médio de complexidade. Relatórios

Page 248: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 248/580

Programando com o Centura Team Developer 2000

Página PAGE 582

complexos exigem esforço manual do desenvolvedor, que precisará criar cada item noquadro esquerdo e posicioná-lo no seu devido lugar no quadro direito.

Mostraremos agora como o Report Builder pode nos ajudar na montagem de um layoutsimples de relatório. No exemplo abaixo ilustraremos um relatório simples para que você

entenda o conceito e a forma de operação do Report Builder.

Assim que o Report Builder é iniciado a impressão que se tem é de que o relatório é todo branco e vazio. Isso acontece pois o Report Builder inicia em modo Preview de um layoutrealmente vazio. Precisamos definir a query que servirá de fonte de dados para o relatório.

1 Clique no botão Define Query para que a caixa de diálogo chamada Define Queryapareça.

2 Nesta caixa de diálogo você deve informar, utilizando o mouse, o fornecedor do seu banco de dados, o nome, efetuar o login, escolher as tabelas e as colunas desejadas.

É bem provável que esta interface visual o faça lembrar dos Quick Objects vistosanteriormente nos capítulos iniciais deste livro.

3 Conforme a figura anterior, você pode escolher algumas colunas de uma ou mais

Page 249: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 249/580

Programando com o Centura Team Developer 2000

Página PAGE 582

tabelas, montar as condições, a classificação e outros atributos da query que servirá defonte dos dados para o relatório.

É importante lembrar que a query só fica armazenada no arquivo de layout caso este sejasalvo com extensão .CQT. O padrão para utilizarmos posteriormente numa aplicação

SQLWindows é o formato .QRP. Portanto tome cuidado para não fazer confusão comestes formatos.

Arquivos do tipo CQT devem ser utilizados apenas pelo usuário final, no caso desteusuário ter acesso a um banco de dados para poder definir seus próprios layouts eimprimir seus próprios relatórios de forma automática no Report Builder.

Após a definição da fonte de dado do relatório o Report Builder monta um modelo padrão de layout de relatório que pode ser perfeitamente personalizado.

5 O layout pode ser personalizado conforme as necessidades da aplicação e posteriormente salvo com extensão QRP, para que possamos utilizá-lo noSQLWindows.

A geração do arquivo QRP

Após ter configurado todo o layout do seu relatório você deve exportá-lo para o formatoQRP. Faça isso através do botão da barra de ferramentas chamado Export Template.

Exporte o seu layout para o formato QRP.

O layout pode continuar existindo e você deve salvá-lo como .CQT pois provavelmenteserá necessário futuramente inserir ou excluir colunas no layout do relatório. Com o

Page 250: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 250/580

Programando com o Centura Team Developer 2000

Página PAGE 582

arquivo salvo em formato .CQT você poderá sempre que desejar gerar arquivos QRP, bastando para isso exportá-los.

Imprimindo a partir do SQLWindows

Uma vez definido o layout no Report Builder o próximo passo para que a aplicação deimpressão de relatórios seja concluída é codificar o programa em SQLWindows paraenviar os dados para o relatório. Mostraremos como fazer isso abaixo:

1 Construímos uma aplicação onde um pushbutton ativará a impressão do relatório.

2 Ilustraremos como ativar uma janela com a visualização do relatório em tela.

Adicione ao pushbutton o seguinte código:

Pushbutton: pbIMPRIME_EMPRESASMessage Actions

On SAM_ClickCall SalReportView( hWndForm, hWndNULL, sQRP, sINPUTS, sBINDS, nErro) 

Consulte o Apêndice A - Guia de referência das Funções SAL para obter detalhes dofuncionamento da função SalReportView(), assim como seus parâmetros.

Lembre-se de definir as variáveis que estão sendo utilizadas na seção Variables doform window.

3 Iniciando a conexão com o banco de dados e configurando variáveis iniciais daaplicação.

On SAM_ReportStartSet SqlDatabase = "ISLAND"Set sSQL = "

SELECT COMPANY_ID , COMPANY_NAMEINTO :sCodigo , :sNomeFROM COMPANYORDER BY 1"

Call SqlConnect( hSql )

4 Quando o Report Builder avisar que foi inicializado corretamente execute o comandoSQL que irá recuperar as informações do banco de dados a serem impressas.

On SAM_ReportFetchInit

Page 251: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 251/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Return SqlPrepareAndExecute ( hSql, sSQL ) 

5 Envie cada linha recuperada para o relatório

On SAM_ReportFetchNextReturn SqlFetchNext ( hSql ) 

6 A linha de código abaixo ilustra o envio de uma data armazenada no data fielddfData_Emissao para ser impressa no Page Header do relatório. Observe que no layoutdo relatório deve existir uma variável definida do mesmo tipo de dado do data fieldutilizado.

On SAM_ReportNotifyIf lParam = RPT_BeforePageHeader

Call SalReportSetDateTimeVar( hRelatorio, "dtDATA", dfData_Emissao ) 

7 Fim do relatório. Sempre desconecte sua aplicação do banco de dados.

On SAM_ReportFinishCall SqlDisconnect( hSql ) 

É importante observar os tipos de dados envolvidos nas variáveis utilizadas. Isso podeeconomizar um tempo considerável no desenvolvimento da aplicação, pois o ReportBuilder não permite a troca de informações através de variáveis/objetos com tipos de dadosdiferentes.

Procuramos mostrar neste capítulo uma introdução quanto a utilização do Report Builder eimpressão de relatório a partir do SQLWindows. Este assunto merece um estudo mais

aprofundado que aguardamos ter oportunidade de estudar em outra ocasião.

Page 252: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 252/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 253: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 253/580

Page 254: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 254/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apresentação

Uma vez pronta a sua aplicação, é necessário gerar o módulo que será distribuído aos seus usuários. NoSQLWindows/32 essa distribuição pode ser feita de diversas maneiras.

Dynalibs

Uma dynalib é um módulo compilado com funções e objetos que são utilizados dinamicamente por outrasaplicações em tempo de execução, é um tipo de arquivo intermediário entre uma APL e uma DLL. Assimcomo uma APL, é possível incluí-la numa na seção Libraries do outline da aplicação e utilizar seus recursos.A diferença entre dynalibs em bibliotecas *.APL é que a dynalib não compartilha código, mas sim asinterfaces aos recursos como forms, table windows, funções e variáveis. Assim como uma DLL, o seuconteúdo só é carregado para a memória quando o aplicativo solicitar algum recurso que pertence a umadeterminada dynalib, isto já em tempo de execução. A principal diferença entre uma dynalib e uma DLL éque a dynalib é gerada diretamente a partir de um programa escrito em SQLWindows/32.

 Nem todos os recursos disponíveis numa aplicação SQLWindows/32 podem ser compartilhados. Observeabaixo, o que pode ser compartilhado numa dynalib:

  As funções globais  As variáveis nativas globais  Objetos top level e suas funções  Objetos MDI, suas funções e seus objetos child.

As vantagens na utilização de dynalibs são :

  Desenvolvimento modularVocê pode separar sua aplicação em módulos distintos (dynalibs), onde cada módulodedica-se a realizar uma determinada tarefa.

  Economia de recursosVocê precisará de menos espaço para distribuir suas aplicações.

  Atualização modularÉ possível recompilar uma biblioteca depois que uma aplicação já encontra-se em

 produção, sem recompilar a aplicação em si.

  Segurança de código fonteÉ possível a distribuição de bibliotecas escritas em SAL sem que o código fonte sejarevelado.

  Compilação rápidaAs dynalibs não são compiladas a cada vez que a aplicação é, isso reduz drasticamenteo tempo de abertura dos programas e também da compilação.

iInformação:

 No desenvolvimento de grandes aplicativos, é provável que alguns limitesinternos do SQLWindows/32 sejam atingidos. Por exemplo a tabela desímbolos, o espaço para as strings, o número de objetos entre outros. Cadadynalib possui seus próprios recursos e são independentes do restante daaplicação. Isso pode ajudar a evitar alguns limites impostos pelo

SQLWindows/32.

Page 255: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 255/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Limitações

Os recursos mostrados abaixo, não podem ser exportados através da utilização de dynalib:

  Constantes, classes e declarações de funções externas.

Coloque esses elementos num arquivo *.APL e inclua esse arquivo tanto na dynalibquanto na aplicação.

  Funções e variáveis herdados.Crie e compartilhe funções servindo de interface para acessar as variáveis ou chamar asfunções herdadas.

  Objetos situados no interior da seção Contents. Não é possível compartilhar apenas child objects.

Implementando Dynalib

Para a geração de uma dynalib o primeiro passo é identificar quais os itens que serãoexportados, identificá-los e compilar a biblioteca ativando a geração da dynalib.

Observe a definição da constante e a declaração da função interna fObtem_DynalibVersao() que irá recuperar o valor da constante Dynalib_Versao. Observe também que após onome da função está a palavra chave “! __exported”, que serve para que o

SQLWindows/32 entenda quais elementos serão exportados na geração da dynalib.

Após indicar quais elementos da aplicação serão compartilhados você precisa compilar adynalib para que possa utilizar em outras aplicações. Ative o menu Project | BuildSettings...  para ter acesso à janela Build Settings, onde é feita a configuração do

SQLWindows/32 para que seja gerada a dynalib.

Page 256: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 256/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Certifique-se de que o radio button Dynalib está marcado.

Clique no botão OK para prosseguir.

Para criar a dynalib acione o menu Project | Build: exDynalib.apd, quando a janelachamada Build Information aparecer, clique no botão OK.

iInformação:Dynalib provê ao desenvolvedor a possibilidade de criação de componentes,modularizando a aplicação. Com as dynalibs o desenvolvedor pode, passo-a-

 passo, enviar ao cliente partes novas da aplicação que foi comprada ouenviada para demonstração, sem que seja necessário enviar uma versãocompleta para o cliente.

Utilizando a dynalib

Observe na figura abaixo que a dynalib exDynalib.apd foi incluída na aplicação e que afunção fObtem_DynalibVersao ( ) aparece no outline da aplicação. O código fonte dafunção não é visualizado. Assim como o programador não faz a menor idéia de que aconstante Dynalib_Versao existe.

Page 257: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 257/580

Programando com o Centura Team Developer 2000

Página PAGE 582

iImportante:

 Normalmente as dynalibs continuam compatíveis mesmo após umaatualização do Centura Team Developer, fique atento ao arquivo release notesque acompanha cada nova versão, neste arquivo é informado se existe anecessidade de recompilar as dynalibs. Isso só deve ocorrer quando as versõesforem “binariamente incompatíveis”. 

Executáveis

A geração do executável de uma aplicação SQLWindows/32 é extremamente simples, basta acionar o menu Project | Build. Lembre-se que a aplicação precisar estar livre deerros de compilação.

Através da caixa de diálogo Build Settings pode ser configurado a geração do executável,seu path e o ícone da aplicação.

Page 258: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 258/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O executável gerado pelo SQLWindows/32 não é independente, ou seja, o executávelsozinho não é o suficiente para que a aplicação seja executada corretamente pelo usuário.Alguns cuidados devem ser tomados :

   Normalmente, todo o conteúdo do diretório “Centura\Deploy” é necessário para que o

executável funcione corretamente. Neste diretório estão as bibliotecas do Centura,drivers dos bancos de dados e o módulo run-time do Centura SQLWindows/32 e doReport Builder. Este diretório deve estar no path da máquina que for utilizar oaplicativo. Sem este diretório a aplicação não é executada.

  As bibliotecas de terceiros como as DLLs e controles ActiveX, devem estar

devidamente instalados na máquina que irá executar o aplicativo.

  As dynalibs que a aplicação estiver utilizando precisam estar no mesmo diretório doexecutável. Sem as dynalibs, a aplicação executa normalmente até o momento em queum recurso presente na dynalib for requerido. Neste momento a execução da aplicaçãoé interrompida.

  Os demais arquivos utilizados pela aplicação ( ícones, bitmaps, cursores, layouts derelatórios etc ) também devem estar no mesmo diretório onde o executável estálocalizado. Sem estes arquivos, a aplicação executa, mas pode não ser obtido os efeitosesperados.

Page 259: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 259/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Geração de DLLs no Centura SQLWindows/32

A terceira forma de distribuição dos aplicativos em construídos com o SQLWindows/32 éa geração de arquivos dlls, feita através do Object Compiler. A geração de arquivos dllsoferece, não só mais uma opção para a distribuição de aplicações, como também uma

forma de melhorar a performance da aplicação.

O Object Compiler precisa ter sido habilitado na instalação do Centura Team Developer,conforme instruções descritas no Apêndice F - Guia de Instalação do Centura TeamDeveloper 2000.

Para a compilação e geração do arquivo .dll o Object Compiler necessita de um compiladorC, que pode ser o Visual C++ versão 2.0, ou versões mais recentes. Por esse motivo, oObject Compiler necessita que alguns componentes presentes no compilador C estejamhabilitados para que a dll seja gerada com sucesso, esse componentes são:

  utilitário make   compilador C  linker    As bibliotecas  Os arquivos include.

Esses componentes podem ser localizados através do arquivo MSVC.INI localizado nodiretório do Windows, ou através das variáveis de ambiente configuradas no arquivo batchchamado VCVARS32.BAT, que é instalado junto com o Visual C++.

Além desses componentes, o Object Compiler precisa encontrar algumas bibliotecas quesão encontradas nos diretórios CENTURA\LIB e CENTURA\INC.

Itens que podem ser compilados

Existem algumas partes de uma aplicação SQLWindows/32 que, quando compiladas peloObject Compiler, são transformadas em dll. Mas é preciso saber que partes da suaaplicação podem ser compiladas pois, por enquanto, não é possível compilar toda aaplicação SQLWindows/32. Com o Object Compiler a performance da aplicação pode sermelhorada sensivelmente, por isso é necessário saber que partes da aplicação podem obter

 benefícios com a compilação em C.

Podem ser compilados com o Object Compiler os seguintes itens de uma aplicaçãoSQLWindows/32:

  Funções internas  Funções das classes tipo Functional  Funções e mensagens das classes tipo General Window

As limitações do Object Compiler

O Object Compiler não será capaz de gerar a biblioteca dll caso o código fonte possua uma

das seguintes características:

Page 260: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 260/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  Utilização do comando When SqlError  Chamada à função SalCompileAndEvaluate  Chamada à funções que não podem ser compiladas  Chamada à funções externas que possuam ao menos um parâmetro do tipo

structPointer  Chamada à funções Late Bound  Referência qualificada (é permitido apenas chamadas qualificadas à variáveis e funções

da classe base)  Referência a algum objeto.  Referência a variáveis, parâmetros ou funções de algum objeto

iDica :Declare sempre o tipo de dado de retorno da função que você deseja compilar.

Convenções do Object Compiler

Como vimos anteriormente, para indicar que um elemento da sua aplicação será exportadoem uma dynalib utiliza-se por convenção a palavra chave __exported, para a utilização doObject Compiler existem algumas convenções.

iImportante :

 Não coloque um espaço e dois underscores após um sinal de exclamação emseus comentários.

As convenções a serem utilizadas junto ao Object Compiler são demonstradas abaixo:

Para evitar a compilação de determinadas partes do código SAL :

   __native

Podemos informar ao Object Compiler que utilize um determinado tipo de dado paravariáveis numéricas. Utilize uma das seguintes convenções ao lado da declaração davariável:

   __byte   __char   __double

   __float

Page 261: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 261/580

Programando com o Centura Team Developer 2000

Página PAGE 582

   __word   __int   __long   __dword   __number ( o padrão )

iDicas :Utilize os tipos de dados __byte, __char, __word, __int, __long ou __dword

 para contadores e índices de vetores, e os tipos de dados __double e __float para cálculos científicos em notação exponencial.

Utilizando o Object Compiler

Mostraremos agora como utilizar o Object Compiler, ou seja, como gerar dlls com oCentura SQLWindows/32. Lembre-se que a instalação do produto deve ter sido realizadaconforme as instruções descritas no Apêndice F - Guia de Instalação do Centura Team

Developer 2000. Você precisa ter disponível o Visual C++ da Microsoft para que acompilação seja bem sucedida. Nos exemplos mostrados abaixo foi utilizado o MS VisualC++ 5.0.

1 - Inicie uma nova aplicação no SQLWindows/32.

2 - Salve a aplicação com o nome exCap13_01.apl para facilitar futuras referências.

3 - Crie uma função interna utilizando variáveis numéricas, se desejar utilize asconvenções para os tipos dados numéricos, conforme mostrado anteriormente.

Acima é mostrado um exemplo de codificação de uma função interna.

4 - Crie uma classe do tipo functional  e nela defina algumas funções.

Page 262: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 262/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para efeito de demonstração observe acima a definição de uma função da classecFC_01.Lembre-se sempre de especificar o tipo de dado que será retornado pela função.

5 - Crie uma classe tipo general e defina algumas funções e ações.

6 - Compile o aplicativo, para evitar erros de compilação, acionando a tecla F8.Se nenhum erro for encontrado acione o menu Project | Build Settings... para teracesso à janela mostrada abaixo:

Selecione o radio button chamado Include Library ( Using Object Compiler ) e, nocampo Build Target, informe o nome do arquivo a ser gerado. Esse nome, que

normalmente é sugerido pelo SQLWindows/32, deve ter a extensão *.APC,identificando o arquivo como um arquivo compilado pelo Object Compiler.

Page 263: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 263/580

Programando com o Centura Team Developer 2000

Página PAGE 582

7 - O nome da dll que será gerada pode ser configurado na mesma tela, na tab ObjectCompiler.

Se você desejar, pode alterar as configurações que o Object Compiler utilizará paraa geração da dll clicando no botão Settings...Clique no botão OK  para salvar as configurações da geração da biblioteca dll.

8 - Acione o menu Project | Build para ativar a geração da dll. A janela abaixo serámostrada, confirme as informações apresentadas. Caso você queira alterar algumaconfiguração, clique no botão Settings para ter acesso à janela Build Settings. Seestiver tudo correto clique no botão OK  para que a geração da dll tenha início.

9 - A figura abaixo mostra a janela de status do Object Compiler, onde é informado

que a geração da dll foi realizada com sucesso.

Page 264: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 264/580

Programando com o Centura Team Developer 2000

Página PAGE 582

10-

Você pode abrir o arquivo exCap13_01.APC e verificar o que foi feito pelo ObjetcCompiler.

11-

Para utilizar a biblioteca exCap13_01.DLL que foi gerada pelo Object Compilervocê precisa declarar o arquivo exCap13_01.APC na seção Libraries da sua

aplicação.

Resumo

Conforme vimos nesse capítulo, existem três formas que podemos distribuir aplicaçõesfeitas em Centura SQLWindows/32. Você precisa conhecer bem as três formas parautilizar seus recursos de forma correta. Observe algumas sugestões:

  Distribuição através de um executável ( *.EXE )

Utilize o executável para colocar a parte principal do seu aplicativo, a parte queserve apenas ao aplicativo, não sendo compartilhada com outras aplicações. Porexemplo os menus, funções e objetos particulares ao aplicativo.

  Distribuição através de uma dynalib ( *.APD )

Utilize a dynalib para compartilhar janelas top level e funções que devem sercompartilhadas entre diversas aplicações. Por exemplo as janelas genéricas comode login, tabelas e funções genéricas.

  Distribuição através de uma dll ( *.DLL )

Crie suas dlls para distribuir funções otimizadas de alta performance. Como vimosanteriormente as funções internas, funções definidas nas classes tipo funcional egeneral podem ser também compartilhadas através de dlls.

Page 265: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 265/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 266: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 266/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 13Traduzindo aplicações com o Object Nationalizer

Este capítulo apresenta o Object Nationalizer, sua filosofia, benefícios e omodo como você pode utilizá-lo. Essa é uma ferramenta muito importantee útil, pois, a grosso modo, permite que sejam alterados os executáveis edynalibs quanto ao idioma e quanto aos recursos visuais, para que aaplicação se adapte aos usuários.

O Object Nationalizer é uma evolução do Edit Windows utilizado noSQLWindows/16. Portanto, é muito importante que você conheça

 perfeitamente seus recursos.

Para utilizar o Object Nationalizer você precisar ter instalado o CenturaTeam Developer conforme descrito no Apêncice F  –  Guia de Instalaçãodo Centura Team Developer 2000.

Page 267: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 267/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Objetivo

Com o Object Nationalizer é possível traduzir as aplicações desenvolvidas emSQLWindows/32, sem modificar o seu código fonte, sendo necessário apenas o arquivoexecutável e, se for o caso, as dynalibs. Você pode também modificar a aparência da

interface do usuário, dispensando alteração no código fonte.

Por exemplo, após a tradução, o tamanho de um componente pode não ser adequado paracomportar o texto traduzido. As dimensões dos componentes da aplicação podem seralteradas para se adaptarem às traduções feitas.

O que pode ser traduzido ?

Um executável Centura SQLWindows/32 não contém apenas a lógica da aplicação, delefazem parte alguns atributos conhecidos por recursos ( resources ). Esses atributos são de

natureza estética, modificá-los não acarretará em mudança na lógica da aplicação. São as propriedades dos objetos visuais. Propriedades que afetam diretamente a aparência doobjeto.

O Object Nationalizer pode ser utilizado para extrair, visualizar e editar esses recursosdiretamente dos arquivos executáveis e das Dynalibs. Através do Object Nationalizer não é

 possível realizar qualquer alteração na lógica da aplicação, ou acessar o seu Outline.

Por exemplo, a especificação do tipo da fonte utilizada num data field afeta apenas aaparência do mesmo, não afeta a sua lógica. A cor da fonte e o seu tamanho, os títulos dos

 pushbuttons, os background text são outros exemplos de atributos que não interferem nofuncionamento do objeto. Esses atributos são os recursos possíveis de serem alterados peloObject Nationalizer.

O funcionamento do Object Nationalizer

Existem duas figuras importantes que precisam ser bem compreendidas no trabalho com oObject Nationalizer, são elas:

O Programador é quem codifica a aplicação em SQLWindows/32 e gera o executável da

aplicação ou a Dynalib a ser utilizada por outras aplicações. A aplicação é feita de maneiranormal, sem a preocupação do idioma a ser utilizado.

O Tradutor é quem, utilizando o Object Nationalizer, e possuindo uma cópia do arquivogerado pelo programador, edita os recursos da aplicação realizando as devidas traduções eajustes de layout de tela que se fizerem necessários. Quando encerrar o trabalho, o tradutor

 pode salvar as alterações no próprio executável/dynalib, num arquivo texto padrão ou numarquivo binário especial para o armazenamento dos recursos ( *.apr ).

 Naturalmente que essas duas pessoas podem ser a mesma, dependendo do modo como aempresa decidir realizar o trabalho de tradução da aplicação. Mas é importante que fique

claro que o programador não precisa conhecer todos os idiomas em que a aplicação será

Page 268: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 268/580

Programando com o Centura Team Developer 2000

Página PAGE 582

utilizada. Assim como o tradutor não precisa conhecer nada de programaçãoSQLWindows/32.

Obs :

Para que o tradutor tenha acesso aos recursos de um arquivo executável ou de uma dynalib,o programador precisa marcar o check box  Enable Resource Editing , na caixa de diálogoBuild Settings, quando for gerar o executável ou a dynalib.

Atualizações das versões do seu aplicativo

É interessante salvar a tradução num arquivo de recursos ( *.apr ), para que possa serreutilizada quando estiver disponível uma nova versão da aplicação. Por exemplo, suponhaque a tradução da versão 1.0 de uma aplicação foi realizada para diversos idiomas

diferentes, e cada idioma foi salvo num arquivo de recursos separado. Posteriormente,quando a versão 2.0 da mesma aplicação for disponibilizada, a tradução não precisará serfeita novamente desde o início para cada um dos idiomas. Basta aplicar o arquivo derecursos, salvo anteriormente junto a nova versão do aplicativo, para cada idioma. Isso farácom que todos os recursos presentes na versão1.0, e que ainda existam na versão 2.0,sejam automaticamente traduzidos, restando, então, traduzir apenas os novos itens doaplicativo, incorporados com a nova versão.

Todos os recursos que ainda existirem na nova versão do aplicativo já estarão traduzidosquando o arquivo de recursos for aplicado, sendo necessário apenas traduzir os novosrecursos.

Uma vez feita essa tradução adicional, o arquivo de recursos é então atualizado para queseja utilizado novamente junto a próxima atualização do aplicativo.

Aplicando as traduções em tempo de execução

Os arquivos de recursos podem também ser aplicados ao executável ou dynalib enquanto aaplicação é executada, ou seja, em tempo de execução.

Conforme o exemplo citado acima, foram salvos diversos arquivos de recursos, cada umcontendo as traduções para um determinado idioma. Em tempo de execução, a aplicaçãodecide qual arquivo de recursos deve ser aplicado ao arquivo executável ou dynalib.

Seu programa de instalação pode instalar uma única versão do aplicativo, com os diversosidiomas que, porventura, o usuário tenha escolhido no momento da instalação.

Quando o aplicativo for iniciado, ele decide o idioma a ser utilizado e aplica o arquivo derecursos. Essa decisão pode ser feita tomando-se por base o idioma configurado noWindows, ou até mesmo com a interação do usuário.

Para que o próprio aplicativo decida o idioma a ser aplicado, dois procedimentos devemser tomados:

Page 269: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 269/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  o tradutor precisa salvar as traduções em arquivos recursos, um para cada idiomadiferente, sem aplicá-lo ao executável.

  o programador precisa, via programação, detectar o idioma correto e aplicar o arquivode recursos adequado junto ao aplicativo.

Para aplicar o arquivo de recursos em tempo de execução junto ao aplicativo, o programador deve utilizar a função SalResourceSet, na seção do outline chamada OnSAM_AppStartup.

A sintaxe da função é a seguinte:

bOk = SalResourceSet ( sArquivoDeRecursos , nReservado )

Onde :sArquivoDeRecursos   é o nome do arquivo de recursos que será lido e aplicado peloSQLWindows/32. Esse arquivo foi salvo pelo tradutor com as especificações de um

determinado idioma.nReservado é um parâmetro que ainda não possui utilização, está sendo reservado parauso futuro. Utilize zero nesse parâmetro.bOk  é TRUE se a função for executada com sucesso e FALSE se algum erro ocorrer.

Quando a função SalResourceSet é executada com sucesso, um arquivo de recursos éaplicado ao executável ou dynalib e armazenado na memória. Os arquivos ( .exe e .apd )armazenados no disco, e que estão sendo executados, não são modificados.

Observe abaixo um exemplo de código que o programador pode escrever para que aaplicação decida em tempo de execução o idioma a ser utilizado.

Page 270: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 270/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você pode distribuir um único executável, para uma determinada linguagem, e diversosarquivos de recursos, um para cada idioma. Pode ainda distribuir os executáveis de acordocom o idioma correto.

Atenção:É importante ter sempre em mente que, quando uma aplicação está sendo executada pelo

 programador, através do Centura SQLWindows/32, e utilizando a função SalResourceSet,os recursos da aplicação, que no momento estão na memória, são atualizados conforme oidioma especificado no arquivo de recursos. Se a aplicação for salva, os recursos lidos se

sobrepõem aos recursos originais, modificando a sua aplicação.

Page 271: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 271/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Utilizando o Object Nationalizer

Para utilizar o Object Nationalizer, você precisar ter instalado o Centura Team Developer,conforme descrito no Apêndice F  –   Guia de Instalação do Centura Team Developer2000. 

O Object Nationalizer é extremamente fácil de ser utilizado, possuindo interface similar aoambiente de programação do SQLWindows/32.

Você pode iniciar o Object Nationalizer clicando no botão Iniciar  do seu Windows, eselecionando os menus Programas | Centura | Team Developer 2000 | ObjectNationalizer 2000.

Para abrir um arquivo executável, dynalib ou um arquivo de recursos no Object Nationalizer, selecione os menus File | Open e escolha o arquivo desejado.

Lembre-se que, na geração do arquivo executável ou dynalib, o programador precisahabilitar o recurso na caixa de diálogo  Build Settings, que permite ao Object Nationalizereditar seus recursos. Caso isso não tenha sido feito, o Object Nationalizer não poderá abriro arquivo e uma mensagem de erro será mostrada.

Configurando a geração do executável para habilitar a edição do executável pelo

Object Nationalizer.

Você pode editar os recursos da aplicação de duas formas: traduzindo o texto da aplicaçãodiretamente ou modificando os recursos graficamente. Mostraremos abaixo como utilizaras duas formas.

Traduzindo o texto da aplicação

O Object Nationalizer dispõe de um editor que você pode utilizar para editar os elementosda sua aplicação. Dessa forma, o restante da aplicação permanece inalterado. O editor

Page 272: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 272/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 permite que rapidamente você realize as edições dos textos da aplicação traduzindo-os parao idioma desejado.

O Editor do Object Nationalizer

1.  Selecione o item  Application Text   no quadro esquerdo da janela do Object Nationalizer.

2.  Selecione um item na coluna Translated Text, que é mostrada na metade de baixo doquadro direito da janela do Object Nationalizer. Fazendo isso, o mesmo texto éautomaticamente colocado no quadro chamado Translated Text, que é mostrado nametade superior do quadro direito.

A lista de itens da coluna Translated Text é mostrada em ordem alfabética ascendente, pelo texto traduzido. Você pode alterar essa classificação clicando no título da coluna,a qual você deseja que seja classificada. Por exemplo, se você clicar uma vez na coluna

Identifier, o Object Nationalizer classifica os textos mostrados, classificados por objetoda aplicação. Se você clicar no nome da coluna Type, os textos serão classificados pelotipo do objeto. Experimente as diversas possibilidades, ou, para encontrar um itemespecífico, selecione os menus Edit | Find.

3.  Você pode clicar tanto na coluna Translated Text como no quadro chamado TranslatedText para realizar a tradução do texto.

4.  Repita os procedimentos descritos nos itens 2 e 3 até terminar de traduzir toda aaplicação.

Observe a figura abaixo onde o texto foi traduzido. Neste caso, "Incluir Imagens" foitraduzido para "Add Images", em inglês. O texto traduzido aparece no quadro e na colunachamados Translated Text, enquanto que o texto original aparece no quadro Original Text.

Page 273: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 273/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A tradução de um texto através do Editor do Object Nationalizer

Para realizar a mesma tradução várias vezes, você pode selecionar os menus Edit |Replace, informar o texto original no campo Find What e sua tradução no campo ChangeTo. Clique no botão Find Next  para localizar a próxima ocorrência do texto original,

clique em Change  para traduzi-la. Para traduzir todas as ocorrências do texto originalnuma única operação, clique em Change All e não em Change.

Atenção:Após clicar em Change All, você não poderá desfazer as modificações aplicadas por essaação. Portanto, se você não tiver certeza de que deseja realmente modificar todos osvalores, fique alternando entre os botões Change e Find Next, para controlar as operaçõesde mudança uma de cada vez.

Traduzindo recursos graficamente

Você pode utilizar o Object Nationalizer para visualizar e modificar uma aplicaçãograficamente. Visualizando o objeto da sua aplicação você pode traduzir o texto visível ealterar seus atributos visualmente, como faz no SQLWindows/32.

Para modificar os recursos da aplicação graficamente, selecione o objeto top level noquadro esquerdo do Object Nationalizer e clique na Tab chamada  Layout  ( localizada na

 parte inferior do quadro direito ).

O objeto é mostrado no quadro direito e você pode acionar o customizer ( ou attributeinspector ) do objeto para alterar seus atributos, da mesma forma que você faz noSQLWindows/32.

Obs :Para escolher entre o customizer e o attribute inspector, selecione os menus Tools |Preferences para acessar a janela Preferences, onde você pode configurar também a gradeutilizada na janela layout.

Observe a figura abaixo onde o texto do pushbutton foi traduzido. Neste caso, "Cancelar"foi traduzido para "Cancel", em inglês. A tradução é feita utilizando-se o customizer, damesma forma que você edita as propriedades do objeto no SQLWindows/32.

Page 274: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 274/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A tradução do título de um pushbutton através do attribute inspector.

Quando você traduz o texto, o mesmo pode ficar com um tamanho maior do que odisponibilizado anteriormente. A qualquer momento você pode também redimensionar osobjetos, exatamente da mesma maneira que faz no SQLWindows/32.

Assim que terminar sua tradução, você deve salvar seu trabalho de uma das seguintesformas:

  Atualizando o arquivo original.Selecione os menus File | Save.

  Criando um novo arquivo contendo as edições realizadas.Selecione os menus File | Save As... e selecione no combo box "Salvar como tipo" o tipodo arquivo apropriado ao seu caso, que pode ser um executável ( .exe ) ou dynalib ( .apd ).

  Salvando as modificações num arquivo de recursos.Selecione os menus File | Save As... e selecione no combo box "Salvar como tipo" o tipodo arquivo binário ( .apr ) ou texto padrão ( .txt ).

Lembre-se que o arquivo salvo contém as traduções feitas para apenas um idioma.

Você pode utilizar os dois métodos apresentados para traduzir sua aplicação. Traduzindograficamente sua aplicação, você poderá também alterar as dimensões e posições dosobjetos. Quando for necessário realizar traduções em massa, utilize o Editor do Object

 Nationalizer para realizar mais rapidamente essa tarefa.

Page 275: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 275/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Conforme se pode observar nos exemplos mostrados até então, apenas objetos visuaisforam traduzidos. Você precisará utilizar o Editor do Object Nationalizer para traduzir asconstantes string da aplicação. Esses elementos não podem ser traduzidos graficamente,

 pois não são elementos visuais como pushbuttons.

Atenção:Através do Object Nationalizer você só pode traduzir as constantes definidas no outline, naseção Constants | User. As constantes presentes na seção Constants | System não podemser traduzidas.

Page 276: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 276/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 277: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 277/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 14Gerenciamento de equipes com o Team ObjectManager

Com o Team Object Manager as equipes de desenvolvimento possuem em suas mãos um poderos mecanismo de Controle de Versão e Gerenciamento de Equipes dedesenvolvimento dos diversos projetos. Este capítulo procura ilustrar os pontos principaisda utilização do Team Object Manager para que o desenvolvedor que está iniciando autilização da ferramenta tenha uma idéia exata do propósito da ferramenta. Não

 procuraremos nos aprofundar no estudo do Team Object Manager neste momento, mas simapresentar uma visão geral da ferramenta.

Page 278: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 278/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apresentação

O Centura Team Developer possui uma poderosa ferramenta para o gerenciamento de projetos e de equipes de desenvolvimento. O Team Object Manager gerencia os projetos etudo o que está envolvido nesse processo; projetos, aplicações, bibliotecas, imagens,

relatórios, documentos, equipes, faz controle de versão e muitas outras atividades típicasde um sistema de gerenciamento de projetos.

Antes de utilizar o Team Object Manager você precisa criar o repositório onde asinformações sobre os projetos ficarão armazenadas. Você deve acionar o Repository SetupWizard para realizar essa tarefa.

Toda a operação do Team Object Manager ( TOM ) é baseada num, repositório onde estãolocalizadas todas as informações. Este repositório é uma base de dados padrão SQL que

 pode funcionar num servidor de rede ou numa máquina stand-alone. O TOM suporta os bancos de dados Centura SQLBase, Informix, MS-SQLServer e Oracle.

 Na figura abaixo pode ser observada a interface inicial do TOM.

TOM. Visão inicial do projeto Starter.

As Equipes

Para que o TOM gerencie a equipe de desenvolvimento é necessário primeiramentecadastrar a equipe toda. Cada usuário recebe um nome código, uma senha e seus

 privilégios que servem de classificação da hierarquia dos membros da equipe. Os possíveis privilégios são Gerente de projetos, Manutenção dos membros do projeto, Modificar os

Page 279: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 279/580

Page 280: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 280/580

Programando com o Centura Team Developer 2000

Página PAGE 582

É neste momento que uma das decisões mais importantes da criação do projeto deve sertomada ; O tipo de armazenamento dos componentes do projeto. O TOM pode armazenartudo referente ao projeto num repositório (num banco de dados SQL). Mas pode tambémarmazenar no repositório apenas os ponteiros e informações sobre a equipe e sobre os

 projetos, colocando o grande volume de dados num diretório configurado nesta tela. Nestediretório ficam todos os programas fontes, imagens, relatórios, ou seja todos os itens do projeto. Essa é uma informação extremamente importante que deve ser decidida nestemomento.

Janela onde são cadastradas as informações sobre o projeto.

O próximo passo é incluir no projeto os seus componentes. Para isso o TOM oferece umainterface bastante amigável para o armazenamento e organização dos componentes. Isso

 pode ser visualizado na figura abaixo, onde facilmente é possível observar que o programa

“app_curso.app” está sendo utilizado pelo usuário “LAIRTON”. Este é o ponto maisimportante da utilização do TOM a ser assimilado neste momento. O mecanismo deCheck-In e Check-Out.

Check-in / Check-out

Estando uma aplicação guardada no repositório do TOM, cada vez que um desenvolvedor precisa realizar alguma manutenção nesta aplicação ele retira do TOM a cópia mais recenteda aplicação requerida. Esta operação é registrada pelo TOM e todas as informaçõesreferentes a esta tarefa ficam no TOM armazenadas. Basicamente são : O nome dodesenvolvedor que extraiu um determinado módulo do projeto para um diretório. Fica

armazenado o nome do desenvolvedor, o componente, o diretório (para o qual o

Page 281: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 281/580

Programando com o Centura Team Developer 2000

Página PAGE 582

componente foi extraído) e a data e hora da operação. A esta operação dá-se o nome deCheck-Out, pois um integrante da equipe extraiu um componente do projeto, paramanutenção.

Obs:

Estando um programa em Check-Out, não é possível que nenhum outro desenvolvedorrealize Check-Out novamente. A menos que esta operação esteja habilitada no TOM e queos integrantes da equipe tenham consciência dos danos que esse tipo de comportamento

 pode causar se utilizado de forma incorreta.

Check-In é a operação oposta ao Check-Out. Ocorre quando o desenvolvedor encerrousuas alterações no componente e está então devolvendo ao repositório o aplicativodevidamente atualizado. Apenas o desenvolvedor que solicitou o Check-Out pode realizaro Chek-In do módulo.

Em determinadas ocasiões o programa em Check-Out pode não ter sido modificado. Nestecaso a operação correta não é o Check-In, mas sim o Unlock.

Page 282: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 282/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Relatórios Gerenciais

O TOM possui também uma série de relatórios que podem e devem ser utilizados para ummelhor gerenciamento dos projetos.

Este recurso e muitos outros que compõem o TOM devem ser analisados atentamente edelicadamente pelos desenvolvedores quando houver oportunidade. 

Page 283: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 283/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 284: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 284/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 15Desenvolvimento de componentes COM no SQLWindows

Este capítulo mostra como desenvolver componentes COM e COM+ que rodam noMTS ( Microsoft Transaction Server). Com estes componentes você poderádesenvolver aplicações, em SQLWindows, utilizando os conceitos e beneficiando-sedo desenvolvimento de aplicações em três ou mais camadas.

Page 285: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 285/580

Page 286: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 286/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Este capítulo mostra como construir uma aplicação com o CTD2000, que será instalada no ComponentServices.

A construção dos componentes

Basicamente construiremos dois componentes neste capítulo, os quais ilustram o desenvolvimento de uma

aplicação em três camadas.

Objeto-dado

A primeira camada chamaremos de objeto-dado. Nela devem estar localizados todos os comandos querealizam algum tipo de acesso aos dados. Essa é a única parte da aplicação que pode ter acesso ao banco dedados, as demais partes devem trabalhar de forma a serem completamente independentes do banco de dados.

Outra regra importante a ser lembrada é que os objetos-dados jamais devem entrar em algum estado deespera de alguma operação em tela, vinda do usuário. Um objeto-dado deve liberar o banco de dados o maisrápido possível, após realizar sua tarefa.

O único local da sua aplicação que deverá conter comandos SQL é justamente no objeto-dado.

 No nosso exemplo construiremos um objeto-dado que fará uma inclusão numa tabela do banco de dados. Issoé extremamente simples, propositalmente, pois, ao invés de desviar sua atenção para diversos comandosSQL, mantemos nosso foco na geração do componente COM. É bem provável que você jamais tenha umaaplicação dispondo de apenas uma operação de inclusão, porém, a arquitetura do COM ficará bem clara nesteexemplo de fácil entendimento.

Objeto-negócio

A camada intermediária, ou a segunda camada, chamaremos de objeto-negócio, pois é nela que se concentratoda a lógica e inteligência da aplicação. Nessa camada não deve, jamais, existir comandos SQL. Devefuncionar de forma independente do banco de dados. Um objeto-negócio pode fazer uso de outros objetos-negócio e de objetos-dado. O acesso aos dados deve ser sempre realizado por meio do objeto-dado.

Assim como o objeto-dado, o objeto-negócio jamais deve entrar em estado de espera por alguma ação vindada tela, nunca deve esperar pelo usuário. Um objeto-negócio deve instanciar um objeto-dado, utilizá-lo eliberá-lo logo em seguida.

 No exemplo deste capítulo, construiremos um objeto-negócio que instanciará o objeto-dado para fazer umainclusão numa tabela do banco de dados.

A estrutura básica do objeto-negócio

Começaremos ilustrando a criação do objeto-negócio, siga as instruções descritas abaixo:

1 Inicie uma nova aplicação no SQLWindows.

2 Ative a janela de assistentes chamada Wizards, pressionando Ctrl+W.

Page 287: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 287/580

Programando com o Centura Team Developer 2000

Página PAGE 582

3 Na janela Wizards, selecione o assistente de criação de classes COM, conforme mostrado na figura

acima.

O assistente de Classes COM irá guiá-lo no processo de definição de Interfaces, de CoClasses e deCoClasses feitas para rodar no MTS.

4 Escolha o check box central, conforme ilustrado na figura abaixo.

 Na figura acima você informa ao Assistente de Classes COM que a classe a ser gerada deverá serexecutada no MTS.

5 Na próxima janela do Assistente de Classes COM você precisa digitar o nome da classe a ser gerada e onome da interface.

Informe CEmpresa para o nome da classe e ICEmpresa como o nome da interface.

Page 288: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 288/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Se você selecionar o check box chamado Support IObjectControl, uma classe IObjectControl serágerada pelo assistente com o nome informado por você no campo ao lado do check box. A classe serágerada com os métodos Activate, CanBePooled e Desactivate.

Para esse exemplo não é necessário marcar essa opção.

6 A figura abaixo ilustra a janela onde você poderá montar a estrutura das interfaces, definindo seusmétodos com parâmetros e tipos de dados de retorno.

Clique no botão Add para adicionar o método chamado Insere que fará a inclusão de uma empresa. Essemétodo terá alguns parâmetros, como mostrado na próxima figura.

7 A figura abaixo ilustra a definição do parâmetro psNome do tipo de dado String.

Page 289: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 289/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para confirmar a inclusão de cada parâmetro clique no botão OK.

Você deve inserir quantos parâmetros forem necessários para a inclusão.

8 Neste exemplo estamos definindo dois parâmetros, psCodigo e psNome, mas você pode definir quantosdesejar. Sempre lembrando que os tipos de dados permitidos são os quatro tipos básicos: Number,Date/Time, String e Boolean.

A janela de configuração dos métodos com o método Insere() devidamente configurado.

9 A tela final do Assistente de Classes COM mostra um resumo do que será construído.

Quando você pressionar o botão Finish, o código fonte referente às definições feitas no Assistente de

Classes COM será gerado, e qualquer alteração que necessite ser feita deve ser realizada no própriooutline do SQLWindows. O Assistente de Classes COM auxilia apenas a criação dos componentes, não

Page 290: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 290/580

Programando com o Centura Team Developer 2000

Página PAGE 582

a sua manutenção.

Clique no botão Finish para que o código fonte seja gerado.

10 O código fonte gerado pelo Assistente de Classes COM é mostrado na figura abaixo.

A estrutura básica do objeto-negócio está concluída. Ainda resta programar as ações do componente, masisso será feito numa outra etapa.

Você deve salvar o seu programa, pois será necessário utilizá-lo posteriormente.

Você pode fazer download dos arquivos fonte presentes no livro diretamente a partir do sitehttp://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo chama-se exCap23_01.apl.

A estrutura básica do objeto-dado

Para criar o objeto dado siga as instruções abaixo:

Page 291: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 291/580

Programando com o Centura Team Developer 2000

Página PAGE 582

1 Inicie uma nova aplicação no SQLWindows.

2 Execute o Assistente de Classes COM a partir da janela de assistentes (Ctrl+W).

3 Da mesma forma feita no objeto-negócio, você deve escolher o tipo de classe chamada MTS CoClass.

4 Observe na figura abaixo os nomes que devem ser dados à CoClass e à Interface:

CoClass: C_odEmpresaInterface: IC_odEmpresa

5 O próximo passo é definir o método de inclusão na interface IC_odEmpresa().

Clique no botão Add para adicionar um método.

Page 292: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 292/580

Programando com o Centura Team Developer 2000

Página PAGE 582

6 Observe na figura abaixo o nome e os parâmetros do método:

Quando informar todos os parâmetros corretamente, clique no botão OK para continuar.

7 Observe na figura que se segue o método odInsere(), da interface IC_odEmpresa, com seus parâmetrosdefinidos.

 Numa aplicação real, é neste momento que devem ser incluídos os demais métodos da interface. Nessenosso exemplo utilizaremos apenas um método.

8 A janela final do Assistente de Classes COM.

Page 293: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 293/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Se estiver tudo correto, clique no botão Finish. Lembre-se de que o Assistente de Classes COM nãosuporta alterações numa classe depois que ela já está pronta, devendo ser utilizado apenas paraconstrução de classes novas.

9 A figura abaixo mostra o código fonte gerado pelo Assistente de Classes COM.

A estrutura básica do objeto-dado está concluída. Ainda resta programar as ações do componente, mas issoserá feito posteriormente.

Você deve salvar o seu programa, pois será necessário utilizá-lo posteriormente.

Você pode fazer download dos arquivos fonte presentes no livro diretamente a partir do sitehttp://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo chama-se exCap23_02.apl.

Codificando os componentes

A estrutura dos fontes necessários para que nossa aplicação COM+ funcione está montada.

Page 294: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 294/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Precisamos agora incluir o código necessário para que a aplicação funcione.

Primeiramente vamos codificar o objeto-dado, pois ele é a base de nossa aplicação. É o objeto-dado que faráa conexão com o banco de dados. Apenas esse objeto "enxerga" o banco de dados.

O código do objeto-dado é muito simples e bastante parecido com qualquer outra função tradicional de

acesso a dados.

Observe na listagem abaixo o código fonte completo do método odInsere() que deve ser codificado noobjeto-dado.

Function: odInsereDescription:AttributesReturns

Boolean:Parameters

String: psCodigoString: psNome

Static VariablesLocal variablesSession Handle: hSessionString: sParametrosSql Handle: hSql

Actions!Set sParametros = 'Provider=SQLBASEOLEDB; 'Set SqlDatabase = "ISLAND"Set SqlUser = 'SYSADM'Set SqlPassword = 'SYSADM'!If SqlCreateSession( hSession , sParametros )

If SqlCreateStatement( hSession, hSql )!Call SqlPrepareAndExecute ( hSql , "

INSERT INTO COMPANY ( COMPANY_ID , COMPANY_NAME )VALUES ( :psCodigo , :psNome ) " )

!Call SqlDisconnect( hSql )Call SqlFreeSession( hSession )!Return TRUE

ElseCall SalMessageBox( "Não foi possível criar comando." ,

"COM Server Objeto-Dado" , MB_Ok )

ElseCall SalMessageBox( "Não foi possível conectar." ,

"COM Server Objeto-Dado" , MB_Ok )Return FALSE

Como vimos acima, o código fonte é bem parecido com um código normal, já conhecido pela maioria dosdesenvolvedores que um dia escreveram uma função para incluir um registro num banco de dados.

Obs:A linha de código que indica qual o fornecedor do banco de dados a ser utilizado é a seguinte:

Set sParametros = 'Provider=SQLBASEOLEDB; '

Page 295: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 295/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Nesse caso, estamos utilizando o próprio SQLBase que acompanha o produto e que está presente no CDanexo ao livro. Você pode fazer esse componente funcionar com bancos de dados de outros fornecedores,

 basta configurar a propriedade Provider adequadamente.Utilize "MSSQLS" para o MS SQLServer e "MSDAORA" para Oracle.

A geração do componente difere da geração do executável basicamente nas etapas a seguir:

1 Você deve informar ao SQLWndows para que seja gerado um componente do tipo MTS COM Server.Dessa forma será gerada uma DLL que, posteriormente, será registrada no servidor.

Para fazer isso acione o menu Project | Build Settings.Isso fará aparecer a janela mostrada abaixo:

Selecione o radio button MTS COM Server (DLL) para que o componente seja gerado corretamente.

2 Nesta mesma janela de configurações acione a propriedade COM Server

Page 296: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 296/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Selecione o radio button Single Threaded Apartment e clique uma vez no botão New, para que uma novachave GUID seja gerada para o componente.Logo após clique no botão OK.

3 Acione a geração da DLL a partir do menu Project | Build ...É este o momento da geração do componente.

4 Através do menu Project | Register Server o componente é registrado no registro do Windows, na chavede registro adequada. Você não precisa entender disso neste momento, necessita apenas saber que oservidor foi gerado e registrado no seu Windows. Sempre que você precisar alterar seu componente, seránecessário retirar o componente do registro (através do menu Project | Un-register Server), e entãocompilar e registrar novamente o componente.

A figura abaixo ilustra o registro do componente.

5 Quando o registro é feito com sucesso a seguinte mensagem é mostrada:

Page 297: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 297/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apenas clique no botão OK.

Salve sua aplicação.

Concluímos mais uma etapa. O componente objeto-dado está pronto. Tudo o que é necessário fazer noCTD2000 para que um componente seja executado no Component Services foi feito. Precisamos agora criaro componente-negócio.

1 Abra a aplicação exCap23_01.apl que foi salva anteriormente.

2 O primeiro passo é incluir neste programa as definições do objeto-dado que foram feitas na etapa anterior.Devemos incluir o componente objeto-dado na nossa aplicação.

Para fazer isso acione o menu Tools | ActiveX Explorer.

4 Localize o item chamado “exCap23_02 1.0 Type Library”.  Este é o componente que registramos na etapa anterior, o objeto-dado.

Page 298: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 298/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Os componentes são mostrados em ordem alfabética, então basta digitar no interior do list box as letras "ex"(minúsculas).

Quando encontrar o item clique no botão OK.

5 O ActiveX Explorer lê as informações colhidas da type library que foi registrada na etapa anterior e mostraas classes, interfaces, métodos, eventos e os enums.

Clique com o botão direito do mouse numa área branca do quadro esquerdo. Aparecerá um menu decontexto, assim como mostrado na figura abaixo:

Selecione os itens Show CoClasses e Show Interfaces para que as mesmas sejam mostradas no ActiveXExplorer.

6 Neste menu de contexto, clique no item chamado Generate Options para que a próxima janela seja mostrada.

Page 299: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 299/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Selecione o terceiro radio button para que o código seja gerado com as funções para todas as referências aclasses utilizadas.

7 Observe que, ao clicar numa interface, seus itens são mostrados no quadro direito do ActiveX Explorer. Nocaso da nossa interface, apenas o método odInsere() é apresentado.

 Nas suas aplicações vida real  serão mostrados vários métodos.

8 Acione o menu de contexto do ActiveX Explorer, nele ative o menu Generate Deep para que o código sejaimportado.

Page 300: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 300/580

Programando com o Centura Team Developer 2000

Página PAGE 582

9 Essa importação significa que o ActiveX Explorer irá gerar uma biblioteca com o mesmo nome da typelibrary, com extensão “.APL”. 

 Nesta biblioteca são geradas várias classes que fazem referencia à type library. Uma classe em especialmerece nossa atenção, a classe COM Proxy, pois é ela que deverá ser utilizada pelo nosso componente.

Aguarde a conclusão da importação.

10 Após importado, o código gerado é mostrado na seção Classes em letras azuis, conforme ilustrado na figuraabaixo:

Page 301: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 301/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Uma vez importado o código, podemos codificar nosso método.

11 Localize o método Insere() na interface ICEmpresa.

E digite o código mostrado na figura abaixo:

Page 302: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 302/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O código fonte completo do método Insere() é o seguinte:

Function: InsereDescription:AttributesReturns

Boolean:Parameters

String: psCodigoString: psNome

Static VariablesLocal variables

ComProxyVar: oEmpresaClass: exCap23_02_C_odEmpresa

Boolean: bRetornoActionsIf SalMTSCreateInstance( oEmpresa )

Call oEmpresa.odInsere( psCodigo, psNome, bRetorno )Call oEmpresa.Release ( )Return bRetorno

O componente objeto-negócio está concluído, o próximo passo agora é desenvolver a aplicação cliente que outilizará.

A aplicação cliente

A aplicação cliente deve ter toda a interface visual, a interação com o usuário final. No momento adequado,as chamadas aos objetos-negócio devem ser feitas.

A aplicação cliente jamais deve deixar um componente objeto-negócio aguardando por alguma digitação dousuário final.

 Neste ponto precisa ser desenvolvida uma aplicação que servirá de interface visual para a digitação e inclusãoda empresa. A figura abaixo ilustra uma janela que permite a digitação do código, do nome da empresa e um

 botão que será pressionado para ativar o objeto-negocio, fazendo então a inclusão.

1 Monte uma aplicação parecida com a mostrada na figura abaixo:

Page 303: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 303/580

Programando com o Centura Team Developer 2000

Página PAGE 582

2 Ative o ActiveX Explorer, assim como foi feito na confecção do componente anterior.

Selecione no ActiveX Explorer a type library chamada “exCap23_01 1.0 Type Library”.  Clique no botão OK.

3 Marque todos os itens para a geração do código.Ative o menu de contexto do ActiveX Explorer e selecione o item Generate Deep para que o código datype library referente ao objeto-negócio seja gerado.

Esses passos já foram descritos na geração do componente anterior e são exatamente os mesmos, por

isso não os ilustramos. Qualquer dúvida consulte os passos 7 e 8 da confecção do componente anterior, pois são idênticos.

4 Uma vez importado o componente objeto-negócio, basta codificar o botão incluir para que o programafuncione.

A figura abaixo ilustra a codificação necessária na camada visual do aplicativo.

Page 304: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 304/580

Programando com o Centura Team Developer 2000

Página PAGE 582

É necessário instanciar um objeto da classe COM Proxy Class referente ao objeto objeto-negócio.

5 A figura abaixo ilustra todo o código fonte necessário:

A definição do objeto oNegEmpresa se faz necessária para que possamos ter acesso ao objeto-negócio eaos seus métodos.

Fique atento quando for instanciar o objeto-negócio, ele deve ser uma instância da COM Proxy Class. Nesse caso, a instância chama-se “exCap23_01_CEmpresa”.

A variável bRetorno é utilizada para que façamos a verificação do valor retornado pelo método Insere().

6 O código fonte completo do botão responsável pela inclusão da empresa é mostrado e explicado abaixo:

Pushbutton: pbInsereMessage Actions

On SAM_ClickCall SalWaitCursor ( TRUE )If oNegEmpresa.Create ( )

Call oNegEmpresa.Insere( dfCodigo, dfNome, bRetorno )Call oNegEmpresa.Release ( )

Page 305: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 305/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Call SalWaitCursor ( FALSE )

Lembre-se, antes de poder utilizar algum objeto é necessário iniciar uma instância deste objeto, isso éfeito através do método Create(). Esse método é padrão para todos os componentes criados no CenturaTeam Developer 2000. Você sempre deve utilizar o método Create() assim como, ao encerra autilização do objeto, você deve liberar o mesmo através de uma chamada ao método Release().

O método Insere() já é um velho conhecido nosso e sua função é apenas ativar o objeto da camada dedados que fará a inclusão da empresa.

Qualquer crítica necessária a inclusão da empresa deve ser codificada no método Insere() do objeto-negócio. Não devemos realizar críticas na camada visual, pois, dessa forma não estaremosreaproveitando código algum !

Você pode fazer download dos arquivos fonte presentes no livro diretamente a partir do sitehttp://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo chama-se exCap23_03.apl.

Agora estamos com toda a parte de codificação dos nossos componentes pronta, resta apenas instalar econfigurar os componentes no Component Services (MTS).

Inserindo uma aplicação no Component Services.

Mostraremos agora como criar uma aplicação no Component Services e acrescentar os nossos componentes aessa aplicação. Para isso é necessário que você tenha disponível no seu Windows o Microsoft ComponentServices, que faz parte do Windows 2000. No Windows NT 4.0, o MTS faz o papel do Component Services,

 porém, as instruções descritas a seguir são válidas apenas para o Component Services.

1 Inicie o Component Services. Ele está presente no menu Programs | Administrative Tools  do MSWindows 2000.

2 Conforme mostrado na figura abaixo, clique com o botão direito no item COM+ Applications para teracesso a um menu de contexto onde você deve acionar o menu New | Application.

3 Isso dará acesso ao Assistente de Instalação de Aplicações COM, que é mostrado na figura abaixo:

Page 306: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 306/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Pressione o botão Next para avançar.

4 Clique no botão que indica uma nova aplicação vazia, é o segundo botão, conforme ilustrado na figuraabaixo:

5 Dê um nome para a sua aplicação. Neste exemplo utilizaremos o nome "AppCTD2000".

6 Nesta janela você configura as propriedades de permissões de usuário. Para efeito de exemplo, deixe oitem default marcado, assim como ilustrado na figura abaixo:

7 A aplicação está criada, o assistente chegou ao final.

Page 307: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 307/580

Programando com o Centura Team Developer 2000

Página PAGE 582

O próximo passo é a instalação dos componentes da aplicação "AppCTD2000".

A aplicação "AppCTD2000" devidamente instalada no Component Services.

Instalando os componentes da aplicação

As instruções abaixo ilustram todo o processo de instalação dos dois componentes que foram criados nestecapítulo, o objeto-dado e objeto-negócio.

1 Clique com o botão direito do mouse no item Components da aplicação AppCTD2000, no quadroesquerdo do Component Services, conforme ilustrado na figura abaixo:

Page 308: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 308/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Ative o menu New | Component para ter acesso ao assistente de Instalação de Componentes COM.

2 Uma vez no Assistente de Instalação de Componentes COM, clique no botão referente ao item Installnew component(s), conforme exemplificado na figura abaixo:

3 Nesta janela você deve escolher as DLLs dos componentes gerados no CTD2000. Navegue até odiretório onde as DLLs foram geradas e escolha as duas, de uma só vez, seguindo a ilustração abaixo:

Para prosseguir clique no botão Open.

4 Neste momento o Assistente de Instalação de Componentes COM identificará as interfaces contidas noscomponentes selecionados e mostrará a seguinte janela:

Page 309: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 309/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Agora, basta clicar no botão Next para que os componentes sejam instalados no Component Services.

5 Clique no botão Finish para encerrar.

Os componentes foram adicionados ao Component Services e isso pode ser confirmado na imagem mostradaabaixo:

Page 310: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 310/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Observe na figura abaixo a interface Insere() do objeto-negócio.

A próxima e última etapa a ser concluída, antes que os componentes estejam finalmente instalados e prontos para utilização, é a configuração das suas propriedades.

Configurando as propriedades do componente

Um componente possui uma série de propriedades, mas neste momento configuraremos as propriedades quedizem respeito à Transação.

Quanto às transações, você pode configurar seus componentes das seguintes formas:

Disabled Desabilita o recurso de transações para um componente. Este é o atributo normal a umcomponente que ainda não foi configurado.

 Not Supported Utilize este atributo para evitar que um componente participe de alguma transação.Supported Utilize este atributo para permitir que um componente participe de alguma transação.

Caso não exista nenhuma transação ativada, o componente não fará parte de nenhumatransação.

Requires New Utilize este atributo para informar que o componente deve sempre iniciar em uma novatransação.

Required Utilize este atributo para informar que o componente deve ser iniciado em umatransação já existente. Caso não exista uma transação ativa no objeto chamado, umanova transação será criada.

Page 311: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 311/580

Programando com o Centura Team Developer 2000

Página PAGE 582

1 Clique com o botão direito do mouse no componente objeto-dado e acione o menu Properties.

2 Na propriedade Transactions do objeto-negócio selecione o item Requires New.Clique no botão OK para confirmar.

3 Na propriedade Transactions do objeto-dado selecione o item Suported.Pressione o botão OK para confirmar.

Executando a aplicação cliente

 Neste momento os objetos estão devidamente configurados, você pode executar a aplicação clienteSQLWindows e ver o resultado, simplesmente verificando a linha inserida na tabela, conforme o comandoinsert codificado no método odInsere().

Chegamos ao final deste capítulo, onde mostramos como construir componentes COM+ em CTD2000 para

serem executados no Component Services do MS Windows 2000. O assunto não foi esgotado com asinformações supridas aqui, pois por enquanto essa não é a nossa proposta. Você precisa aprofundar-se mais

Page 312: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 312/580

Programando com o Centura Team Developer 2000

Página PAGE 582

no estudo de construção de aplicações distribuídas, caso isso torne-se uma realidade na sua empresa, o quefatalmente ocorrerá.

 Neste capítulo procuramos fornecer as informações básicas para que você consiga iniciar o processo dedesenvolvimento de aplicações distribuídas com o CTD2000.

Page 313: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 313/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 314: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 314/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Capítulo 16Desenvolvendo Aplicações SQLWindows para aWeb

Page 315: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 315/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Apresentação

O Centura Team Developer 2000 possui algumas extensões para a web que permitem aosdesenvolvedores rapidamente fazerem com que suas aplicações escritas em SQLWindows

 possam ser executadas no ambiente web, dentro de um browser.

Estas extensões são instaladas na forma de alguns componentes que devem ser utilizadosno desenvolvimento das aplicações no próprio ambiente do SQLWindows. AplicaçõesWeb são construídas no mesmo ambiente das aplicações tradicionais Windows, o únicodiferencial está nos componentes que devem ser utilizados.

O executável de uma aplicação feita para rodar na web também funciona, para propósito detestes e depuração, no ambiente windows.

Dois módulos distintos compoem as extensões para web da Centura (CWE), o móduloservidor e o cliente. O Módulo cliente, como já citado acima, é composto dos componentes

 para desenvolvimento de aplicações que rodam na web, os QuickObjects para aplicaçõesWeb. O Módulo servidor deve ser instalado no servidor web e sua principal função éinterceptar as chamadas vindas dos usuários para o servidor web e ativar as respectivasaplicações escritas em Centura SQLWindows. Estas aplicações são executadas no servidorde aplicações Web, onde deve estar instalado o módulo servidor do CWE.

Esta tarefa de identificar a aplicação requisitada é feita pelo AppConsole. No AppConsoleestão cadastradas todas as aplicações disponibilizadas no servidor, todas as aplicaçõesdesenvolvidas em SQLWindows fazendo uso dos componentes para Web do CenturaTeam Developer 2000.

 No interior de cada executável estão os forms ou dialogs que devem ser executadosconforme solicitação do usuário. A execução da aplicação em si é feita na própria máquinaservidora que, no momento em que desenharia as telas para que o usuário pudesse vê-lasrenderizam esta tela no browser do solicitante em formato html. Ou seja, uma montagemde página html é feita dinamicamente no momento em que cada tela seria mostrada pelaaplicação windows. Isso indica que, alguns recursos comuns em aplicações tradicionaiswindows não estão disponíveis nas aplicações web. Por exemplo, uma aplicação web não

 pode ter barras de ferramentas assim como uma aplicação windows, não pode ter um MDIcom menus para ativar cada uma das janelas da aplicação, não pode ter janelas devisualização de relatórios conforme são disponibilizadas nas aplicações Windows.

Outros artifícios podem ser utilizados para que se consiga construir aplicações equivalentesàs aplicações Windows, mas alguns recursos simplesmente não podem ser utilizados noaplicativo web por limitação da própria plataforma web.

OBS:O Centura Team Developer 2000 deve ser instalado conforme instruções presentes noApêndice F - Guia de instalação do Centura Team Developer 2000 para que as extensõesdo Centura para a web sejam instaladas e configuradas corretamente.

A configuração do Web App Manager e do APP Console

Page 316: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 316/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 No AppConsole é onde ficam cadastradas as aplicações disponibilizadas no servidor web,as aplicações que estarão acessíveis aos usuários através de seus navegadores web.

A figura abaixo mostra a janela principal do AppConsole:

Obs:O AppConsole precisa sempre estar no ar para que seus clientes web possam acionar as

aplicações automaticamente. É uma prática comun instalar o AppConsole num servidorWindowsNT ou Windows2000 como um serviço e configurar sua inicialização paraautomática sempre que o servidor foi iniciado.

O Desenvolvimento em SQLWindows

O desenvolvimento das aplicações cujo destino é rodar na web devem fazer uso doscomponentes específicos para web, os QuickObjects para Web. Através destescomponentes o desenvolvimento de aplicações para a web é extremamente simplificado.

Os componentes para Web

Existem duas formas básicas de se desenvolver aplicações web com o SQLWindows:

os QuickObjects DVC para Web  oferecem um conjunto de componentes quesimplificam o desenvolvimento de aplicações web. São um conjunto de classes quetrabalham em conjunto, através de janelas de configuração, tornando o desenvolvimento

 parecido com a forma demonstrada nos capítulos 6 e 7. Vale a pena desenvolver algumasaplicações utilizando estes componentes para que se tenha uma idéia de produtividade nodesenvolvimento.

Para que os QuickObjects DVC para Web estejam disponíveis em sua aplicação você

 precisa incluir a biblioteca QCKWEBDS.APL em sua aplicação, na seção Libraries.

Page 317: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 317/580

Programando com o Centura Team Developer 2000

Página PAGE 582

os QuickObjects padrão para Web são os componentes que servem de base paraqualquer tipo de aplicação desenvolvida em SQLWindows cujo destino seja rodar na web.Estes componentes são a base dos QuickObjects DVC para Web e você deve derivar suasclasses destes componentes para pode adaptá-las ao ambiente web.

Para que os QuickObjects padrão para Web estejam disponíveis em sua aplicação você precisa incluir a biblioteca QCKWEB.APL em sua aplicação, na seção Libraries.

Obs:Você não pode fazer uso das duas bibliotecas de componentes para web simultaneamentena mesma aplicação.

A janela home

Você precisa informar o nome do form window ou dialog box inicial da sua aplicação. Esta

tarefa é muito simples e deve ser realizado da seguinte forma:

1 Após incluir uma das duas bibliotecas de componentes para web defina um novo formwindow da classe cWebMgrForm.

2 Através do menu de contexto deste form window ative a opção cWebMgrFormProperties.

3 Nesta janela de configuração das propriedades você deve selecionar o objeto que seráutilizado como objeto inicial do executável gerado.

É bem mais interessante gerar muitos executáveis pequenos, cada um contendo apenasalgumas poucas janelas, do que trabalhar com poucos executáveis grandes.

Page 318: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 318/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Objetos Web

A partir deste momento, todos os objetos que você utilizar para montar sua aplicação webdevem ser objetos derivados dos Componentes para a Web, são as classes que inicam pelo

nome cWeb*. Se algum objeto que não for derivado destes componentes for utilizado naaplicação este objeto não será mostrado na página html que é montada para o usuário final.

O desenvolvimento

Ao desenvolver aplicações que serão executadas na web devemos ter em mente algumasregras básicas para que a aplicação funcione corretamente. Além das regras básicas dedesign de telas, que mudam consideravelmente, temos também que tomar cuidado nodesenvolvimento interno da aplicação, no código fonte, nos recursos utilizados.

Obs:

O código interno das suas regras de negócio não deve sofrer mudança alguma quando odesenvolvimento é para a web. Podendo inclusive ser utilizada a mesma classe de regras denegócio nas aplicações web e windows.

Consulte o Capítulo 15 que trata do desenvovimento de componentes para percebertodo o potencial deste recurso que permite que você desenvolva seus componentesCOM para rodar em servidores de aplicações que são utilizadas tanto por aplicaçõeswindows (como ilustrado no capítulo 15) como por aplicações web. Ou seja, a regrade negócio estando em componentes COM pode ser utilizada por clientes windows,web e outros clientes compatíveis com o padrão COM.

Algumas dicas para o desenvolvimento de aplicações para a web com o CenturaSQLWindows:

  Você deve utilizar as classes desenvolvidas para funcionar na web (conformecitado acima). Sua bibliioteca de classes pode continuar sendo utilizada desde quecada classe visual derive da respectiva classe cWeb*. Por exemplo, sua classe decheck boxes ccbPadrao precisa derivar da classe cWebCheckBoxBase para que asinstâncias da classe ccbPadrao sejam mostradas na web quando a página fordesenhada no navegador do usuário.

  Você deve utilizar em suas aplicações as mensagens WEB_* ao invés de SAM_*.

Por exemplo, utilize WEB_Create sempre que for utilizar SAM_Create. Além dissoobserve que algumas mensagens que funcionam nas aplicações Windowssimplesmente não são processadas na internet, é o caso da mensagemSAM_AnyEdit.

  Seus MDIs não poderão existir nas aplicações web, pois apenas uma janela de cadavez pode ser mostrada no browser. Estude o caso de utilizar janelas com framescaso seja necessário trabalhar com mais de um janela simultâmeamente. No casodos menus presentes no mdi das aplicações windows, estes devem serreestruturados e distribuídos de outra forma nas aplicações web. Você pode aindamontar seus menus em Java ou HTML Dinâmico.

  Utilize modal dialog boxes para entrada de dados na web. Dialog Boxes modeless e

system modal não são suportados na web.

Page 319: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 319/580

Programando com o Centura Team Developer 2000

Página PAGE 582

  Assim como no caso da mensagem SAM_AnyEdit, que não tem efeito quando emaplicações web, os cliques duplos também não podem ser capturados na web.

   Não podem ser visualizados em aplicações web objetos tipo OLE e customcontrols. Podem existir na aplicação mas não podem ser visualizados.

  Atalhos de teclado e aceleradores não são suportados na web assim como os

eventos de mouse típicos de aplicações Windows, como por exemploSAM_DrapAndDrop, WM_MouseMove, SAM_DropDown.

Estes são apenas alguns dos cuidados que devemos tomar no desenvolvimento deaplicações para web.

Page 320: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 320/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 321: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 321/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice AGuia de referência das funções SALO Centura SQLWindows/32 dispõe de cerca de 850 funções nativas que auxiliam no

desenvolvimento das aplicações, tornando o ambiente extremamente produtivo e bastante poderoso. Essas funções estão classificadas em diversos grupos para facilitar a utilização.

O correto uso das funções do SQLWindows/32 pelo desenvolvedor é de suma importância.Portanto, neste apêndice apresentamos detalhadamente todas as suas funções.

Obs

Todas as funções para interface com bancos de dados são precedidas pelas letras ‘Sql’, e são explicadas

detalhadamente no Apêndice B  –  Guia de Referência das Funções SQL.

Page 322: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 322/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As funções SAL são agrupadas nas seguintes categorias:

Funções ActiveXSalActiveXAutoErrorModeSalActiveXClose

SalActiveXCreateSalActiveXCreateFromDataSalActiveXCreateFromFileSalActiveXDeleteSalActiveXDoVerbSalActiveXGetActiveObjectSalActiveXGetDataSalActiveXGetObjectSalActiveXInsertObjectDialog

SalActiveXOLEType 

Tratamento de vetoresSalArrayAvgSalArrayDimCountSalArrayGetLowerBoundSalArrayGetUpperBoundSalArrayIsEmptySalArrayMaxSalArrayMinSalArraySetUpperBoundSalArraySum

Manipulação de cores e fontesSalColorFromRGBSalColorGetSalColorGetSysColorSalColorSetSalColorToRGBSalFontGetSalFontGetNamesSalFontGetSizes

SalFontSetFunções para realizar conversões

SalFormUnitsToPixelsSalGetDataTypeSalGetItemNameSalGetMaxDataLengthSalHStringToNumberSalPixelsToFormUnitsSalSetMaxDataLength

Tratamento de datasSalDateConstruct

Page 323: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 323/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalDateCurrentSalDateDaySalDateHourSalDateMinute

SalDateMonthSalDateMonthBeginSalDateQuarterSalDateQuarterBeginSalDateSecondSalDateToStrSalDateWeekBeginSalDateWeekdaySalDateYearSalDateYearBegin

Funções DDESalDDEAddAtomSalDDEAllocSalDDEDeleteAtomSalDDEExtractSalDDEExtractCmdSalDDEExtractDataTextSalDDEExtractOptionsSalDDEFindAtomSalDDEFreeSalDDEGetAtomNameSalDDEGetExecuteStringSalDDEPostSalDDERequestSalDDESendSalDDESendAllSalDDESendExecuteSalDDESendToClientSalDDESetCmdSalDDESetDataTextSalDDESetOptions

SalDDEStartServerSalDDEStartSessionSalDDEStopServerSalDDEStopSession

Funções de depuraçãoSalCompileAndEvaluateSalContextBreakSalContextCurrent

Page 324: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 324/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Manuseio de dialog boxSalDlgChooseColorSalDlgChooseFontSalDlgOpenFile

SalDlgSaveFileSalEndDialogSalModalDialogSalModalDialogFromStr

Utilização dos recursos de arrastar e soltarSalDragDropDisableDropSalDragDropEnableDropSalDragDropGetSourceSalDragDropGetTargetSalDragDropStart

SalDragDropStopSalDropFilesAcceptFilesSalDropFilesQueryFilesSalDropFilesQueryPoint

Funções de edição  SalEditCanCopyTo

SalEditCanCutSalEditCanPasteSalEditCanPasteFromSalEditCanUndoSalEditClearSalEditCopySalEditCopyStringSalEditCopyToSalEditCutSalEditPasteSalEditPasteFromSalEditPasteStringSalEditUndo

Gerenciamento de arquivosSalFileCloseSalFileCopySalFileCreateDirectorySalFileGetCSalFileGetCharSalFileGetCurrentDirectorySalFileGetDateTimeSalFileGetDriveSalFileGetStrSalFileOpen

SalFileOpenExt

Page 325: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 325/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalFilePutCSalFilePutCharSalFilePutStrSalFileRead

SalFileRemoveDirectorySalFileSeekSalFileSetCurrentDirectorySalFileSetDateTimeSalFileSetDriveSalFileTellSalFileWrite

Formatação e validaçãoSalFmtFieldToStrSalFmtFormatDateTime

SalFmtFormatNumberSalFmtGetFormatSalFmtGetInputMaskSalFmtGetPictureSalFmtIsValidFieldSalFmtIsValidInputMaskSalFmtIsValidPictureSalFmtKeepMaskSalFmtSetFormatSalFmtSetInputMaskSalFmtSetPictureSalFmtStrToFieldSalFmtUnmaskInputSalFmtValidateFieldSalIsNullSalIsValidDateTimeSalIsValidDecimalSalIsValidIntegerSalIsValidNumberSalStrIsValidCurrencySalStrIsValidDateTime

SalStrIsValidNumberSalValidateSet

Tratamento dos objetos list box e combo boxSalListAddSalListClearSalListDeleteSalListFilesSalListGetMultiSelectSalListInsertSalListPopulate

SalListQueryCount

Page 326: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 326/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalListQueryFileSalListQueryMultiCountSalListQuerySelectionSalListQueryState

SalListQueryTextSalListQueryTextXSalListQueryTextLengthSalListRedrawSalListSelectStringSalListSetMultiSelectSalListSetSelectSalListSetTabs

Gerenciamento dos recursos dos MDISalMDIArrangeIcons

SalMDICascadeSalMDITile

Suporte ao Microsoft Transaction ServerSalMTSCreateInstanceSalMTSDisableCommitSalMTSEnableCommitSalMTSGetObjectContextSalMTSIsCallerInRoleSalMTSIsInTransactionSalMTSIsSecurityEnabledSalMTSSetAbortSalMTSSetComplete

Funções de tratamento de mensagensSalPostMsgSalSendClassMessageSalSendClassMessageNamedSendSendMsgSalSendMsgToChildren

SalSendValidateMsgFunções de uso genérico

SalAbortSalClearFieldSalCursorClearSalCursorSetSalCursorSetFileSalCursorSetStringSalDrawMenuBarSalGetProfileInt

SalGetProfileString

Page 327: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 327/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalGetVersionSalIdleKickSalIdleRegisterWindowSalIdleUnregisterWindow

SalLoadAppSalLoadAppAndWaitSalMapEnterToTabSalMessageBeepSalMessageBoxSalQuitSalSetProfileStringSalTimerKillSalTimerSetSalTrackPopupMenuSalUseRegistry

SalWaitCursorSalWinHelpSalYieldEnableSalYieldQueryStateSalYieldStartMessagesSalYieldStopMessages

Manuseio de númerosSalNumberAbsSalNumberArcCosSalNumberArcSinSalNumberArcTanSalNumberArcTan2SalNumberCosSalNumberCosHSalNumberExponentSalNumberHighSalNumberHypotSalNumberLogSalNumberLogBase10SalNumberLow

SalNumberMaxSalNumberMinSalNumberModSalNumberPiSalNumberPowerSalNumberRandInitSalNumberRandomSalNumberRoundSalNumberSinSalNumberSinHSalNumberSqrt

SalNumberTan

Page 328: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 328/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalNumberTanHSalNumberToCharSalNumberToHStringSalNumberToStr

SalNumberToStrXSalNumberToWindowHandleSalNumberTruncate

Tratamento de imagensSalPicClearSalPicGetDescriptionSalPicGetImageSalPicGetStringSalPicSetSalPicSetFile

SalPicSetFitSalPicSetImageSalPicSetHandleSalPicSetString

Funções de impressãoSalPrtExtractRectSalPrtGetDefaultSalPrtGetParmNumSalPrtPrintFormSalPrtSetDefaultSalPrtSetParmDefaultsSalPrtSetParmNumSalPrtSetup

Funções para relatóriosSalReportCloseSalReportCmdSalReportCreateSalReportDlgOptionsSalReportGetDateTimeVar

SalReportGetNumberVarSalReportGetObjectVarSalReportGetStringVarSalReportPrintSalReportPrintToFileSalReportResetSalReportSetDateTimeVarSalReportSetNumberVarSalReportSetObjectVarSalReportSetStringVarSalReportTableCreate

SalReportTablePrint

Page 329: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 329/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalReportTableViewSalReportView

Tratamento de barras de rolagem

SalScrollGetPosSalScrollGetRangeSalScrollSetPosSalScrollSetRange

Funções SQLSqlClearImmediateSqlCloseSqlCommitSqlConnectSqlContextClear

SqlContextSetSqlContextSetToFormSqlDirectoryByNameSqlDisconnectSqlDropStoredCmdSqlErrorSqlErrorTextSqlExecuteSqlExecutionPlanSqlExistsSqlExtractArgsSqlFetchNextSqlFetchPreviousSqlFetchRowSqlGetErrorSqlGetErrorPositionSqlGetErrorTextSqlGetErrorTextXSqlGetModifiedRowsSqlGetParameterSqlGetParameterAll

SqlGetResultSetCountSqlGetRollbackFlagSqlImmediateSqlImmediateContextSqlOpenSqlPLSQLCommandSqlPrepareSqlPrepareAndExecuteSqlRetrieveSqlSetInMessageSqlSetIsolationLevel

SqlSetLockTimeout

Page 330: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 330/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SqlSetLongBindDatatypeSqlSetOutMessageSqlSetParameterSqlSetParameterAll

SqlSetResultSetSqlStoreSqlVarSetup

Tratamento de stringsSalStrCompressSalStrFirstCSalStrGetBufferLengthSalStrLeftSalStrLeftXSalStrLength

SalStrLopSalStrLowerSalStrLowerXSalStrMidSalStrMidXSalStrProperSalStrProperXSalStrRepeatSalStrRepeatXSalStrReplaceSalStrReplaceXSalStrRightSalStrRightXSalStrScanSalStrSetBufferLengthSalStrToDateSalStrTokenizeSalStrToNumberSalStrTrimSalStrTrimXSalStrUncompress

SalStrUpperSalStrUpperX

Tratamento de table windowSalTblAnyRowsSalTblClearSelectionSalTblColumnAverageSalTblColumnSumSalTblCopyRowsSalTblCreateColumnSalTblDefineRowHeader

SalTblDefineSplitWindow

Page 331: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 331/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalTblDeleteRowSalTblDeleteSelectedSalTblDestroyColumnsSalTblDoDeletes

SalTblDoInsertsSalTblDoUpdatesSalTblFetchRowSalTblFindNextRowSalTblFindPrevRowSalTblGetColumnTextSalTblGetColumnTitleSalTblGetColumnWindowSalTblInsertRowSalTblKillEditSalTblKillFocus

SalObjectsFromPointSalTblPasteRowsSalTblPopulateSalTblQueryColumnFlagsSalTblQueryColumnIDSalTblQueryColumnPosSalTblQueryColumnWidthSalTblQueryContextSalTblQueryFocusSalTblQueryLockedColumnsSalTblQueryRowFlagsSalTblQueryRowHeaderSalTblQueryScrollSalTblQuerySplitWindowSalTblQueryTableFlagsSalTblQueryVisibleRangeSalTblResetSalTblScrollSalTblSetCellTextColorSalTblSetColumnFlagsSalTblSetColumnPos

SalTblSetColumnTextSalTblSetColumnTitleSalTblSetColumnWidthSalTblSetContextSalTblSetFlagsAnyRowsSalTblSetFocusCellSalTblSetFocusRowSalTblSetLockedColumnsSalTblSetRangeSalTblSetRowSalTblSetRowFlags

SalTblSetTableFlags

Page 332: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 332/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalTblSortRows

Gerenciamento de janelasSalAppDisable

SalAppEnableSalAppFindSalBringWindowToTopSalCenterWindowSalCreateWindowSalCreateWindowExSalContextMenuSetPopupSalDestroyWindowSalDisableWindowSalDisableWindowAndLabelSalEnableWindow

SalEnableWindowAndLabelSalFindWindowSalFormGetParmNumSalGetDefButtonSalGetFirstChildSalGetFocusSalGetNextChildSalGetTypeSalGetWindowLabelTextSalGetWindowLocSalGetWindowSizeSalGetWindowStateSalGetWindowTextSalHideWindowSalHideWindowAndLabelSalInvalidateWindowSalIsButtonCheckedSalIsWindowEnabledSalIsWindowVisibleSalMoveWindowSalParentWindow

SalQueryFieldEditSalSetDefButtonSalSetFieldEditSalSetFocusSalSetWindowLabelTextSalSetWindowLocSalSetWindowSizeSalSetWindowTextSalShowWindowSalShowWindowAndLabelSalStatusGetText

SalStatusSetText

Page 333: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 333/580

Programando com o Centura Team Developer 2000

Página PAGE 582

SalStatusSetVisibleSalTBarSetVisibleSalUpdateWindowSalWindowClassName

SalWindowGetPropertySalWindowHandleToNumberSalWindowIsDerivedFromClass

Page 334: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 334/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 335: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 335/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalAbortSintaxe : bOk =  SalAbort ( nCodigo )Descrição  : Cancela o processamento atual do menu actions, message actions, ou doapplication actions. Use SalAbort quando você quiser encerrar a sequência da chamada atual

sem retornar nenhum valor de status.

Parâmetro :nCodigo Receive Number. O status de saída. O Centura ignora este parâmetro para entrada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalActiveXAutoErrorModeSintaxe : bOk = SalActiveXAutoErrorMode ( bAcao )

Descrição : Liga/Desliga o tratamento automático de erro.

Parâmetro : bAcao Boolean - Se for TRUE o tratamento automático de erro é ativado, se

FALSE, é desativado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXCloseSintaxe : bOk = SalActiveXClose ( nWndControle , bSalvar )Descrição : Fecha um objeto e encerra a conexão com a sua aplicação origem.

Parâmetros :hWndControle Window Handle - O handle do controle ActiveX.

 bSalvar Boolean - Se for TRUE, a aplicação origem do objeto irá salvar os dadosantes de encerrar a conexão.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXCreateSintaxe : bOK = SalActiveXCreate ( hWndControle , sID )Descrição : Cria um objeto de acordo com a descrição da classe ( progID ).

Parâmetros :hWndControle Window Handle - O handle do controle ActiveX.sID String - Um identificador OLE da classe ( por exemplo Excel.Sheet.8 ).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 336: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 336/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalActiveXCreateFromDataSintaxe : bOk = SalActiveXCreateFromData ( hWndControle , sDesc )

Descrição : Cria novamente um objeto a partir de dados armazenados em formato binário.

Parâmetros :hWndControle Window Handle - O handle do controle ActiveX.sDesc String - Os dados em formato de bytes.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXCreateFromFileSintaxe : bOk = SalActiveXCreateFromFile ( objObjeto , sArquivo )Descrição : Cria uma instância de um objeto ActiveX.

Parâmetros :objObjeto Object - Uma referência do objeto criado.sArquivo String - O nome de um arquivo .doc  válido. Por exemplo

'c:\docs\arquivo.doc'.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXDeleteSintaxe : bOk = SalActiveXDelete ( hWndControle )Descrição : Apaga uma instância de um objeto ActiveX.

Parâmetro :hWndControle

Window Handle - O handle do objeto que será apagado.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXDoVerbSintaxe : bOk = SalActiveXDoVerb ( hWndControle , nVerbo , bTam )Descrição : Abre um objeto para uma operação. Cada objeto possui seu próprio conjunto deverbos.

Parâmetros :hWndControle Window Handle - O handle do objeto.nVerbo Number - Uma constante que identifica um verbo.

Os verbos padrões que devem ser suportados são listados abaixo:

Page 337: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 337/580

Programando com o Centura Team Developer 2000

Página PAGE 582

salOLEPrimary - A ação padrão do objeto.salOLEShow - Ativa o objeto para edição. Se a aplicação que criou o

objeto suporta ativação 'no local ', o objeto é ativado dentro docontrole ActiveX container.

salOLEOpen - Abre um objeto numa janela separada. Se a aplicação quecriou o objeto suporta ativação 'no local ', o objeto é ativado dentroda sua própria janela.

salOLEHide - Esconde a aplicação que criou o objeto, para o caso deobjetos embutidos.

salOLEUIActivate - Se o objeto suporta ativação 'no local ', mostraalguma ferramenta de interface. Se o objeto não suporta ativação'no local ', um erro ocorre.

salOLEInPlaceActivate - Abre uma nova janela e prepara o objeto paraser editado. Ocorre um erro se o objeto não suporta ativaçãoatravés de um clique do mouse.

 bTam Boolean - Se for TRUE redimensiona o objeto para o mesmo tamanho da janela onde foi ativado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXGetActiveObjectSintaxe : bOk = SalActiveXGetActiveObject ( objObjeto , sClasse )Descrição  : Obtém uma instância de um objeto ActiveX quando a aplicação servidora jáestiver sendo executada.

Esta função pesquisa a Tabela de Objetos OLE em Execução para obter uma instância daclasse. Essa tabela contém a referência aos objetos em execução.

Parâmetros :objObjeto objObjeto - O objeto que foi encontrado.sClasse sClasse - O nome da classe do objeto.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se o SQLWindows/32 não

conseguir encontrar um processo de automation válido.

Função : SalActiveXGetDataSintaxe : bOk = SalActiveXGetData ( hWndControle , sBytes )Descrição : Obtém o armazenamento associado ao objeto como uma linha de dados binários.Dessa forma, é disponibilizado um mecanismo alternativo de persistência em tempo deexecução, para os objetos embutidos.

Parâmetros :hWndControle Window Handle - O handle do objeto.

sBytes Receive String - A linha de dados binários do objeto.

Page 338: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 338/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalActiveXGetObjectSintaxe : bOk = SalActiveXGetObject ( hWndControle , objObjeto )Descrição : Dá acesso à interface automation do objeto especificado.

Parâmetro :hWndControle Window Handle - O handle do objeto.objObjeto Object - O objeto que foi recuperado.

Valor de Retorno :bOk  é TRUE se a função conseguir encontrar uma interface automation válida, e FALSE caso

contrário.

Função : SalActiveXInsertObjectDialogSintaxe : bOk = SalActiveXInsertObjectDialog ( hWndControle )Descrição : Mostra a caixa de diálogo padrão chamada Insert Object.

Quando um novo objeto é criado, o aplicativo associado ao nome da classe precisa estarcorretamente registrado no sistema operacional. O programa de instalação do aplicativo

 precisa ter realizado adequadamente o seu registro.

Parâmetro :hWndControle

Window Handle - O handle do objeto onde o controle ActiveX será criado.

Valor de Retorno :bOk  é TRUE se a função conseguiu incluir o objeto sem erros. É FALSE se algum objeto foiselecionado, mas não foi incluído corretamente. Quando o usuário, na janela de inclusão deobjetos ActiveX, clica no botão Cancel , bOk é -1.

Função : SalActiveXOLETypeSintaxe : nRetorno = SalActiveXOLEType ( hWndControle )Descrição : Obtém o status de um objeto ActiveX.

Parâmetro :hWndControle

Window Handle - O handle do objeto.

Valor de Retorno :nRetorno é uma das seguintes constantes :salOLEEmbedded - O objeto hWndControle contém um objeto embutido.

salOLENone - O objeto hWndControle não contém um objeto embutido.

Page 339: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 339/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalAppDisableSintaxe : bOk =  SalAppDisable ( )

Descrição  : Desabilita a entrada de dados de todas as aplicações que estiverem sendoexecutadas. Utilize as funções SalAppDisable e SalAppEnable quando você estiverexecutando várias aplicações e quiser controlar qual delas receberá o foco para que o usuáriodigite os dados.

Nenhum Parâmetro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalAppEnableSintaxe : bOk =  SalAppEnable ( )Descrição  : Habilita a entrada de dados de todas as aplicações que estiverem sendoexecutadas e que foram desabilitadas pela função SalAppDisable. Utilize as funçõesSalAppDisable e SalAppEnable quando você estiver executando várias aplicações e quisercontrolar qual delas receberá o foco para que o usuário digite os dados.

Nenhum Parâmetro.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalAppFindSintaxe : hWnd = SalAppFind ( sNomeAplic , bAtiva)Descrição : Encontra a janela top-level  da aplicação que você especificou e retorna o handleda janela. SalAppFind procura primeiro por instâncias de aplicações Centura e depois porinstâncias de outras aplicações Windows. Se você especificar o nome da instância atual,SalAppFind encontrará apenas outras instâncias sendo executadas, caso existam. Você podeusar este recurso para evitar que a mesma aplicação seja executada duas ou mais vezes.

Parâmetros :sNomeAplic String - O nome da aplicação sem a extensão. bAtiva Boolean - Se você setar bAtiva  para TRUE, SalAppFind irá também

ativar a janela encontrada.

Valor de Retorno :hWnd  contém o handle da janela encontrada.

Função : SalArrayAvgSintaxe : nMedia = SalArrayAvg ( nArray )

Descrição : Retorna o valor da média de todos os valores do vetor.

Page 340: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 340/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :nArray Vetor de números –  É o nome do vetor de números.

Valor de Retorno :nMedia é o valor da média de todos os valores do vetor.

Função : SalArrayDimCountSintaxe : bOk =  SalArrayDimCount ( Array , nDim )Descrição : Retorna o número de dimensões num vetor.

Parâmetros :Array Vetor –  É o nome do vetor.nDim Receive Number –  O número de dimensões do vetor.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalArrayGetLowerBoundSintaxe : nOk = SalArrayGetLowerBound ( aArray , nDim , nIndice )Descrição : Retorna o menor índice de um vetor.

Parâmetros :

aArray Array –  O nome do vetornDim Number –  O número da dimensão para pesquisar. A primeira dimensão é 1,a segunda 2 e assim por diante.

nIndice Receive Number –  O valor do menor índice do um vetor.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalArrayGetUpperBoundSintaxe : bOk =  SalArrayGetUpperBound ( aArray , nDim , nIndice )

Descrição : Retorna o maior índice de um vetor.

Parâmetros :aArray Array –  O nome do vetornDim Number –  O número da dimensão para pesquisar. A primeira dimensão é 1,

a segunda 2 e assim por diante.nIndice Receive Number –  O valor do maior índice de um vetor.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 341: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 341/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalArrayIsEmptySintaxe : bOk =  SalArrayIsEmpty ( aArray )Descrição : Determina se um vetor dinâmico contém dados.

Parâmetro :aArray Array –  O nome do vetor.

Valor de Retorno :bOk   é TRUE se o vetor não contém dados, ou seja, se estiver vazio, e FALSE se o vetor

 possuir dados.

Função : SalArrayMaxSintaxe : nValor = SalArrayMax ( aArray )Descrição : Retorna o valor do último elemento de um vetor.

Parâmetro :aArray Array –  O nome do vetor.

Valor de Retorno :nValor  é o valor do último elemento do vetor .

Função : SalArrayMinSintaxe : nValor = SalArrayMin ( aArray )

Descrição : Retorna o valor do primeiro elemento de um vetor.Parâmetro :aArray Array –  O nome do vetor.

Valor de Retorno :nValor  é o valor do primeiro elemento do vetor .

Função : SalArraySetUpperBoundSintaxe : bOk =  SalArraySetUpperBound ( aArray, nDimensao, nIndice )

Descrição : Define o índice para o último elemento do vetor. Use esta função para “resetar”um vetor, para informar ao Centura que o vetor não contém nenhum elemento.

Parâmetros :aArray Array –  O nome do vetor.nDimensao Number –  O número da dimensão.

A primeira dimensão é 1, a segunda 2 e assim por diante.nIndice Number –  O valor do último índice do vetor.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 342: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 342/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalArraySumSintaxe : nSoma = SalArraySum ( aArray )Descrição : Retorna a soma dos elementos de um vetor numérico.

Parâmetro :aArray Array –  O nome do vetor que terá seus elementos somados.

Valor de Retorno :nSoma é a soma de todos os elementos do vetor.

Função : SalBringWindowToTopSintaxe : bOk =  SalBringWindowToTop ( hWndJanela )Descrição : Traz a janela para a frente de todas as outras janelas.

Parâmetro :hWndJanela Window Handle –  O nome ou o handle da janela a ser mostrada na frente

das demais.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCenterWindow

Sintaxe : bOk =  SalCenterWindow ( hWndJanela )Descrição  : Centraliza uma janela. Se a janela for um top-level , o Centura centraliza baseando-se na área de trabalho.

Parâmetro :hWndJanela Window Handle - O handle ou o nome da janela a ser centralizada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalClearFieldSintaxe : bOk =  SalClearField ( hWndCampo )Descrição : Limpa o valor de um data field , combo box ou column da table window.

Parâmetro :hWndCampo Window Handle –  O handle ou o nome do objeto ( data field , combo box ou 

column ) que terá o seu valor apagado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 343: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 343/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalColorFromRGBSintaxe : nCor = SalColorFromRGB ( nVermelho , nVerde , nAzul )Descrição  : Compõe uma cor baseado nos valores numéricos definidos em nVermelho,nVerde e nAzul .

Parâmetros :nVermelho Number –  Um número entre 0 e 255.nVerde Number –  Um número entre 0 e 255.nAzul Number –  Um número entre 0 e 255.

Valor de Retorno :nCor  é a nova cor gerada.

Função : SalColorGet

Sintaxe : nCor = SalColorGet ( hWndObj , nIndiceCor )Descrição : Obtém a cor de uma determinada parte de um objeto.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto que você quer saber a cor.nIndiceCor Number –  A parte do objeto que você que saber a cor, é representada pelas

seguintes constantes : COLOR_IndexCellText, COLOR_IndexTransparent,COLOR_IndexWindow, COLOR_IndexWindowText.

Valor de Retorno :nCor  é a cor retornada, ela pode ser uma cor definida pelo usuário e pode também ser uma dascores já pré-definidas pelo Centura, estas cores são definidas nas constantes COLOR_*.Se você especificar no segundo parâmetro COLOR_IndexTransparent e esta cor não tiver sidodefinida, a função SalColorGet retornará COLOR_None.

Função : SalColorGetSysColorSintaxe : nCor = SalColorGetSysColor ( nIndiceCor )Descrição : Obtém uma cor do sistema.

Parâmetro :

nIndiceCor Number  –  É a cor de uma parte do objeto, é representada pelas seguintesconstantes do Centura : COLOR_SysWindow, COLOR_SysWindowFramee COLOR_SysWindowText.

Valor de Retorno :nCor  é a cor retornada, ela pode ser uma das cores já pré-definidas pelo Centura, estas coressão definidas nas constantes COLOR_*.

Função : SalColorSetSintaxe : bOk =  SalColorSet ( hWndObj , nIndiceCor , nCor )

Descrição : Define a cor de um objeto.

Page 344: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 344/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto que você deseja definir a

cor.

nIndiceCor Number  –   É a parte do objeto que você deseja definir a cor. Você podeutilizar uma das constantes do Centura para identificar a parte do objeto queterá sua cor alterada. As constantes podem ser:COLOR_IndexCellText,COLOR_IndexTransparent,COLOR_IndexWindow eCOLOR_IndexWindowText.

nCor Number –  É a cor a ser atribuída ao objeto. Pode ser uma cor definida pelousuário ou pode ser uma das cores já pré-definidas pelo Centura numa dasconstantes COLOR_*.Para desligar a cor transparente utilize COLOR_None.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalColorToRGBSintaxe : bOk =  SalColorToRGB ( nCor, nVermelho , nVerde , nAzul )Descrição : Decompõe uma cor em valores vermelho, verde e azul.

Parâmetros :nCor Number - A cor definida pelo usuário ou uma das cores já pré-definidas

 pelo Centura, estas cores são expressas nas constantes COLOR_*. Você não pode utilizar aqui as cores COLOR_Default, COLOR_None, e asconstantes COLOR_Sys*.

nVermelho Receive Number –  Um número entre 0 e 255 que representa a cor vermelha.nVerde Receive Number - Um número entre 0 e 255 que representa a cor verde.nAzul Receive Number - Um número entre 0 e 255 que representa a cor azul.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCompileAndEvaluateSintaxe  : nTipo = SalCompileAndEvaluate( sExp, nErro, nPosErro, nRet, sRet, dtRet,hWndRet, bErro, sContexto )Descrição : Avalia a expressão e retorna o seu valor um dos tipos de dados que são utilizadoscomo parâmetros, de acordo como o tipo de dado apropriado. SalCompileAndEvaluate

 permite que você obtenha o conteúdo de uma variável, mesmo sem que você saiba o nomedesta.

Parâmetros :sExp String –  A expressão a ser avaliada.

nErro Receive Number –  O número do erro, se for retornado algum.

Page 345: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 345/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nPosErro Receive Number –  A posição em sExp que ocorreu o erro, se ocorrer algum.nRet Receive Number  –   Este parâmetro terá algum valor se  sExp  retornar um

valor numérico.sRet Receive String - Este parâmetro terá algum valor se sExp retornar um valor

string.dtRet Receive Date/Time - Este parâmetro terá algum valor se  sExp retornar umvalor date/time.

hWndRet Receive Window Handle –  Este parâmetro terá algum valor se sExp retornarum handle.

 bErro Boolean –  Se este parâmetro for TRUE, o Centura não mostrará nenhumamensagem caso ocorra algum erro. Especifique TRUE caso a aplicação façao seu próprio tratamento de erro. Especifique FALSE para que o Centuramostre uma caixa de diálogo com a mensagem de erro, quando ocorrer um.

sContexto String  –   O ponteiro do contexto da execução, retornado pelas funçõesSalContextBreak ou SalContextCurrent.

Valor de Retorno :Se a função for executada com sucesso, nTipo  irá conter um valor que pode ser uma dasseguintes constantes : EVAL_Date, EVAL_Handle, EVAL_If, EVAL_Number, EVAL_Set,EVAL_String e EVAL_Template.

Função : SalContextBreakSintaxe : sContexto = SalContextBreak ( )Descrição  : Recupera o contexto do comando break  mais recentemente executado. Utilizeesta função com SalCompileAndEvaluate.

Nenhum Parâmetro. 

Função : SalContextCurrentSintaxe : sContexto = SalContextCurrent ( )Descrição  : Recupera o contexto de execução atual. Utilize esta função comSalCompileAndEvaluate.

Nenhum Parâmetro. 

Função : SalContextMenuSetPopupSintaxe : bOk =  SalContextMenuSetPopup ( hWndObj , sNomeMenu , nFlags )Descrição  : Define que um  popup menu  nomeado na seção Global Declarations  |  Named

 Menus  será automaticamente mostrado quando o objeto receber a mensagemSAM_ContextMenu.

Parâmetros :hWndObj Window Handle –  O handle do objeto de mais baixo nível que irá processar

as mensagens que o menu enviará.

sNomeMenu String –  O nome de um menu definido numa seção Named Menus do objeto

Page 346: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 346/580

Programando com o Centura Team Developer 2000

Página PAGE 582

ou do Global Declarations.nFlags Number  –   Utilize CM_TableCell para sobrepor o menu padrão mostrado

 pelo windows quando o mouse é apontado para um campo de edição ouuma célula de uma coluna da table window. Utilize Zero para que o menu

 padrão do windows seja mostrado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCreateWindowSintaxe  : hWndJanelaCriada = SalCreateWindow ( tJanela , hWndPai , Parametro1,Parametro2 , ..... )Descrição : Cria janelas dialog box, form window, MDI window e table window tipo top level  em tempo de execução, com o comportamento modeless.

Se você especificar um pai ( hWndPai ) , a janela criada será sempre mostrada por cima da janela pai. Ao minimizar ou fechar a janela pai, a janela filha é também minimizada oufechada.

Você pode também passar um número variável de parâmetros para a janela que está sendocriada com SalCreateWindow. Estes parâmetros são definidos na seção Window Parameters da janela que está sendo criada.

SalCreateWindow aceita que o primeiro parâmetro seja o nome da janela a ser criada outambém pode ser uma variável cujo seu conteúdo é o nome da jenela a ser criada. Neste casoSalCreateWindow não aceita parâmetros.

Parâmetros :tJanela Template ou String –  O nome da janela a ser criada.

Atenção : se você utilizar uma variável, não poderá passar parâmetros.hWndPai Window Handle  –   O handle ou o nome da janela pai. Especifique

hWndNULL para criar uma janela sem janela pai.Parametro1 Qualquer tipo de dado –  Um parâmetro opcional.Parametro2 Qualquer tipo de dado –  Um parâmetro opcional.

Valor de Retorno :

hWndJanelaCriada é o window handle da janela criada.

Função : SalCreateWindowExSintaxe  : hWndJanelaCriada = SalCreateWindowEx ( tJanela , hWndPai , nEsquerda ,nAcima , nLargura , nAltura , nFlags , Parametro1 , Parametro2 , ..... )Descrição  : Cria um dialog box,  form window ou table window como objeto filho de outrodialog box, form window ou barra de ferramentas, em tempo de execução.

Se você especificar um pai ( hWndPai  ) , a janela criada será sempre mostrada dentro da janela pai. Ao minimizar ou fechar a janela pai, a janela filha é também minimizada ou

fechada.

Page 347: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 347/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você pode também passar um número variável de parâmetros para a janela que está sendocriada com SalCreateWindowEx. Estes parâmetros são definidos na seção Window

 Parameters da janela que está sendo criada.

SalCreateWindowEx aceita que o primeiro parâmetro seja o nome da janela a ser criada outambém pode ser uma variável cujo seu conteúdo é o nome da jenela a ser criada. Neste casoSalCreateWindowEx não aceita parâmetros.

Parâmetros :tJanela Template ou String –  O nome da janela a ser criada.

Atenção : se você utilizar uma variável, não poderá passar parâmetros.hWndPai Window Handle  –   O handle ou o nome da janela pai. Especifique

hWndNULL para criar uma janela sem janela pai.nEsquerda e nAcima  Number - Posição da janela em unidades de form.

nLargura e nAltura  Number Tamanho da janela em unidades de form.nFlags Number - Você pode combinar estes flags com o operador “|”. 

CREATE_AsChild –  Cria a janela como filha da janela hWndPai.CREATE_Border –  Quando utilizado com CREATE_AsChild a janela

 possuirá uma borda.CREATE_Hidden –  Cria a janela mas não mostra-a.

Parâmetro1 Qualquer tipo de dado –  Um parâmetro opcional.Parâmetro2 Qualquer tipo de dado –  Um parâmetro opcional.

Valor de Retorno :hWndJanelaCriada é o window handle da janela criada.

Função : SalCursorClearSintaxe : bOk =  SalCursorClear ( hWndObj , nTipo )Descrição : Limpa o cursor de um objeto.

Parâmetros :hWndObj Window Handle –  O nome ou o handle de um objeto.nTipo Number –  O tipo do cursor, especifique uma destas constantes :

CURSOR_DisableDrop, CURSOR_DragDrop, CURSOR_Window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCursorSetSintaxe : bOk =  SalCursorSet ( hWndObj , tResource, nTipo )Descrição : Define o cursor de um objeto.

Parâmetros :hWndObj Window Handle –  O nome ou o handle de um objeto.

tResource Template –  Um ícone definido na seção Global Declarations | Resources do

Page 348: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 348/580

Programando com o Centura Team Developer 2000

Página PAGE 582

outline, ou um dos tipos de cursores providos pelo sistema operacional.CURSOR_Arrow,CURSOR_Cross,CURSOR_Ibeam,

CURSOR_Icon,CURSOR_Size,CURSOR_SizeNESW,CURSOR_SizeNS,CURSOR_SizeNWSE,CURSOR_SizeWE,CURSOR_UpArrow ouCURSOR_Wait.

nTipo Number –  O tipo do cursor, especifique uma destas constantes :CURSOR_DisableDrop, CURSOR_DragDrop ou CURSOR_Window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCursorSetFileSintaxe : bOk =  SalCursorSetFile ( hWndObj , sArquivo , nTipo )Descrição : Define o cursor para um determinado objeto.

Parâmetros :hWndObj Window Handle –  O nome ou o handle de um objeto.sArquivo String –  O nome de um cursor ou o nome de um arquivo de ícone.

nTipo Number –  O tipo do cursor, especifique uma destas constantes :CURSOR_DisableDrop, CURSOR_DragDrop ou CURSOR_Window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalCursorSetStringSintaxe : bOk =  SalCursorSetString ( hWndObj , sBuffer , nTipo )Descrição : Define o cursor de um objeto baseado numa string.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto.sBuffer String –  A imagem de um cursor ou um arquivo de ícone.nTipo Number –  O tipo do cursor, especifique uma destas constantes :

CURSOR_DisableDrop, CURSOR_DragDrop ou CURSOR_Window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 349: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 349/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalDateConstructSintaxe : dtData = SalDateConstruct ( nAno, nMes, nDia, nHora, nMinuto, nSegundo )Descrição : Retorna um valor date/time montado através dos parâmetros nAno, nMes, nDia,

nHora, nMinuto e  nSegundo. 

Observe que se um dos parâmetros tiver menos algarismos do que o esperado,SalDateConstruct completará com zeros à esquerda. Por exemplo, se nAno  for 99, dtData começará com o ano 0099.

Parâmetros :nAno Number –  número com 4 dígitos representando um ano.nMes Number –  número representando o mês, são válidos números de 01 até 12.nDia Number –  número representando o dia, são válidos números de 01 até 31.nHora Number –  número representando a hora, são válidos números de 00 até 23.nMinuto Number –  número representando os minutos, são válidos números de 00 até

59.nSegundo Number  –  número representando os segundos, são válidos números de 00

até 59.

Valor de Retorno :dtData é a nova data construída.

Função : SalDateCurrentSintaxe : dtDataHora = SalDateCurrent ( )Descrição : Retorna a data/hora atual do computador.

Nenhum Parâmetro. 

Valor de Retorno :dtDataHora é a data e a hora atual do computador.

Função : SalDateDaySintaxe : nDia = SalDateDay ( dtData )Descrição : Retorna o dia de um valor date/time, retorna – 1 se a data for inválida.

Parâmetro :dtData Date/Time –  O valor data.

Valor de Retorno :nDia é um número entre 1 e 31, ou  – 1 no caso do valor informado não corresponder a umadata válida.

Função : SalDateHourSintaxe : nHora = SalDateHour ( dtData )Descrição : Retorna a hora de um valor date/time, retorna – 1 se a data for inválida.

Page 350: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 350/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :dtData Date/Time –  O valor data.

Valor de Retorno :nHora é um número entre 0 e 23, ou  – 1 no caso do valor informado não corresponder a umadata válida.

Função : SalDateMinuteSintaxe : nMinuto = SalDateMinute ( dtData )Descrição : Retorna o minuto de um valor date/time, retorna – 1 se a data for inválida.

Parâmetro :dtData Date/Time –  O valor data.

Valor de Retorno :nMinuto é um número entre 0 e 59, ou – 1 no caso do valor informado não corresponder a umadata válida.

Função : SalDateMonthSintaxe : nMes = SalDateMonth ( dtData )Descrição : Retorna o mês de um valor date/time, retorna – 1 se a data for inválida.

Parâmetro :

dtData Date/Time –  O valor data.

Valor de Retorno :nMes é um número entre 0 e 12, ou  – 1 no caso do valor informado não corresponder a umadata válida.

Função : SalDateMonthBeginSintaxe : dtDataInicial = SalDateMonthBegin ( dtData )Descrição : Retorna a data inicial do mês da data passada como parâmetro. Por exemplo, sedtData for 25 de janeiro de 1999

Parâmetro :dtData Date/Time –  O valor data.

Valor de Retorno :nHora é um número entre 0 e 23, ou – 1 no caso do valor informado não corresponder a umadata válida.

Função : SalDateQuarterSintaxe : nQuarter = SalDateQuarter ( dtData )

Page 351: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 351/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição  : Retorna um número indicando o quadrimestre do ano ao qual a data passadacomo parâmetro se enquadra.

Parâmetro :

dtData Date/Time –  A data a ser analisada.

Valor de Retorno :nQuarter  poderá conter um número entre 1 e 4 indicando o quadrimestre do ano.

Função : SalDateQuarterBeginSintaxe : dtDataInicio = SalDateQuarterBegin ( dtData )Descrição : Retorna o primeiro dia do quadrimestre a que a data dtData pertence.

Parâmetro :

dtData Date/Time –  O valor indicando a data.

Valor de Retorno :dtDataInicio é o primeiro dia do quadrimestre.

Page 352: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 352/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalDateSecondSintaxe : nSegundos = SalDateSecond ( dtData )Descrição : Retorna um valor indicando os segundos da hora passada como parâmetro.

Parâmetro :dtData Date/Time –  O valor data.

Valor de Retorno : sSegundos  é um número entre 0 e 59, ou  – 1 no caso do valor informado em dtData  nãocorresponder a uma data válida.

Função : SalDateToStrSintaxe : nTamanho = SalDateToStr ( dtData , sData)Descrição : Converte um valor tipo date/time em seu correspondente do tipo string. Se o valor

em dtData não corresponder a um valor válido date/time, nTamanho será – 1.

Parâmetros :dtData Date/Time –  O valor data a ser convertido para string.sData Receive String  –   A data em formato string. ( AAAA-MM-DD-

HH:MM:SS.TTTTTT )

Valor de Retorno :nTamanho é o tamanho do conteúdo de sData.

Função : SalDateWeekBeginSintaxe : dtInicioSemana = SalDateWeekBegin ( dtData )Descrição : Retorna a data da segunda-feira anterior à data especificada em dtData.

Parâmetro :dtData Date/Time –  Um valor date/time.

Valor de Retorno :dtInicioSemana  é a data da segunda-feira anterior à data em dtData. Se esta for uma datainválida, dtInicioSemana será igual a DATETIME_Null.

Função : SalDateWeekdaySintaxe : nDiaSemana = SalDateWeekday ( dtData )Descrição  : Retorna o dia da semana em um valor entre 0 e 6. Retorna  – 1 se o valor emdtData for inválido ou DATETIME_Null.

Parâmetro :dtData Date/Time –  A data a ser analisada.

Valor de Retorno :

Page 353: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 353/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nDiaSemana é um número entre 0 e 6. Sendo que 0 (zero) representa sábado, 1 representadomingo e assim por diante.

Função : SalDateYearSintaxe : nAno = SalDateYear ( dtData )Descrição : Retorna o ano da data informada. Se a data for um valor inválido, retorna – 1.

Parâmetro :dtData Date/Time –  Um valor para a data.

Valor de Retorno :nAno é o ano da tada informada.

Função : SalDateYearBeginSintaxe : dtInicioAno = SalDateYearBegin ( dtData )Descrição  : Retorna a data do primeiro dia do ano. Retorna  – 1 se a data informada forinválida.

Parâmetro :dtData Date/Time –  O valor da data.

Valor de Retorno :dtInicioAno corresponde à data do primeiro dia do ano.

Função : SalDDEAddAtomSintaxe : nAtomo = SalDDEAddAtom ( sStr )Descrição  : Adiciona uma string à tabela global de átomos, criando um novo átomo paraidentificar a string. Se a string a ser adicionada à tabela já existir, o contador de átomos seráacrescido de um.

Parâmetro :sStr String –  A string a ser adicionada à tabela global de átomos.

Valor de Retorno :

Se a função for concluída com sucesso, nAtomo é o valor do novo átomo global. Se a stringem sStr  já existir, nAtomo é o valor do átomo existente. Em caso de erro, nAtomo é zero.

Função : SalDDEAllocSintaxe : nMemoria = SalDDEAlloc ( )Descrição : Aloca um handle de memória para :  Informações nas mensagens EM_DDE_Data ou WM_DDE_Poke.  Opções numa mensagem WM_DDE_Advise.  Uma string de comando numa mensagem WM_DDE_Execute.

Page 354: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 354/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Nenhum Parâmetro.

Valor de Retorno :nMemoria é o handle global de memória, se a função for executada com sucesso, e zero, se

falhar.

Função : SalDDEDeleteAtomSintaxe : nContador = SalDDEDeleteAtom ( nAtomo )Descrição  : Diminui o contador de átomos. Se o contador atingir zero, o átomo e a stringassociada serão apagados da tabela global de átomos.Quando sua aplicação for encerrada, utilize esta função para cada chamada com sucesso àfunção SalDDEAddAtom que você tiver feito.

Parâmetro :

nAtomo Number –  O átomo a ser apagado.

Valor de Retorno :nContador   é zero se a função for executada com sucesso e é igual a nAtomo  se a funçãofalhar.

Função : SalDDEExtractSintaxe  : bOk =  SalDDEExtract ( nwParam  , nlParam  , hWndRemetente , nllParam  ,nhlParam )Descrição  : Obtém o window handle do remetente e o valor do parâmetro lParam  que foi

recebido.

Parâmetros :nwParam  Number –  O parâmetro, tipo word, da mensagem DDE.nlParam  Number –  O parâmetro, tipo long, da mensagem DDE.hWndRemetente

Receive Window Handle –  O window handle de quem enviou a mensagem.

nllParam  Receive Number –  O valor ( low-order ) da variável lParam.nhlParam  Receive Number –  O valor ( high-order ) da variável lParam.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEExtractCmdSintaxe : bOk =  SalDDEExtractCmd ( nComando , sComando , nTamanho )Descrição : Extrai o comando representado pelo valor da variável lParam numa mensagemWM_DDE_Execute.

Parâmetros :nComando Number –  O handle de memória para o comando.sComando Receive String –  O comando.nTamanho Number –  O tamanho máximo do comando.

Page 355: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 355/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEExtractDataTextSintaxe : bOk =  SalDDEExtractDataText ( nData , nStatus , sDado , nTamanho )Descrição : Extrai o valor contido na variável lParam numa mensagem WM_DDE_Data ouWM_DDE_Poke.

Parâmetros :nDado Number –  O handle do objeto que contém o dado ou outra informação.nStatus Receive Number –  O status.sDado Receive String –  O dado.nTamanho Number –  O tamanho do buffer de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEExtractOptionsSintaxe  : SalDDEExtractOptions ( nwParam  , nlParam  , hWndRemetente , nllParam  ,nhlParam )Descrição  : Obtém o window handle do remetente e o valor do parâmetro lParam  que foirecebido.

Parâmetros :nwParam  Number –  O parâmetro, tipo word, da mensagem DDE.nlParam  Number –  O parâmetro, tipo long, da mensagem DDE.hWndRemetente

Receive Window Handle –  O window handle de quem enviou a mensagem.

nllParam  Receive Number –  O valor ( low-order ) da variável lParam.nhlParam  Receive Number –  O valor ( high-order ) da variável lParam.

Função : SalDDEFindAtom

Sintaxe : nAtomo = SalDDEFindAtom ( sStr )Descrição : Procura na tabela global de átomos e retorna o átomo associado a string em sStr .

Parâmetro :sStr String –  A string que será procurada.

Valor de Retorno :nAtomo  é o átomo global associado à string  sStr . nAtomo  é zero se não for encontrado natabela.

Função : SalDDEFree

Page 356: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 356/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : nHandle = SalDDEFree ( nMemoria )Descrição : Libera um handle de memória que foi alocado pela função SalDDEAlloc.Quando sua aplicação for encerrada, utilize esta função para cada chamada com sucesso àfunção SalDDEAlloc que você tiver feito.

Parâmetro :nMemoria Number –  O handle de memória a ser liberado.

Valor de Retorno :nHandle é zero se a função for executada com sucesso e é igual ao valor em nMemoria se afunção falhar.

Função : SalDDEGetAtomNameSintaxe : nTamAtomo = SalDDEGetAtomName ( nAtomo , sNomeDoAtomo , nTamanho )

Descrição : Obtém a string associada a um átomo.

Parâmetros :nAtomo Number –  O número do átomo.sNomeDoAtomo

Receive String –  A string associada ao átomo.

nTamanho Number –  Especifica o tamanho máximo de sNomeDoAtomo.

Valor de Retorno :nTamAtomo é o tamanho da string retornada se a função for executada com sucesso e zero sea função falhar.

Função : SalDDEGetExecuteStringSintaxe : sComando = SalDDEGetExecuteString ( nlParam )Descrição : Uma aplicação servidora utiliza esta função para obter o comando enviado pelocliente. Esta função converte o valor de lParam na mensagem SAM_DDE_ClientExecute,

 para um valor string, e retorna o valor da string em sComando.

Parâmetro :nlParam  Number –  O valor de lParam na mensagem SAM_DDE_ClientExecute.

Valor de Retorno : sComando é o comando enviado ao servidor pela aplicação cliente.

Função : SalDDEPostSintaxe : nRetorno = SalDDEPost ( hWndObj , nMensagem , hWndRemetente , nl lParam  ,nhlParam )Descrição  : Envia todas as mensagens WM_DDE_*, com exceção das mensagensWM_DDE_Initiate e WM_DDE_Ack.A função SalDDEPost coloca uma mensagem na filha de mensagens do objeto, permitindoque este processe as mensagens que já estiverem na fila. A função SalDDEPost retorna semesperar pelo processamento da mensagem no objeto que a recebeu.

Page 357: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 357/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndObj Window Handle –  O handle do objeto que recebe a mensagem.nMensagem Number –  A mensagem.

hWndRemetente Window Handle –  O handle de quem está enviando a mensagem.

nllParam  Receive Number –  O valor ( low-order ) da variável lParam enviada com amensagem.

nhlParam  Receive Number –  O valor ( high-order ) da variável lParam enviada com amensagem.

Valor de Retorno :nRetorno  é um valor diferente de zero se a função for executada com sucesso e zero se afunção falhar.

Função : SalDDERequestSintaxe : bOk =  SalDDERequest ( hWndCliente, sServiço, sTopico, sItem, nTimeout, sDado)Descrição  : Uma aplicação cliente utiliza esta função para solicitar ao servidor o envio deinformação.

Parâmetros :hWndCliente Window Handle  –  O handle da aplicação cliente, associado a um serviço,

tópico e item.sServiço String –  O nome do serviço DDE.

sTopico String –  O nome do tópico DDE.sItem String –  O nome do item DDE.nTimeOut Number –  O valor do tempo limite de espera em milisegundos.sDado Receive String –  Uma variável string ou um objeto na aplicação cliente que

receberá os dados. Se for um objeto, este precisa ter condições de receberinformações ( como por exemplo, um data field , column, multiline text  oucombo box ), além de ter sido definido um tipo de dado compatível com otipo de dado da string.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalDDESendSintaxe  : nRetorno = SalDDESend (hWndReceptor, nMsg, hWndRemetente, nllParam,nhlParam )Descrição  : Envia uma mensagem WM_DDE_Ack em resposta à mensagemWM_DDE_Initiate. Diferente da função SalDDEPost, a função SalDDESend não coloca amensagem na fila de mensagens do objeto, ou seja, ela faz um envio imediato da mensagem,não retornando até que o processamento da mesma seja encerrado.

Parâmetros :

Page 358: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 358/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndReceptor

Window Handle –  O handle do objeto que recebe a mensagem.

nMensagem Number –  O número da mensagem.hWndRemete

nte

Window Handle –  O handle do objeto que está enviando a mensagem.

nllParam  Receive Number - O valor ( low-order ) da variável lParam enviada com amensagem.

nhlParam  Receive Number - O valor ( high-order ) da variável lParam enviada com amensagem.

Valor de Retorno :nRetorno é o valor retornado pelo receptor da mensagem.

Função : SalDDESendAll

Sintaxe : nRetorno = SalDDESendAll ( nMsg , hWndRemetente , nllParam , nhlParam )Descrição  : Distribui a mensagem WM_DDE_Initiate e não retorna até que todos osreceptores a tenham processado.

Parâmetros :nMsg Number –  A mensagem.hWndRemetente

Window Handle –  O handle do objeto que está enviando a mensagem.

nllParam  Receive Number - O valor ( low-order ) da variável lParam enviada com amensagem.

nhlParam  Receive Number - O valor ( high-order ) da variável lParam enviada com a

mensagem.

Valor de Retorno :nRetorno é um valor diferente de zero se a função for executada com sucesso e igual a zero sea função falhar.

Função : SalDDESendExecuteSintaxe  : bOk =  SalDDESendExecute ( hWndCliente, sServico, sTopico, sItem, nTimeout,sCmd )Descrição  : A aplicação cliente utiliza esta função para enviar a mensagemWM_DDE_Execute para o servidor.

Parâmetros :hWndCliente Window Handle  –   O handle do objeto cliente associado com o serviço,

tópico e item DDE.sServico String –  O serviço DDE.sTopico String –  O nome do tópico DDE.sItem String –  O nome do item DDE.nTimeout Number –  O valor do tempo limite de espera em milisegundos.sCmd String –  O comando.

Page 359: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 359/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalDDESendToClientSintaxe : bOk =  SalDDESendToClient ( hWndServidor , sDado , nIdCliente , nTimeout )Descrição : Uma aplicação servidora utiliza esta função para enviar informações à aplicaçãocliente.

Parâmetros :hWndServidor

Window Handle  –  O handle do objeto associado ao serviço, tópico e itemDDE.

sDado String –  A informação a ser enviada ao cliente.nIdCliente Number –  O handle do cliente convertido para um valor numérico.

Para uma conversação tipo hot link, especifique zero. O Centura atualizará

todas as aplicações que tiverem estabelecido uma comunicação tipo hotlink.Para uma conversação tipo cold link, o servidor recebe a mensagemSAM_DDE_ClientRequest ( em resposta à chamada da funçãoSalDDERequest pela aplicação cliente ). O valor da variável lParam, namensagem SAM_DDE_ClientRequest, identifica o cliente a receber asinformações contidas em sDado.

nTimeout Number –  O valor do tempo limite de espera em milisegundos.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalDDESetCmdSintaxe : bOk =  SalDDESetCmd ( nhlParam , sCmd )Descrição : Associa um comando ao valor referente à porção high-order  da variável lParam numa mensagem SAM_DDE_Execute.

Parâmetros :nhlParam  Number  –   O handle para o bloco de comando que contém a string do

comando.sCmd String –  O comando a ser executado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDESetDataTextSintaxe : bOk =  SalDDESetDataText ( nData , nStatus , sDado )Descrição : Associa um comando ao valor referente à porção low-order  da variável lParam numa mensagem SAM_DDE_Data ou WM_DDE_Poke.

Parâmetros :nData Number –  O handle para o bloco de comando que contém o dado ou outra

Page 360: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 360/580

Programando com o Centura Team Developer 2000

Página PAGE 582

informação.nStatus Number –  O código de status.sDado String –  O valor a ser associado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDESetOptionsSintaxe : bOk =  SalDDESetOptions ( nOpcoes , nFlags , nFormato )Descrição : Associa um comando ao valor referente à porção low-order  da variável lParam na mensagem SAM_DDE_Advise.

Parâmetros :nOpcoes Number  –   O handle para o objeto que especifica como os dados serão

enviados.nFlags Number –  O código de status.nFormato Number –  O formato do dado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEStartServerSintaxe : bOk =  SalDDEStartServer ( hWndServidor , sServico , sTopico , sItem )Descrição : Uma aplicação servidora utiliza esta função para avisar às aplicações clientes que

ela está pronta para receber conexões. A aplicação servidora deve utilizar esta função, antesque as aplicações cliente tentem efetuar a conexão.

Parâmetros :hWndServidor

Window Handle  –   O window handle da aplicação servidora, associada àaplicação, ao tópico e ao item DDE.

sServico String –  O serviço DDE.sTopico String –  O tópico DDE.sItem String –  O nome do item DDE.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEStartSessionSintaxe : bOk =  SalDDEStartSession ( hWndObj, sServiço, sTópico, sItem, nTimeout )Descrição : Uma aplicação cliente utiliza esta função para iniciar uma conversação tipo hotlink com o servidor.

Parâmetros :hWndObj Window Handle  –   O handle ( ou o nome ) de um objeto que pode

armazenar valores ( como um data field , column, multiline text   ou umcombo box )

Page 361: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 361/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Se a função SalDDEStartSession for bem sucedida, a aplicação servidoraatualiza o objeto associado ao handle hWndObj  com o valor de sItem. Amensagem SAM_DDE_DataChange é enviada ao objeto hWndObj quandoo valor do objeto for alterado.

sServiço String –  O serviço DDE.sTópico String –  O nome do tópico DDE.sItem String –  O nome do item DDE.nTimeOut Number –  O valor do tempo limite de espera em milisegundos.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEStopServerSintaxe : bOk =  SalDDEStopServer ( hWndServidor )

Descrição : O servidor utiliza esta função para encerrar as atividades de um servidor DDE.Esta função deve ser chamada o mesmo número de vezes que a função SalDDEStartServer foiexecutada com sucesso.

Parâmetro :hWndServidor

Window Handle –  O handle do servidor associado ao serviço, tópico e itemDDE.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDDEStopSessionSintaxe : bOk =  SalDDEStopSession ( hWndDest )Descrição : Uma aplicação cliente utiliza esta função para encerrar uma conversação tipo hotlink com o servidor. Esta função deve ser chamada o mesmo número de vezes que a funçãoSalDDEStartSection foi executada com sucesso.

Parâmetro :hWndDest Window Handle –  O handle ou o nome do objeto na aplicação cliente, que

está associado a um serviço, tópico e item DDE.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDestroyWindowSintaxe : bOk =  SalDestroyWindow ( hWndObj )Descrição : Destrói um  form window, dialog box, top-level table window ou mdi criado comSalCreateWindow.

Parâmetro :hWndObj Window Handle –  O handle ou o nome do objeto a ser destruído.

Page 362: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 362/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDisableWindowSintaxe : bOk =  SalDisableWindow ( hWndObj )Descrição : Desabilita o acesso do teclado e do mouse a um objeto.O texto do objeto ficará cinza, e o objeto não poderá receber o foco.

Parâmetro :hWndObj Window Handle –  O nome ou o handle do objeto a ser desabilitado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDisabelWindowAndLabelSintaxe : bOk =  SalDisableWindowAndLabel ( hWndObj )Descrição : Desabilita o acesso do teclado e do mouse a um objeto.O texto do objeto e o background text  que o preceder no outline ficarão cinza, e o objeto não

 poderá receber o foco.

Parâmetro :hWndObj Window Handle - O nome ou o handle do objeto a ser desabilitado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDlgChooseColorSintaxe : bOk =  SalDlgChooseColor ( hWndPai , nCor )Descrição : Mostra o diálogo de cores do windows para que o usuário escolha ou defina umanova cor.

Parâmetros :hWndPai Window Handle –  O nome ou o handle da janela pai.nCor Number –  O valor RGB da cor que o usuário escolheu.

Valor de Retorno :bOk  é TRUE se o usuário escolheu uma cor e saiu da janela clicando no botão Ok , e FALSEse o usuário saiu da janela de cores clicando no botão Cancel.

Função : SalDlgChooseFontSintaxe : bOk =  SalDlgChooseFont ( hWndPai , sNomeFonte, nTamanho, nMelhoramento,nCor )Descrição : Mostra o diálogo de fontes do Windows para que o usuário escolha uma fonte,tamanho, melhoramento de fonte ou cor entre as que estão disponíveis.

Page 363: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 363/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndPai Window Handle –  O nome ou o handle da janela pai.sNomeFonte Receive String –  O nome da fonte escolhida pelo usuário.nTamanho Receive Number –  O tamanho da fonte escolhido pelo usuário.

nMelhoramento Receive Number  –   O melhoramento de fonte escolhido pelo usuário(negrito, itálico...).nCor Receive Number –  A cor escolhida pelo usuário.

Valor de Retorno :bOk   é TRUE se o usuário saiu da caixa de diálogo clicando no botão Ok , e FALSE se ousuário saiu da janela clicando no botão Cancel.

Função : SalDlgOpenFileSintaxe  : bOk =  SalDlgOpenFile ( hWndPai, sTitulo, sFiltro, nFiltro, nIndice, sArquivo,

sPath )Descrição  : Mostra a caixa de diálogo do Windows onde o usuário poderá escolher umarquivo para ser aberto.

Parâmetros :hWndPai Window Handle –  O nome ou o handle do objeto pai.sTitulo String –  O título que será mostrado na caixa de diálogo.sFiltro String  –  Um vetor com os filtros e suas descrições. Cada filtro precisa ter

uma descrição que deve vir no item imediatamente anterior no vetor. Porexemplo, o usuário poderá escolher o tipo de arquivo fonte do Centura queele deseja abrir, carregue o vetor de filtros assim:asFiltro [0] = “Fonte Normal” asFiltro [1] = “*.app” asFiltro [2] = “Fonte Biblioteca” asFiltro [3] = “*.apl” asFiltro [4] = “Fonte Padrão Texto” asFiltro [5] = “*.apt” 

nFiltro Number –  O número de elementos em sFiltro. No exemplo acima o vetor de filtros possui 6 elementos. Para que os trêsfiltros sejam mostrados especifique o valor 6 em nFiltro.Você pode limitar o número de filtros mostrados. Por exemplo, para mostrarapenas os dois primeiros filtros definidos acima ( *.app e *.apl ) especifiqueem nFiltro o valor 4.

nIndice Number  –   Refere-se ao filtro escolhido pelo usuário. Por exemplo, se ousuário escolheu o segundo tipo de arquivos carregados no filtro, *.apl,nIndice é 2.

sArquivo Receive String –  É o nome do arquivo que o usuário escolheu.sPath Receive String  –  É o nome do arquivo que o usuário escolheu com o path

completo.

Valor de Retorno :bOk  é TRUE se o usuário escolher um arquivo e clicar no botão Ok . FALSE se o usuário

clicar no botão Cancel, não escolhendo nenhum arquivo.

Page 364: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 364/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalDlgSaveFileSintaxe : bOk =  SalDlgSaveFile ( hWndPai, sTitulo, sFiltro, nFiltro, nIndice, sFile, sPath )

Descrição  : Mostra a caixa de diálogo do Windows onde o usuário poderá especificar umnome e path para salvar um arquivo.

Parâmetros :hWndPai Window Handle –  O nome ou o handle do objeto pai.sTitulo String –  O título que será mostrado na caixa de diálogo.sFiltro String  –  Um vetor com os filtros e suas descrições. Cada filtro precisa ter

uma descrição que deve vir no item imediatamente anterior no vetor. Porexemplo, o usuário poderá escolher o tipo de arquivo fonte do Centura queele deseja salvar, então carregue o vetor de filtros assim :asFiltro [0] = “Fonte Normal” 

asFiltro [1] = “*.app” asFiltro [2] = “Fonte Biblioteca” asFiltro [3] = “*.apl” asFiltro [4] = “Fonte Padrão Texto” asFiltro [5] = “*.apt” 

nFiltro Number –  O número de elementos em sFiltro. No exemplo acima o vetor de filtros possui 6 elementos. Para que os trêsfiltros sejam mostrados especifique o valor 6 em nFiltro.Você pode limitar o número de filtros mostrados. Por exemplo, para mostrarapenas os dois primeiros filtros definidos acima ( *.app e *.apl ) especifiqueem nFiltro o valor 4.

nIndice Number  –   Refere-se ao filtro escolhido pelo usuário. Por exemplo, se ousuário escolheu o segundo tipo de arquivos carregados no filtro, *.apl,nIndice é 2.

sArquivo Receive String –  É o nome do arquivo que o usuário escolheu.sPath Receive String  –  É o nome do arquivo que o usuário escolheu com o path

completo.

Valor de Retorno :bOk   é TRUE se o usuário escolher um arquivo eclicar no botão OK . FALSE se o usuárioclicar no botão Cancel, não escolhendo nenhum arquivo.

Função : SalDragDropDisableDropSintaxe : bOk =  SalDragDropDisableDrop ( )Descrição : Desabilita o recurso de soltar  enquanto estiver em modo de arrastar-e-soltar .

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 365: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 365/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalDragDropEnableDropSintaxe : bOk =  SalDragDropEnableDrop ( )Descrição : Habilita o recurso de soltar  enquanto estiver em modo de arrastar-e-soltar .

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDragDropGetSourceSintaxe : bOk =  SalDragDropGetSource ( hWndObj, nX, nY )Descrição  : Obtém o handle do objeto origem e a localização do mouse no objeto quandoiniciou o modo arrastar-e-soltar .

Parâmetros :hWndObj Receive Window Handle –  O handle do objeto origem.

Os objetos que podem ser objeto origem são : combo box, multiline text ,data field , picture, list box e table window.

nX Receive Number –  A posição do mouse no eixo X.nY Receive Number - A posição do mouse no eixo Y.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDragDropGetTargetSintaxe : bOk =  SalDragDropGetTarget ( hWndObj, nX, nY )Descrição : Obtém o handle do objeto destino e a localização do mouse no objeto.

Parâmetros :hWndObj Receive Window Handle –  O handle do objeto destino.nX Receive Number –  A posição do mouse no eixo X.nY Receive Number - A posição do mouse no eixo Y.

Valor de Retorno :bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDragDropStartSintaxe : bOk =  SalDragDropStart ( hWndOrigem )Descrição : Inicia o modo arrastar-e-soltar .

Parâmetro :hWndOrigem Window Handle –  O handle ou o nome do objeto origem.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 366: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 366/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalDragDropStopSintaxe : bOk =  SalDragDropStop ( )Descrição : Finaliza o modo arrastar-e-soltar .

Nenhum Parâmetro :

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDrawMenuBarSintaxe : bOk =  SalDrawMenuBar ( hWndJanela )Descrição : Redesenha o menu de um  form window, top-level table window ou mdi window.Utilize esta função quando você quiser que as condições especificadas na seção Enable When 

sejam reavaliadas, habilitando ou desabilitando o menu.

Parâmetro :hWndJanela Window Handle  –   O nome ou o handle da janela que terá o menu

redesenhado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDropFilesAcceptFiles

Sintaxe : bOk =  SalDropFilesAcceptFiles ( hWndObj , bAceita )Descrição  : Indica quando um objeto poderá receber arquivos vindos do Gerenciador deArquivos ou Windows Explorer.

Parâmetros :hWndObj Window Handle –  O nome ou o handle do objeto.

 bAceita Boolean –  Especifica quando o objeto hWndObj pode receber arquivos doGerenciador de Arquivos ou Windows Explorer.O comportamento padrão para pictures editáveis é TRUE, para os demaisobjetos o padrão é FALSE.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalDropFilesQueryFilesSintaxe : nArquivos = SalDropFilesQueryFiles ( hWndOrigem , sArquivos )Descrição  : Obtém os nomes dos arquivos que estão sendo arrastados do Gerenciador deArquivos ou do Windows Explorer para o objeto hWndOrigem. O recebimento da mensagemSAM_DropFiles indica que o usuário arrastou arquivos para o objeto hWndOrigem.

Parâmetros :

Page 367: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 367/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndOrigem Window Handle –  O nome ou o handle do objeto.sArquivos Array String –  Um vetor com os nomes dos arquivos

Valor de Retorno :

nArquivos é a quantidade de arquivos que está sendo arrastada para o objeto.

Função : SalDropFilesQueryPointSintaxe : bOk =  SalDropFilesQueryPoint ( hWndObjeto , nX, nY )Descrição  : Encontra a posição do mouse no objeto no momento em que o usuário arrastouarquivos para o objeto. O recebimento da mensagem SAM_DropFiles indica que o usuárioarrastou arquivos para o objeto hWndOrigem.

Parâmetros :hWndObjeto Receive Window Handle –  O handle do objeto.

nX Receive Number –  A posição do mouse no eixo X.nY Receive Number - A posição do mouse no eixo Y.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditCanCopyToSintaxe : bOk =  SalEditCanCopyTo ( )Descrição  : Esta função retorna TRUE se a picture editável está com o foco e possui umarquivo que pode ser copiado para um arquivo. Você pode usar esta função na seção  Enable

When do item de menu Copiar Para....

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a picture editável está com o foco e possui um objeto, caso contrário, bOk  éFALSE.

Função : SalEditCanCutSintaxe : bOk =  SalEditCanCut ( )

Descrição  : Esta função retorna TRUE se uma picture editável, o texto num data field ,multiline text  ou coluna da table window estiver com seu conteúdo selecionado.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se os dados estiverem selecionados. FALSE se a nada estiver selecionado.

Função : SalEditCanPasteSintaxe : bOk =  SalEditCanPaste ( )

Page 368: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 368/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição  : Esta função retorna TRUE se os dados na área de transferência puderem sercopiados para o objeto com o foco. Você pode usar esta função na seção  Enable When  doitem de menu Colar .

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se os dados na área de transferência puderem ser copiados para o objeto com ofoco e FALSE se não puder.

Função : SalEditCanPasteFromSintaxe : bOk =  SalEditCanPasteFrom ( )Descrição : Esta função retorna TRUE se uma picture editável estiver com o foco.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se uma picture editável estiver com o foco, e FALSE em caso contrário.

Função : SalEditCanUndoSintaxe : bOk =  SalEditCanUndo ( )Descrição  : Esta função retorna TRUE se a edição feita num data field , multiline text   oucoluna da table window pode ser desfeita.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a edição feita pode ser desfeita, bOk  é FALSE quando a edição não pode serdesfeita.

Função : SalEditClearSintaxe : bOk =  SalEditClear ( )Descrição : Apaga o texto selecionado num data field , multiline text  ou coluna de uma table

window com o foco.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditCopySintaxe : bOk =  SalEditCopy ( )Descrição : Copia o texto selecionado para a área de transferência.

Nenhum Parâmetro. 

Page 369: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 369/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditCopyStringSintaxe : bOk =  SalEditCopyString ( sTexto )Descrição : Copia uma string como texto para a área de transferência .

Parâmetro :sTexto String –  A string a ser copiada para a área de transferência.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditCopyToSintaxe : bOk =  SalEditCopyTo ( )Descrição : Copia um objeto de um arquivo para um objeto picture. O foco precisa estar noobjeto picture.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditCutSintaxe : bOk =  SalEditCut ( )Descrição : Recorta o texto selecionado no data field , multiline text , coluna da table window ou conteúdo de um objeto picture, colocando-o na área de transferência.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditPasteSintaxe : bOk =  SalEditPaste ( )Descrição : Cola o conteúdo da área de transferência no data field , multiline text , coluna datable window ou picture com o foco.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 370: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 370/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalEditPasteFromSintaxe : bOk =  SalEditPasteFrom ( )Descrição : Copia um arquivo para um objeto picture editável.Esta função mostra a caixa de diálogo “Paste From” onde o usuário pode escolher um

arquivo para ser colado na picture.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditPasteStringSintaxe : bOk =  SalEditPasteString ( sTexto )Descrição : Cola o conteúdo da área de transferência no formato texto.

Parâmetro :sTexto Receive String  –   A variável que irá receber o conteúdo da área de

transferência.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEditUndoSintaxe : bOk =  SalEditUndo ( )

Descrição  : Desfaz a última edição realizada no objeto data field , multiline text , coluna datable window ou picture.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEnableWindowSintaxe : bOk =  SalEnableWindow ( hWndObj )

Descrição : Habilita o mouse e o teclado para entrada de dados no objeto.

Parâmetro :hWndObj Window Handle –  O nome ou o handle do objeto que será habilitado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 371: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 371/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalEnableWindowAndLabelSintaxe : bOk =  SalEnableWindowAndLabel ( hWndObj )Descrição : Habilita o mouse e o teclado para entrada de dados no objeto, habilita também obackground text  referente a este objeto.

Parâmetro :hWndObj Window Handle –  O nome ou o handle do objeto que será habilitado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalEndDialogSintaxe : bOk =  SalEndDialog ( hWndDlg , nRetorno )Descrição : Destrói o dialog box e retorna a execução para a linha de código imediatamente

 posterior à chamada de SalModalDialog.

Parâmetros :hWndDlg Window Handle –  É o nome ou o handle do dialog box a ser destruído.nRetorno Number –  É o valor de retorno da função SalModalDialog.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileClose

Sintaxe : bOk =  SalFileClose ( hArquivo )Descrição : Fecha um arquivo.

Parâmetro :hArquivo Receive File Handle  –   O handle do arquivo que será fechado. Quando a

função é executada o valor deste handle passa a ser nulo.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileCopySintaxe : nStatus = SalFileCopy ( sPathOrigem , sPathDestino, bOperacao )Descrição : Copia o conteúdo de um arquivo para outro.

Parâmetros :sPathOrigem String –  O path completo do arquivo origem.sPathDestino String –  O path completo do arquivo destino.

 bOperação Boolean  –   Quando especificado TRUE, o arquivo origem é gravado porcima do arquivo destino, caso este já exista. Quando o arquivo já existe ebOperacao  é especificado FALSE, a função SalFileCopy não realiza acópia, retornando a constante FILE_CopyExist.

Page 372: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 372/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :Dependendo do sucesso ou não da cópia, nStatus  assume um dos seguintes valores :FILE_CopyDest, FILE_CopyExist, FILE_CopyOK, FILE_CopyRead, FILE_CopySrc ou

FILE_CopyWrite.

Função : SalFileCreateDirectorySintaxe : bOk =  SalFileCreateDirectory ( sDiretorio )Descrição : Cria um diretório.

Parâmetro :sDiretorio String –  O nome completo do diretório a ser criado.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileGetCSintaxe : bOk =  SalFileGetC ( hArquivo , nCarac )Descrição  : Retorna o próximo caractere de um arquivo aberto ( hArquivo  ). Você precisautilizar a função SalFileGetChar caso o arquivo contenha caracteres não ASCII, ou caracteres16-bits.

Parâmetros :hArquivo File Handle –  O handle de um arquivo aberto.

nCarac Receive Number –  o próximo caracter do arquivo.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função não conseguir ler o

 próximo caractere do arquivo, ou se o handle informado em hArquivo for inválido.

Função : SalFileGetCharSintaxe : nCaractere = SalFileGetChar ( hArquivo )Descrição : Retorna o próximo caractere de um arquivo aberto ( hArquivo ).

Parâmetro :hArquivo File Handle –  O handle de um arquivo aberto,.

Valor de Retorno :nCaractere  é um número que representa um caractere ASCII. Quando SalFileGetCharencontra o final do arquivo, nCaractere é – 1.

Função : SalFileGetCurrentDirectorySintaxe : bOk =  SalFileGetCurrentDirectory ( sPath )Descrição : Obtém o path completo do diretório de trabalho atual.

Page 373: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 373/580

Page 374: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 374/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hArquivo Receive File Handle –  O handle do arquivo que será aberto.sArquivo String - O nome do arquivo que será aberto, criado ou apagado.

nEstilo Number  –  Uma constante que especifica o estilo em que o arquivo deveráser aberto. nEstilo pode ser uma das constantes OF_* definidas no Centura.Você pode utilizar mais de uma constante dispondo do operador bitwise “|”.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileOpenExtSintaxe : bOk =  SalFileOpenExt ( hArquivo , sArquivo , nEstilo , sAbrir )Descrição : Abre, cria ou apaga um arquivo. Arquivos com nomes longos (até 260 caracteres)

são suportados.

Parâmetros :hArquivo Receive File Handle –  O handle do arquivo que será aberto.sArquivo String - O nome do arquivo que será aberto, criado ou apagado.nEstilo Number  –  Uma constante que especifica o estilo em que o arquivo deverá

ser aberto. nEstilo pode ser uma das constantes OF_* definidas no Centura.Você pode utilizar mais de uma constante dispondo do operador bitwise “|”.

sAbrir Receive String –  informação utilizada para abrir novamente o arquivo.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFilePutCSintaxe : bOk =  SalFilePutC ( hArquivo , nCaractere )Descrição : Grava um caractere num arquivo aberto.

Parâmetros :hArquivo File Handle –  O handle do arquivo.nCaractere Number –  O valor numérico do caractere que será gravado no arquivo.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se a função não conseguirgravar no arquivo.

Função : SalFilePutCharSintaxe : bOk =  SalFilePutChar ( hArquivo , nCaractere )Descrição : Grava um caractere num arquivo aberto.

Parâmetros :hArquivo File Handle –  O handle do arquivo.

Page 375: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 375/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nCaractere Number –  O valor numérico do caractere que será gravado no arquivo.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se a função não conseguir

gravar no arquivo.

Função : SalFilePutStrSintaxe : bOk =  SalFilePutStr ( hArquivo , sString )Descrição : Grava uma string num arquivo aberto. O Centura acrescenta à string gravada oscaracteres return/line feed.

Parâmetros :hArquivo File Handle –  O handle do arquivo aberto.sString String –  A string a ser gravada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileReadSintaxe : nResultado = SalFileRead ( hArquivo , sBuffer , nTamBuffer )Descrição : Lê uma série de carateres de um arquivo aberto.

Parâmetros :hArquivo File Handle –  O handle do arquivo aberto.

sBuffer Receive String –  A string para onde os dados serão carregados.nTamBuffer Number –  O número de bytes a ser lido.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileRemoveDirectorySintaxe : bOk =  SalFileRemoveDirectory ( sDiretorio )Descrição : Apaga um diretório.

Parâmetros :sDiretorio String –  O nome completo do diretório a ser apagado.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se a função falhar.SalFileRemoveDirectory também retorna FALSE se o diretório conter algum arquivo ou sub-diretório.

Função : SalFileSeekSintaxe : bOk =  SalFileSeek ( hArquivo , nBytes, nPosicao )

Page 376: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 376/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Posiciona o ponteiro do arquivo. A próxima operação no arquivo ( por exemploleitura ou gravação ) será a partir desta posição.

Parâmetros :

hArquivo File Handle –  O handle do arquivo aberto.nBytes Number –  A posição específica do ponteiro do arquivo.nPosicao Number  –   A posição genérica do ponteiro do arquivo, um dos seguintes

valores : FILE_SeekBegin, FILE_SeekCurrent ou FILE_SeekEnd.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileSetCurrentDirectorySintaxe : bOk =  SalFileSetCurrentDirectory ( sPath )

Descrição : Muda o diretório de trabalho atual.

Parâmetro :sPath String –  O path do novo diretório de trabalho.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileSetDateTimeSintaxe : bOk =  SalFileSetDateTime ( sArquivo , dtData )

Descrição : Altera o atributo data e hora da última atualização do arquivo.

Parâmetros :sArquivo String –  o nome do arquivo.dtData Date/Time  –   O novo valor para a data e hora da última modificação do

arquivo.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFileSetDriveSintaxe : bOk =  SalFileSetDrive ( sLetraDrive )Descrição : Define o drive padrão.

Parâmetro :sLetraDrive String  –   A nova letra de unidade de disco. O Centura considera apenas o

 primeiro caracter deste parâmetro, o restante é ignorado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Page 377: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 377/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalFileTellSintaxe : nPosicao = SalFileTell ( hArquivo )Descrição : Obtém a posição atual do ponteiro do arquivo.

Parâmetro :hArquivo File Handle –  o handle do arquivo aberto.

Valor de Retorno :nPosicao é a posição atual do ponteiro do arquivo. Se algum erro ocorrer, nPosicao é – 1.

Função : SalFileWriteSintaxe : nOk = SalFileWrite ( hArquivo , sBuffer , nTamBuffer )Descrição : Grava uma cadeia de caracteres num arquivo aberto.

Parâmetros :hArquivo File Handle –  O handle do arquivo.sBuffer String –  A cadeia de caracteres que será gravada no arquivo.nTamBuffer Number –  O número de bytes a ser gravado.

Valor de Retorno :nOk  contém o número de bytes escrito.

Função : SalFindWindowSintaxe : hWndEncontrado = SalFindWindow ( hWndJanela , sNome )

Descrição : Esta função procura por um objeto child window e retorna o seu handle.

Parâmetros :hWndJanela Window Handle –  o nome ou o handle do objeto pai para a pesquisa.sNome String –  O nome do objeto a ser encontrado.

Valor de Retorno :hWndEncontrado é o handle do objeto encontrado. Se a função não encontrar um objeto como nome sNome, hWndEncontrado é igual a hWndNULL.

Função : SalFmtFieldToStrSintaxe : bOk =  SalFmtFieldToStr ( hWndCampo, sValor , bFormato )Descrição  : Copia o conteúdo de um data field   ou coluna de uma table window para umavariável. Esta função também permite copiar a formatação do campo.

Parâmetros :hWndCampo Window Handle –  O handle ou o nome do campo que você quer copiar seu

conteúdo, e, opcionalmente, sua formatação.sValor Receive String –  A variável string que receberá o valor do objeto.

 bFormato Boolean –  Especifica quando você deseja copiar o conteúdo formatado do

objeto. Se você especificar TRUE, o Centura copia o conteúdo e sua

Page 378: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 378/580

Programando com o Centura Team Developer 2000

Página PAGE 582

formatação. Se você especificar FALSE, o Centura copia apenas o conteúdodo objeto, sem a formatação.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFmtFormatDateTimeSintaxe : sData = SalFmtFormatDateTime ( dtData , sFormatacao )Descrição  : Formata um valor data e hora usando uma determinada formatação. Se vocêespecificar uma formatação inválida ou se não especificar nehuma formatação, o Centurautilizará a configuração padrão da seção [INTL] e a configuração definida pelo usuário[GTITOOLS] do WIN.INI.

Parâmetros :

dtData Date/Time –  O valor data e hora para ser formatado.sFormatacao String –  A formatação a ser aplicada no valor data e hora.

Valor de Retorno : sData é a string formatada com o valor data e hora.

Função  : SalFmtFormatNumberSintaxe : sNumero = SalFmtFormatNumber ( nNumero , sFormatacao )Descrição  : Formata um valor numérico usando uma determinada formatação. Se vocêespecificar uma formatação inválida ou se não especificar nehuma formatação, o Centura

utilizará a configuração padrão da seção [INTL] e a configuração definida pelo usuário[GTITOOLS] do WIN.INI.

Parâmetros :nNumero Number –  O valor numérico a ser formatado.sFormatacao String –  A formatação a ser aplicada no valor numérico.

Valor de Retorno : sNumero é a string formatada com o valor numérico.

Função : SalFmtGetFormatSintaxe : nFormato = SalFmtGetFormat ( hWndCampo )Descrição  : Retorna a formatação que está sendo utilizada no momento pelo data field   oucoluna da table window.

Parâmetro :hWndCampo Window Handle –  O nome ou o handle do data field  ou da coluna da table

window.

Valor de Retorno :

Page 379: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 379/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nFormato  é um número que indica o formato do objeto. O Valor de retorno é uma dasseguintes constantes :

Campos tipo de dado Data/Hora (Date/Time) podem ser formatados como :

FMT_Format_Date,FMT_Format_DateTime,FMT_Format_Picture,FMT_Format_Time ouFMT_Format_Unformatted.

Campos do tipo de dado Número (Number) podem ser formatados como :FMT_Format_Currency,FMT_Format_Decimal,FMT_Format_Percentage,FMT_Format_Picture ou

FMT_Format_Unformatted.

Campos tipo de dado String podem ser formatados como :FMT_Format_Invisible,FMT_Format_LowerCase,FMT_Format_UpperCase ouFMT_Format_Unformatted.

Função : SalFmtGetInputMaskSintaxe : bOk =  SalFmtGetInputMask ( hWndCampo , sMascara )

Descrição : Obtém a input mask de um data field , combo box e coluna da table window.

Parâmetros :hWndCampo Window Handle –  O handle ou o nome do objeto.sMascara Receive String –  A input mask  recuperada.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se o handle do objeto forinválido, ou se o objeto não possuir uma input mask .

Função : SalFmtGetPictureSintaxe : bOk =  SalFmtGetPicture ( hWndCampo , sFormatacao )Descrição : Obtém a formatação de um data field  e coluna da table window.

Parâmetros :hWndCampo Window Handle –  O handle ou nome do objeto.sFormatacao Receive String –  A formatação recuperada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a o handle do objeto for

inválido, ou se o objeto não possuir uma formatação.

Page 380: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 380/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalFmtIsValidFieldSintaxe : bOk =  SalFmtIsValidField ( hWndCampo )Descrição : Valida o conteúdo de um data field  ou coluna de uma table window usando as

definições ativas.

Parâmetro :hWndCampo Window Handle  –   O handle ou o nome do objeto que terá seu conteúdo

validado.

Valor de Retorno :bOk  é TRUE se o conteúdo do campo é válido, e FALSE se o conteúdo do campo é inválido.

Função : SalFmtIsValidInputMask

Sintaxe : bOk =  SalFmtIsValidInputMask ( sMascara )Descrição : Valida a input mask  de um data field  e coluna da table window.

Parâmetro :sMascara String –  Uma input mask .

Valor de Retorno :bOk  é TRUE se a input mask for válida e FALSE se for inválida.

Função : SalFmtIsValidPicture

Sintaxe : bOk =  SalFmtIsValidPicture ( sPicture, nTipo )Descrição : Valida um formato.

Parâmetros :sPicture String –  A picture.nTipo Number –  Especifica se o formato refere-se a um tipo de dado numérico ou

data/hora. Use uma das constantes : FMT_Pic_DateTime ouFMT_Pic_Number.

Valor de Retorno :bOk  é TRUE se o formato for válido e FALSE se não for válido.

Função : SalFmtKeepMaskSintaxe : bOk =  SalFmtKeepMask ( bManter )Descrição : O Centura, por padrão, retira a formatação de input mask  quando você copia ovalor de um objeto ( tipo data field , combo box e coluna da table window ) para outro objeto.Por exemplo, se você definiu a input mask  de um data field  assim “AAA-AAAA” e copia seu

conteúdo para outro data field , o Centura não copia o hífen.

Parâmetro :

 bManter Boolean  –   Se você especificar FALSE ( o padrão), o Centura remove os

Page 381: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 381/580

Programando com o Centura Team Developer 2000

Página PAGE 582

caracteres da input mask  quando copia o conteúdo do objeto. Se especificarTRUE, o Centura mantém os caracteres de formatação quando copia oconteúdo do objeto.

Valor de Retorno :Retorna o mesmo valor que você especificou em bManter .

Função : SalFmtSetFormatSintaxe : bOk =  SalFmtSetFormat ( hWndCampo, nFormato )Descrição : Define o formato de um data field  e de colunas da table window.

O formato do campo precisa estar de acordo com o tipo de dado do campo, por exemplo, aformatação para campos tipo number  pode ser decimal , percentage, ou currency values.

Parâmetros :hWndCampo Window Handle –  O handle ( ou o nome ) do data field  ou coluna da table

window que você deseja formatar.nFormato Number –  O formato do objeto.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se o formato não puder seraplicado para o campo especificado.

Função : SalFmtSetInputMask

Sintaxe : bOk =  SalFmtSetInputMask ( hWndObjeto , sMascara )Descrição : Define a input mask  de um data field  ou coluna da table window.

Parâmetros :hWndObjeto Window Handle –  O nome ou o handle do objeto a ser formatadosMascara String  –  A string contendo a formatação a ser aplicada ao objeto. Se você

especificar uma string vazia “”, o Centura retira a formatação existente no

objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFmtSetPictureSintaxe : bOk =  SalFmtSetPicture ( hWndObjeto , sPicture )Descrição : Define a picture de um data field  ou coluna da table window.

Parâmetros :hWndObjeto Window Handle –  O nome ou o handle do objeto a ser formatado.sPicture String - A string contendo a formatação a ser aplicada ao objeto.

Valor de Retorno :

Page 382: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 382/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.A função pode falhar se um dos seguintes eventos ocorrer :  handle do objeto for nulo.  tipo de dado do campo não for date/time ou number .

  formato da picture informada não corresponde a um formato válido.

Função : SalFmtStrToFieldSintaxe : bOk =  SalFmtStrToField ( hWndCampo, sValor, bFormato )Descrição : Copia uma string para um data field  ou para uma coluna da table window. Apóscopiar a string para o objeto, o Centura formata a string.

Parâmetros :hWndCampo Window Handle  –   O nome ou o handle do objeto que terá a string

associada.

sValor String –  A string a ser copiada. bFormato Boolean  –  Especifica se a string terá (TRUE) ou não (FALSE) o mesmo

formato do campo.

Valor de Retorno :bOk  é TRUE se o valor da string possuir o mesmo formato do campo. bOk   é FALSE se ovalor da string não estiver formatado.

Função : SalFmtUnmaskInputSintaxe : bOk =  SalFmtUnmaskInput ( hWndObj , sConteudo )Descrição : Tira a máscara do conteúdo de um data field  ou coluna da table window e colocao resultado numa string. Tirar a máscara significa tirar os caracteres de controle de uma string,mas isso não inclui converter os caracteres de letras minúsculas para maiúsculas e vice-versa.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto.sConteudo Receive String –  O conteúdo ( sem a máscara ) do objeto.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se o handle hWndObj  for

inválido ou se este não possuir uma máscara.

Função : SalFmtValidateFieldSintaxe : bOk =  SalFmtValidateField ( hWndCampo , nFlag )Descrição : Valida e formata o conteúdo de um data field  ou de uma coluna da table window.

Parâmetros :hWndCampo Window Handle –  O nome ou o handle do data field  ou da coluna da table

window.nFlag Number  –   Um valor que indicará se o Centura irá mostrar uma caixa de

diálogo caso ocorra algum erro. Utilize FMT_Validate_Dialog ou

Page 383: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 383/580

Programando com o Centura Team Developer 2000

Página PAGE 582

FMT_Validate_None.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFontGetSintaxe : bOk =  SalFontGet ( hWndObj, sNomeFonte, nTamFonte, nMelhoramentos )Descrição : Obtém o nome da fonte, tamanho e melhoramentos de fonte do objeto hWndObj.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto.sNomeFonte Receive String –  O nome da fonte do objeto.nTamFonte Receive Number –  O tamanho da fonte do objeto.nMelhorament

os

Receive Number –  O melhoramento da fonte.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFontGetNamesSintaxe : nQtd = SalFontGetNames ( nQtdFontes , sVetorFontes )Descrição : Obtém os nomes das fontes de tela e de impressão.

Parâmetros :

nTipoFonte Number –  Uma constante que especifica se você quer obter as fontes de telaou de impressora. Use as constantes FONT_GetPrinter ouFONT_GetScreen.

sVetorFontes Receive String Array –  O nome de um vetor tipo string que terá os nomesdas fontes.

Valor de Retorno :nQtd  é a quantidade de fontes carregadas no vetor.

Função : SalFontGetSizes

Sintaxe : nQtd = SalFontGetSizes ( nTipoFonte , sNomeFonte , nVetorTamanhos )Descrição : Obtém os tamanhos da fonte especificada.

Parâmetros :nTipoFonte Number  –  Uma constante que especifica se você quer obter os tamanhos

das fontes de tela ou de impressora. Use as constantes FONT_GetPrinterou FONT_GetScreen.

sNomeFonte String –  O nome da fonte.nVetorTamanhos

Receive Numeric Array –  O nome de um vetor numérico que irá conter ostamanhos retornados da fonte especificada.

Page 384: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 384/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nQtd  é a quantidade de tamanhos de fontes carregadas no vetor.

Função : SalFontSetSintaxe : bOk =  SalFontSet ( hWndObjt , sNomeFonte , nTamanho, nMelhoramento )Descrição : Define a fonte , o tamanho e os melhoramentos de fonte para um objeto.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto que você quer definir a

fonte.sNomeFonte String –  O nome da fonte.nTamanho Number –  O tamanho da fonte.nMelhoramento

 Number  –   O melhoramento da fonte. Para especificar duas ou maiscontantes FONT_Enh*, utilize o operador OR (|).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFormGetParmNumSintaxe : bOk =  SalFormGetParmNum ( hWndForm, nParametro, nValor )Descrição  : Retorna o valor de um dos três parâmetros do  form window: altura ( height ),largura ( width), ou o número de páginas ( number of pages ).

Parâmetros :

hWndForm Window Handle  –  O nome ou o handle do  form window  que você desejaobter os valores dos parâmetros.

nParametro Number –  especifique aqui o parâmetro desejado.Utilize as constantes FORM_nFormHeight , FORM_nFormPages ouFORM_nFormWidth .

nValor Receive Number –  O valor do parâmetro requisitado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalFormUnitsToPixelsSintaxe : nNumPixels = SalFormUnitsToPixels ( hWndObj , nUnidades, bVertical )Descrição  : Converte de form units para pixels. Form units é a unidade utilizada pelasfunções do Centura para mover e posicionar objetos.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto.nUnidades Number –  O número de unidades de form (form units).

 bVertical Boolean  –   Se as unidades de form se referirem ao eixo X, utilize neste parâmetro o valor FALSE. Se as unidades de form se referem ao eixo Y,utilize TRUE.

Page 385: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 385/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nNumPixels é o número de pixels retornado caso a função obtenha sucesso. Caso o handle (hWndObj ) for nulo, nNumPixels é zero (0).

Função : SalGetDataTypeSintaxe : nTipoDado = SalGetDataType ( hWnd )Descrição : Retorna o tipo de dado de um data field  ou de uma coluna da table window.

Parâmetro :hWnd Window Handle –  O nome ou o handle do data field  ou da coluna da table

window.

Valor de Retorno :

nTipoDado  é um número que indica o tipo de dado do data field   ou da coluna da tablewindow. Este valor é uma das constantes pré-definidas DT_DateTime, DT_LongString,DT_Number ou DT_String.

Função : SalGetDefButtonSintaxe : hWnd = SalGetDefButton ( hWndPai )Descrição : Retorna o handle do pushbutton default em um form window ou dialog box.O pushbutton que estiver com o foco é o pushbutton default.

Parâmetro :

hWndPai Window Handle –  O nome ou o handle do form window ou do dialog box.

Valor de Retorno :hWnd  é o handle do pushbutton default. hWnd  é igual a hWndNULL se hWndPai não for umhandle válido ou se o objeto associado ao hWndPai não possuir nenhum pushbutton default.

Função : SalGetFirstChildSintaxe : hWndFilho = SalGetFirstChild ( hWndPai, nTipo )Descrição : Obtém o handle do primeiro objeto child do tipo especificado em nTipo.

Parâmetros :hWndPai Window Handle –  O handle ou o nome do objeto top level  que você deseja

 procurar pelos seus objetos child.nTipo Number –  O tipo do objeto que você deseja procurar. Você pode combinar

as constantes TYPE_* usando o operador OR (|)Os objetos tipo TYPE_Line, TYPE_Frame e TYPE_BkgrdText são objetosestáticos e não implementados como um objeto child normal, não possuemhandles. Para mudar este comportamento defina bStaticsAsWindows comoTRUE.

Valor de Retorno :

Page 386: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 386/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndFilho  é o handle do primeiro objeto child , do tipo especificado, encontrado emhWndPai. Será igual a hWndNULL quando hWndPai for inválido, ou quando não houverobjetos child do tipo especificado.

Função : SalGetFocusSintaxe : hWndFoco = SalGetFocus ( )Descrição : Obtém o handle do objeto que está com o foco.

Nenhum Parâmetro.

Valor de Retorno :hWndFoco contém o handle do objeto que está com o foco no momento.

Função : SalGetItemNameSintaxe : bOk =  SalGetItemName ( hWndObj, sNome )Descrição : Obtém o nome de um objeto.

Parâmetros :hWndObj Window Handle –  O handle de um objeto.sNome Receive String –  O nome do objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalGetMaxDataLengthSintaxe : nTam = SalGetMaxDataLength ( hWndObj )Descrição  : Obtém o tamanho máximo de um data field , multiline text   ou coluna da table

window.Utilize esta função antes de associar algum valor ao objeto, para ter certeza que o valor caberáno objeto.

Parâmetro :hWndObj Window Handle –  O handle de um data field , multiline text , ou coluna de

table window.

Valor de Retorno :nTam é o tamanho máximo do conteúdo do objeto. Se nTam for igual a -1, significa que o objeto foi definidocomo tamanho “Default”. 

Função : SalGetNextChildSintaxe : hWndProximoFilho = SalGetNextChild ( hWndFilho , nTipo )Descrição : Retorna o handle do próximo objeto child que combina com a especificação feitaem nTipo.Utilize essa função após ter usado SalGetFirstChild para obter o primeiro objeto filho. Você

 pode usar esta função para obter os objetos filhos do mdi também.

Page 387: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 387/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Se você quiser que esta função trabalhe também com background text , lines e frames, atribuaTRUE à variável do sistema bStaticsAsWindows.

Parâmetros :hWndFilho Window Handle –  O handle de um objeto filho.nTipo Number –  O tipo do objeto que você deseja procurar. Você pode combinar

as constantes TYPE_* usando o operador OR (|)Os objetos tipo TYPE_Line, TYPE_Frame, and TYPE_BkgrdText sãoobjetos estáticos e não implementados como um objeto child normal, não

 possuem handles. Para mudar este comportamento, defina bStaticsAsWindows como TRUE.

Valor de Retorno :hWndProximoFilho  é o handle do próximo objeto filho do tipo que você especificou em

nTipo. SalGetNextChild procura a partir do objeto hWndFilho.

Função : SalGetProfileIntSintaxe : nValor = SalGetProfileInt ( sSeção, sEntrada, nDefault, sNome )Descrição : Recupera um valor inteiro de uma entrada de seção do registro ou de um arquivode inicialização.

Parâmetros :sSeção String –  O cabeçalho da seção.sEntrada String –  A entrada que terá o valor recuperado.

nDefault Number –  Especifique um valor de retorno (entre 0 e 32.767 ) para o casode a função não encontrar a entrada.

sNome String  –   O nome do arquivo de inicialização ou o nome da empresadependendo das configurações feitas utilizando-se a função SalUseRegistry.Se você estiver utilizando um arquivo “*.INI” e não especificar o path

completo, o Centura procura pelo arquivo no subdiretório do Windows.

Valor de Retorno :Se a função for executada com sucesso, nValor   é o valor inteiro de uma entrada na seçãoespecificada de um arquivo ou do registro. Se o valor encontrado não for um inteiro, nValue ézero. Se SalGetProfileInt não conseguir encontrar a entrada especificada, nValue  é o valornDefault.

Função : SalGetProfileStringSintaxe : nBytes = SalGetProfileString ( sSeção, sEntrada, sDefault, sValor, sName )Descrição : Recupera um valor string de uma entrada de seção do registro ou de um arquivode inicialização.

Parâmetros :sSeção String –  O cabeçalho da seção.

sEntrada String –  A entrada que terá o valor recuperado.

Page 388: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 388/580

Programando com o Centura Team Developer 2000

Página PAGE 582

sDefault String  –   Especifique um valor de retorno para o caso de a função nãoencontrar a entrada.

sValor Receive String –  Um valor para sEntrada. No máximo 1024 bytes.sNome String  –   O nome do arquivo de inicialização ou o nome da empresa,

dependendo das configurações feitas utilizando-se a função SalUseRegistry.Se você estiver utilizando um arquivo “*.INI” e não especificar o path

completo, o Centura procura pelo arquivo no subdiretório do Windows.

Valor de Retorno :nBytes é o número de bytes copiados para sValor .

Função : SalGetTypeSintaxe : nTipo = SalGetType ( hWnd )Descrição : Retorna o tipo do objeto.

Para alguns objetos ( como table windows e  scroll bar  ), SalGetType retorna zero. Não useSalQueryFieldEdit para um objeto onde SalGetType retorne zero.

Parâmetro :hWnd Window Handle –  O handle de um objeto.

Valor de Retorno :nTipo é um número que indica o tipo do objeto. O valor retornado é uma das constantes pré-definidas TYPE_*

Função : SalGetVersionSintaxe : nVersao = SalGetVersion ( )Descrição : Retorna o número da versão atual do Centura.

Nenhum Parâmetro. 

Valor de Retorno :nVersao é o número da versão do Centura. Por exemplo 150 para Centura 1.5.0.

Função : SalGetWindowLabelText

Sintaxe : nTam = SalGetWindowLabelText ( hWnd , sTexto , nTamMax)Descrição : Obtém o background text  de um objeto.

Parâmetros :hWnd Window Handle –  O nome do objeto.sTexto Receive String –  O texto recuperado.nTamMax Number –  O tamanho máximo que o texto poderá ter para ser recuperado.

Valor de Retorno :nTam é um número que indica o tamanho do texto recuperado (  sTexto  ). nTam é zero se obackground text  não tiver texto algum.

Page 389: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 389/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalGetWindowLocSintaxe : bOk =  SalGetWindowLoc ( hWnd, nX, nY )Descrição : Retorna as coordenadas da posição do objeto atual.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto.nX Receive Number –  A posição da janela no eixo X, em form units.nY Receive Number - A posição da janela no eixo Y, em form units.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalGetWindowSize

Sintaxe : bOk =  SalGetWindowSize ( hWnd , nLargura , nAltura )Descrição : Retorna o tamanho do objeto.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto.nLargura Receive Number –  A largura do objeto, especificado em form units.nAltura Receive Number –  A altura do objeto, especificado em form units.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalGetWindowStateSintaxe : nEstado = SalGetWindowState ( hWnd )Descrição : Retorna o estado atual do objeto top level .

Parâmetro :hWnd Window Handle –  O nome ou o handle de um objeto top level .

Esta função retornará um erro se você especificar o nome de uma janela queainda não foi criada em tempo de execução.

Valor de Retorno :nEstado  é um valor que indica o estado atual de um objeto. nEstado  é um dos seguintesvalores : Window_Invalid, Window_Maximized, Window_Minimized, Window_Normal eWindow_NotVisible.

Função : SalGetWindowTextSintaxe : nTam = SalGetWindowText ( hWnd, sText, nTamMax )Descrição : Obtém o texto de um objeto.O texto de um objeto é o título de um  form window, dialog box, top level table window, radio

button, check box, background text  ou pushbutton. Para um data field , multiline text  ou coluna

de uma table window, o texto é o conteúdo do campo em formato string.

Page 390: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 390/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Obs: Para obter o título de uma coluna de uma table window  use a funçãoSalTblGetColumnTitle.

Parâmetros :hWnd Window Handle –  O nome ou o handle do objeto.sText Receive String –  O texto do objeto.nTamMax Number –  O tamanho máximo do texto a ser recuperado.

Valor de Retorno :nTam é o tamanho do texto recuperado. Quando o objeto não possui texto, nTam é zero.

Função : SalHideWindowSintaxe : bOk =  SalHideWindow ( hWnd )

Descrição : Esconde um objeto.Esta função não destrói o objeto, apenas torna o objeto invisível.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalHideWindowAndLabel

Sintaxe : bOk =  SalHideWindowAndLabel ( hWnd )Descrição : Esconde um objeto e o background text  correspondente.Esta função não destrói o objeto, apenas torna o objeto invisível.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalHStringToNumberSintaxe : nHString = SalHStringToNumber ( sString )Descrição  : Converte um ponteiro string para um número possível de ser utilizado como

 parâmetro numa mensagem.

Obs  : Use esta função apenas para strings que serão passadas por parâmetro nas mensagensenviadas usando SalSendMsg. Não use esta função para strings passadas como parâmetros emmensagens enviadas usando SalPostMsg.

Observe também que você deve passar um ponteiro string através do parâmetro lParam, umavez que o valor excede o limite do parâmetro wParam.

Page 391: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 391/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :sString String –  A string cujo ponteiro você quer converter para número.

Valor de Retorno :nHString  é um número cujo valor representa o ponteiro string.

Função : SalIdleKickSintaxe : bOk =  SalIdleKick ( )Descrição : Força o processamento de inatividade, normalmente quando um outro programaenvia uma mensagem de aviso.

Nenhum Parâmetro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalIdleRegisterWindowSintaxe : bOk =  SalIdleRegisterWindow( hWndObj , nMsg , nwParam , nlParam )Descrição  : Use esta função para avisar ao Centura que envie uma mensagem ao objetoespecificado quando for detectado um estado de inatividade. Isto ocorre após um objeto

 processar todas as mensagens da sua fila de mensagens.

Parâmetros :

hWndObj Window Handle  –   O handle do objeto ao qual você deseja enviar amensagem.

nMsg Number –  A mensagem a ser enviada.nwParam  Number  –   Você pode utilizar este parâmetro para enviar algum valor ao

objeto.nlParam  Number  –   Você pode utilizar este parâmetro para enviar algum valor ao

objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalIdleUnregisterWindowSintaxe : bOk =  SalIdleUnregisterWindow( hWndObj )Descrição : Use esta função para avisar ao Centura que pare de enviar mensagens ao objetoespecificado.

Parâmetro :hWndObj Window Handle –  O handle do objeto que você, previamente, utilizou como

 parâmetro na função SalIdleRegisterWindow.

Valor de Retorno :

Page 392: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 392/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalInvalidateWindow

Sintaxe : bOk =  SalInvalidateWindow ( hWnd )Descrição : Faz com que o objeto seja redesenhado.

Parâmetro :hWnd Window Handle –  o handle do objeto a ser redesenhado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SalIsButtonChecked

Sintaxe : bLigado = SalIsButtonChecked ( hWnd )Descrição : Determina se um radio button está ligado ou se um check box está selecionado.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bLigado é TRUE se hWnd  estiver checado e FALSE em caso contrário.

Função : SalIsNull

Sintaxe : bNulo = SalIsNull ( hWnd )Descrição : Verifica quando um data field , multiline text , ou coluna de uma table window estánulo ou vazia.

Parâmetro :hWnd Window Handle –  O nome ou handle do objeto.

Valor de Retorno :bNulo é TRUE se o objeto hWnd  estiver nulo ou vazio e FALSE se tiver algum valor.

Função : SalStrIsValidCurrencySintaxe : bOk = SalStrIsValidCurrency ( sValor , nPrecisao , nEscala )Descrição : Verifica se a string representa um valor Currency válido.

Parâmetros :sValor String - Uma string que contém um valor tipo currency.nPrecisao Number - O número de dígitos a serem mostrados.nEscala Number - O número de dígitos à direita do ponto decimal.

Valor de Retorno :bOk  é TRUE se o valor contido em sValor  corresponder a um valor tipo currency válido.

Page 393: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 393/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalIsValidDateTimeSintaxe : bOk =  SalIsValidDateTime ( hWndCampo )Descrição  : Verifica se o objeto hWndCampo  possui um valor válido para o tipo de dado

Date/Time. Para objetos tipo multiline text  o valor data deve ser o único conteúdo do objeto.

Parâmetro :hWndCampo Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bOk  é TRUE se o conteúdo do objeto hWndCampo for uma data válida e FALSE se o valornão for uma data válida.

Função : SalIsValidDecimal

Sintaxe : bOk =  SalIsValidDecimal ( hWndCampo, nPrecisao, nEscala )Descrição  : Verifica se o objeto hWndCampo  possui um valor válido para o tipo de dadonumérico decimal. Para objetos tipo multiline text , o valor numérico decimal deve ser o únicoconteúdo do objeto.

Parâmetros :hWndCampo Window Handle –  O handle ou o nome do objeto.nPrecisao Number –  O número de dígitos a serem mostrados.nEscala Number –  O número de dígitos à direita do ponto decimal.

Valor de Retorno :bOk  é TRUE se o conteúdo do objeto hWndCampo for um decimal válido e FALSE se o valornão for um decimal válido.

Função : SalIsValidIntegerSintaxe : bOk =  SalIsValidInteger ( hWndCampo )Descrição  : Verifica se o objeto hWndCampo  possui um valor válido para o tipo de dadonumérico inteiro. Para objetos tipo multiline text , o valor numérico inteiro deve ser o únicoconteúdo do objeto.

Parâmetro :hWndCampo Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :

bOk  é TRUE se o conteúdo do objeto hWndCampo for um número inteiro válido e FALSE seo valor não for um número inteiro válido.

Função : SalIsValidNumberSintaxe : bOk =  SalIsValidNumber ( hWndCampo )

Page 394: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 394/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição  : Verifica se o objeto hWndCampo  possui um valor numérico válido. Númerosválidos são números inteiros ou ponto flutuante, negativos e positivos. Para objetos tipomultiline text , o valor numérico deve ser o único conteúdo do objeto.

Parâmetro :hWndCampo Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bOk  é TRUE se o conteúdo do objeto hWndCampo for um número válido e FALSE se o valornão for um número válido.

Função : SalIsWindowEnabledSintaxe : bHabilitado = SalIsWindowEnabled ( hWnd )Descrição : Verifica se um objeto está habilitado para a utilização do mouse e teclado.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bHabilitado é TRUE se o objeto estiver habilitado e FALSE em caso contrário.

Função : SalIsWindowVisibleSintaxe : bOk =  SalIsWindowVisible ( hWnd )Descrição : Verifica se um objeto está visível.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bHabilitado é TRUE se o objeto estiver visível e FALSE em caso contrário.

Função : SalListAddSintaxe : nNum = SalListAdd ( hWndLista , sTexto )Descrição : Insere um texto num list box ou combo box.

Se a lista estiver ordenada (o seu estado padrão), o Centura insere o texto de acordo com aordenação, no local apropriado. Se a lista não estiver ordenada, o texto é inserido no final damesma. Para a ordenação dos elementos, o Centura utiliza o padrão ANSI.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.sTexto String –  O texto que será inserido na lista.

Valor de Retorno :

Page 395: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 395/580

Page 396: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 396/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Retorna um vetor de números que indexam os elemenetos selecionados na lista.Use a função SalListQueryMultiCount para obter o número de elementos marcado num list

box.

Parâmetros :hWndListBox

Window Handle –  O handle ou o nome de um list box.

nSelecionados

Receive Numeric Array  –   O nome de um vetor de números que terá osíndices dos elementos selecionados num list box.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso, e FALSE se hWndListBox  ounSelecionados forem inválidos, ou se não ouver nenhum elemento selecionado no list box.

Função : SalListInsertSintaxe : nNum = SalListInsert ( hWndLista, nIndice, sTexto )Descrição : Inclui um determinado texto numa posição específica de uma lista.

Parâmetros :hWndLista Window Handle –  O handle ou o nome de um list box ou combo box.nIndice Number  –  A posição onde você quer incluir o texto. Se você especificar o

valor – 1, o Centura inclui o texto na última posição da lista.sTexto String –  O texto que você deseja incluir.

Valor de Retorno :nNum  é o índice onde foi inserido o texto. SalListInsert retorna LB_Err quando um erroocorrer, e retorna LB_ErrSpace quando não houver mais memória para armazenar a novastring.

Função : SalListPopulateSintaxe : bOk =  SalListPopulate ( hWndLista, hSql, sSelect )Descrição : Carrega um list box ou um combo box com o conteúdo de um result set .

Parâmetros :hWndLista Window Handle –  O handle ou o nome de um list box ou combo box.hSql Sql Handle –  O handle de um comando SELECT.sSelect String –  O comando SELECT.

O comando SELECT pode conter variáveis BIND, mas não pode contervariáveis INTO.Se o comando  sSelect   for nulo, o Centura utiliza o comando preparadoanteriormente no handle hSql, evitando que o comando seja preparadonovamente.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se algum parâmetro for

inválido, ou se o comando sSelect  conter variáveis INTO.

Page 397: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 397/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalListQueryCountSintaxe : nNumItens = SalListQueryCount ( hWndLista )Descrição : Retorna o número de itens presentes na lista.

Parâmetro :hWndLista Window Handle –  O handle ou o nome do list box ou combo box.

Valor de Retorno :nNumItens  é o número de itens presentes na lista hWndLista. SalListQueryCount retornaLB_Err se algum erro ocorrer.

Função : SalListQueryFileSintaxe : bDiretorio = SalListQueryFile ( hWndLista, sTexto )

Descrição : Obtém o texto selecionado no list box ou combo box.

Parâmetros :hWndLista Window Handle –  O handle ou o nome do list box ou combo box.sTexto String –  O texto selecionado.

Valor de Retorno :bDiretorio  é TRUE se  sTexto  for o nome de um diretório e FALSE se for um nome dearquivo.

Função : SalListQueryMultiCountSintaxe : nNum = SalListQueryMultiCount ( hWndLista )Descrição  : Retorna o número de elementos selecionados num list box  configurável para

 permitir seleção múltipla.

Parâmetro :hWndLista Window Handle –  O handle ou o nome do list box.

Valor de Retorno :nNum é o número de elementos selecionados no list box hWndLista.

Função : SalListQuerySelectionSintaxe : nInd = SalListQuerySelection ( hWndLista )Descrição : Retorna o índice do item selecionado num list box.

Parâmetro :hWndLista Window Handle –  O handle ou o nome do list box ‘single-selection’ 

Valor de Retorno :

Page 398: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 398/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nInd  é o índice do item selecionado no list box. SalListQuerySelection retorna LB_Err se nãoouver nenhum item selecionado no list box, ou se o list box  estiver configurado como‘multiple-selection’. 

Função : SalListQueryStateSintaxe : bSelecionado = SalListQueryState ( hWndLista, nItem )Descrição : Determina quando um item específico de um list box ou combo box está ou nãoselecionado.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nItem Number –  O índice de um item da lista.

Valor de Retorno :

bSelecionado  é TRUE se o item nItem  estiver selecionado e FALSE se nItem não estiverselecionado.

Função : SalListQueryTextSintaxe : nTam = SalListQueryText ( hWndLista, nItem, sTexto )Descrição : Obtém o texto de um determinado item da lista.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nItem Number –  O índice do item que vc quer obter o texto.

sTexto Receive String –  O texto do item desejado.

Valor de Retorno :nTam é o tamanho do texto recuperado.

Função : SalListQueryTextLengthSintaxe : nTamanho = SalListQueryTextLength ( hWndLista, nIndice )Descrição : Obtém o tamanho de um determinado item de uma lista.

Parâmetros :

hWndLista Window Handle –  O handle ou o nome da lista.nIndice Number –  O índice do item que você deseja saber o tamanho.

Valor de Retorno :nTamanho é o tamanho do texto do item indexado por nIndice.

Função : SalListQueryTextXSintaxe : sTexto = SalListQueryTextX ( hWndLista, nIndice )Descrição : Obtém o texto de um determinado item de uma lista.

Parâmetros :

Page 399: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 399/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndLista Window Handle –  O handle ou o nome da lista.nIndice Number –  O índice de um item da lista.

Valor de Retorno :

 sTexto é o texto referente ao item indexado por nIndice.

Função : SalListRedrawSintaxe : bOk =  SalListRedraw ( hWndLista, bRedraw )Descrição : Redesenha itens numa lista, ou evita que seja redesenhado.Com SalListDraw você pode controlar quando os itens da lista serão mostrados na tela.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.

 bRedraw Boolean –  Se TRUE o Centura redesenha os itens do list box ou combo box,

se for FALSE os itens não são redesenhados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se hWndLista for um handlenulo.

Função : SalListSelectStringSintaxe : nInd = SalListSelectString ( hWndLista, nInicio, sTexto )Descrição : Procura por um texto numa lista e seleciona o item, caso o encontre.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nInicio Number –  O índice a partir de onde você quer começar a pesquisa.sTexto String –  O texto que vc deseja encontrar.

Valor de Retorno :nInd  é o índice do item da lista que contém o texto sTexto.

Função : SalListSetMultiSelectSintaxe : bOk =  SalListSetMultiSelect ( hWndLista, nItem, bSelecao )

Descrição : Ativa/Desativa a seleção de um determinado item num list box configurado como‘multiple-selection’ 

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nItem Number –  O índice do item que você deseja ativar/desativar a seleção.

 bSelecao Boolean –  Especifique TRUE para ativar a seleção e FALSE para desativar.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 400: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 400/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalListSetSelectSintaxe : bOk =  SalListSetSelect ( hWndLista, nIndice )Descrição : Ativa/desativa a seleção de um determinado item de um combo box ou de um list

box configurado como ‘single-selection’. 

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nIndice Number –  O índice do item que você deseja ativar ou desativar a seleção.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 401: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 401/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalListSetTabsSintaxe : bOk =  SalListSetTabs ( hWndLista, nTabs )Descrição : Define a tabulação num list box para o alinhamento das colunas.Obs : SalListPopulate sobrepõe as configurações feitas com SalListSetTabs.

Parâmetros :hWndLista Window Handle –  O handle ou o nome da lista.nTabs Numeric Array  –   O nome de um vetor de números que representa as

tabulações.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalLoadApp

Sintaxe : bOk =  SalLoadApp ( sAplicacao , sParametros )Descrição : Inicia uma aplicação.

Parâmetros :sAplicacao String –  O nome da aplicação a ser executada.sParametros String –  Os argumentos da linha de comando.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalLoadAppAndWaitSintaxe : bOk =  SalLoadAppAndWait ( sAplicacao , nModo , nRetorno )Descrição : Inicia uma aplicação e espera que essa aplicação termine sua execução, antes deretornar o controle para a aplicação original.

Parâmetros :sAplicacao String –  O nome da aplicação a ser executada.nModo Number  –   O modo de visualização da aplicação. Especifique uma das

constantes abaixo:Window_Maximixed,Window_Minimized,Window_Normal ouWindow_NotVisible.

nRetorno Receive Number –  Um status retornado pela aplicação que foi invocada, ouum código de erro do Windows. Observe abaixo a relação dos códigos deerros do Windows:

0 Não tem memória. Arquivo executável está corrompido.2 Arquivo não encontrado.3 Caminho não encontrado.5 Violação de compartilhamento.

6 Biblioteca requer segmentos de dados separados para cada tarefa.

Page 402: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 402/580

Programando com o Centura Team Developer 2000

Página PAGE 582

8 Memória insuficiente para iniciar a aplicação.10 Versão incorreta do Windows.11 Arquivo .EXE inválido.12 Aplicação desenvolvida para um sistema operacional diferente.

13 Aplicação DOS 4.0.14 Tipo de .EXE desconhecido.15 Tentativa de carregar uma aplicação desenvolvida para uma versão

antiga do Windows em modo-real.16 Tentativa de carregar uma segunda instância de um arquivo .EXE

contendo múltiplos segmentos de dados atualizáveis.19 Tentativa de carregar um arquivo executável compactado. O

arquivo precisa ser descompactado para que possa ser carregado.20 Uma DLL necessária para executar esta aplicação está corrompida.21 Aplicação requer extensões do Microsoft Windows 32-bit.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a aplicação não pôde serencontrada ou iniciada.

Função : SalMapEnterToTabSintaxe : bOk =  SalMapEnterToTab ( bModo )Descrição  : Esta função muda o comportamento padrão da tecla Enter. O comportamento

 padrão é selecionar o botão default numa tela. Esse comportamento é alterado para mover para o próximo objeto child.

Parâmetro : bModo Boolean –  Se você usar TRUE, a tecla Enter move o foco para o próximo

objeto child da janela. Se você usar FALSE, a tecla Enter assume o seucomportamento normal, ou seja, selecionar o botão default numa tela.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 403: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 403/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalMDIArrangeIconsSintaxe : bOk =  SalMDIArrangeIcons ( hWndMDI )Descrição : Organiza os ícones do mdi que estiverem minimizados.

Parâmetro :hWndMDI Window Handle –  O handle da janela mdi.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalMDICascadeSintaxe : bOk =  SalMDICascade ( hWndMDI )Descrição  : Organiza em cascata todas as janelas filhas do mdi  que não estiveremminimizadas.

Parâmetro :hWndMDI Window Handle –  O handle ou o nome do mdi.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalMDITileSintaxe : bOk =  SalMDITile ( hWndMDI, bPosicao )Descrição : Ajusta lado-a-lado todas as janelas filhas do mdi que não estiverem minimizadas.

Janelas que não podem ter seu tamanho alterado não serão ajustadas.

Parâmetros :hWndMDI Window Handle –  O handle ou o nome do mdi.

 bPosicao Boolean  –   O modo como as janelas serão ajustadas. Se TRUE, ajusta as janelas verticalmente, se FALSE, ajusta as janelas horizontalmente.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalMessageBeepSintaxe : bOk =  SalMessageBeep ( nNivelAlerta )Descrição  : Emite um som padrão wave, que corresponde a uma mensagem do ambienteWindows. O usuário pode definir o som, para cada um dos níveis de alerta, no Painel deControle.

Parâmetro :nNivelAlerta Number –  O nível do alerta.

0xFFFFFFFF (-1) Beep padrão usando o auto-falante interno docomputador.Você pode também utilizar as constantes pré-definidas para tal:

Page 404: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 404/580

Programando com o Centura Team Developer 2000

Página PAGE 582

MB_IconAsterisk,MB_IconExclamation,MB_IconStop,MB_IconQuestion ou

MB_Ok.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 405: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 405/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalMessageBoxSintaxe : nResultado = SalMessageBox ( sTexto, sTitulo, nFlags )Descrição  : Mostra uma caixa de diálogo e retorna um número indicando a resposta dousuário.

Você pode personalizar a mensagem, os botões e os ícones.

Parâmetros :sTexto String  –  O texto da mensagem. Você pode utilizar múltiplas linhas, basta

utilizar um CONTROL+ENTER para iniciar uma nova linha.sTitulo String –  O título da caixa de diálogo.nFlags Number –  O estilo da caixa de diálogo.

Defina um estilo, combinando as constantes de estilo usando o operador OR(|).Você pode combinar apenas uma constante para cada componente do estilo.Um estilo possui quatro componentes :

1. Os botões2. O ícone da mensagem (opcional)3. Um botão default (opcional)4. Informar se a caixa de diálogo será system modal.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalModalDialogSintaxe : nRetorno = SalModalDialog ( tNomeDlg , hWndPai , Param1 , Param2 )

Descrição : Cria uma janela tipo dialog box ( caixa de diálogo).Esta função aceita um template ou uma variável string no primeiro parâmetro. Se você usaruma variável não poderá passar parâmetros na criação do dialog box.Um dialog box desabilita a sua janela pai. Os dialog boxes do tipo system modal desabilitamtodo o sistema Windows. A função SalEndDialog destrói um dialog box e habilita todas as

 janelas que estavam desabilitadas.A função SalModalDialog pode passar um número variável de parâmetros para o dialog box.Os tipos de dados desses parâmetros precisam ser os mesmos definidos na seção  Parameters do outline.

Você pode utilizar os parâmetros do dialog box para retornar informações para o objeto pai domesmo. No entanto, você pode inicializar parâmetros tipo receive apenas com variáveis. Issosignifica que você não pode passar como parâmetro um data field , ou outro objeto, para um

 parâmetro tipo receive de uma janela.

Parâmetros :tNomeDlg Template ou String –  O nome do dialog box a ser criado.hWndPai Window Handle –  O handle ou o nome da janela pai. Utilize hWndNULL

 para criar um dialog box que não possui janela pai.Param1Param2

Parâmetros opcionais, podem ser de qualquer tipo de dados do Centura.

Page 406: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 406/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nRetorno é o valor especificado na função SalEndDialog.

Page 407: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 407/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalModalDialogFromStrSintaxe : nRetorno = SalModalDialogFromStr ( tNomeDlg , hWndPai )Descrição : Cria uma janela tipo dialog box ( caixa de diálogo).Esta função é útil em funções internas que recebem o nome da caixa de diálogo numa

variável.

Um dialog box desabilita a sua janela pai. Os dialog boxes do tipo system modal desabilitamtodo o sistema Windows. A função SalEndDialog destrói um dialog box e habilita todas as

 janelas que estavam desabilitadas.

Parâmetros :tNomeDlg Template ou String –  O nome do dialog box a ser criado.hWndPai Window Handle –  O handle ou o nome da janela pai. Utilize hWndNULL

 para criar um dialog box que não possui janela pai.

Valor de Retorno :nRetorno é o valor especificado na função SalEndDialog.

Função : SalMoveWindowSintaxe : bOk =  SalMoveWindow ( hWndObj, nX, nY )Descrição : Movimenta um objeto para uma nova posição X e Y especificada em form units.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto.nX Number –  O número de form units para movimentar o objeto no eixo X.

nY Number –  O número de form units para movimentar o objeto no eixo Y.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se hWndObj  for um handlenulo.

Função : SalMTSCreateInstanceSintaxe : bOk =  SalMTSCreateInstance ( oObjeto )Descrição : Cria um novo componente. Dependendo das configurações da transação, o novocomponente poderá participar da transação atual, iniciar uma nova transação ou não suportar atransação.

A função SalMTSCreateInstance ( ) tem o mesmo efeito da função Create( ) quando forutilizada para objetos que não estão registrados no MTS.

Parâmetro:oObjeto Objeto ou Interface - O objeto ou interface que será instanciado.

Valor de Retorno :bOk  é TRUE se o objeto for instanciado com sucesso e FALSE caso contrário.

Page 408: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 408/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função: SalMTSDisableCommitSintaxe: bOk =  SalMTSDisableCommit ( )Descrição: Indica que as atualizações transacionais do objeto atual não podem ser efetuadas

no presente momento, até que seja feita uma chamada à função SalMTSEnableCommit( ) ouSalMTSSetComplete( ).

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Nenhum Parâmetro:

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE caso contrário.

Função: SalMTSEnableCommitSintaxe: bOk =  SalMTSEnableCommit ( )Descrição: Indica que as atividades do objeto ainda não terminaram, mas que as atualizaçõestransacionais podem ser efetuadas no objeto pai, objeto que iniciou a transação.

O estado default quando um objeto é ativado é EnableCommit.

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Nenhum Parâmetro:

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE caso contrário.

Função: SalMTSGetObjectContextSintaxe: bOk =  SalMTSGetObjectContext ( Contexto )Descrição: Obtém o contexto do objeto atual.

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Nenhum Parâmetro:Contexto Number - O contexto do objeto atual.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE caso contrário.

Função: SalMTSIsCallerInRole

Page 409: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 409/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe: bOk =  SalMTSIsCallerInRole ( sRegra , bEsta )Descrição: Verifica se o ativador do objeto atual está listado na regra indicada em sRegra.

Parâmetros:

sRegra Number - O contexto do objeto atual. bEsta Receive Boolean - Será TRUE caso o ativador do objeto seja membro daregra especificada.

Valor de Retorno :bOk  é TRUE se a regra especificada em sRegra for identificada como uma regra registrada eFALSE caso contrário.

Função: SalMTSIsInTransactionSintaxe: bOk =  SalMTSIsInTransaction ( bEsta )

Descrição: Verifica se o objeto está sendo executado no contexto da transação.

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Parâmetro: bEsta Receive Boolean - Será TRUE se o objeto estiver sendo executado no

contexto da transação.

Valor de Retorno :bOk  é TRUE se o objeto estiver em uma transaçãoa e FALSE caso contrário. 

Função: SalMTSIsSecurityEnabledSintaxe: bOk =  SalMTSIsSecurityEnabled ( bSegHabilitada )Descrição: Verifica o status da segurança. Se o objeto estiver sendo executado no processo docliente, não há verificação de segurança, nesse caso SalMTSIsSecurityEnabled sempre retornaFALSE.

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Parâmetro: bSegHabilitada

Receive Boolean - Será TRUE se a segurança estiver habilitada.

Valor de Retorno:bOk  é TRUE se o a segurança estiver habilitada para o componente e FALSE caso contrário.

Função: SalMTSSetAbortSintaxe: bOk =  SalMTSSetAbort ( )Descrição: Use esta função para informar que a transação não pode ser aplicada (rollback). Atransação inteira é cancelada. O objeto é desativado retornando para o método que o chamou.

Page 410: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 410/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Nenhum Parâmetro:

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE caso contrário.

Função: SalMTSSetCompleteSintaxe: bOk =  SalMTSSetComplete ( )Descrição: Use esta função para informar que a transação pode  ser aplicada (commit). Oobjeto é desativado retornando para o método que o chamou.

Para componentes não registrados no MTS esta função sempre retorna FALSE.

Nenhum Parâmetro:

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE caso contrário. 

Função : SalNumberAbsSintaxe : nNum = SalNumberAbs ( nValor )

Descrição : Calcula o valor absoluto de um número.

Parâmetro :nValor Number –  O número que você deseja obter o seu valor absoluto.

Valor de Retorno :nNum é o valor absoluto do número.

Função : SalNumberArcCosSintaxe : nCos = SalNumberArcCos ( nValor )

Descrição : Calcula o coseno de um valor entre o intervalo de 0 a 1.

Parâmetro :nValor Number –  O número cujo arco coseno você deseja.

Valor de Retorno :nCos é o arco coseno de nValor .

Função : SalNumberArcSinSintaxe : nSeno = SalNumberArcSin ( nValor )Descrição : Calcula o seno de um valor entre o intervalo de 0 a 1.

Page 411: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 411/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :nValor Number - O número cujo arco seno você deseja.

Valor de Retorno :nCos é o arco seno de nValor .

Função : SalNumberArcTanSintaxe : nArcoTan = SalNumberArcTan ( nValor )Descrição : Calcula o valor do arco tangente.

Parâmetro :nValor Number - O número cujo arco tangente você deseja obter.

Valor de Retorno :nArcoTan é o arco tangente do valor nValor .

Função : SalNumberArcTan2Sintaxe : nArcoTan = SalNumberArcTan2 ( nValor1 , nValor2 )Descrição  : Calcula o arco tangente de dois valores. Esta função utiliza os sinais dos dois

 parâmetros para determinar o quadrante do valor retornado.

Parâmetros :nValor1 Number - Um dos dois valores cujo arco tangente você deseja obter.nValor2 Number - O outro dos dois valores cujo arco tangente você deseja obter.

Valor de Retorno :nArcoTan é o arco tangente dos valores nValor1 e nValor2.

Função : SalNumberCosSintaxe : nValor = SalNumberCos ( nAngulo )Descrição : Calcula o coseno de um ângulo. Você deve especificar o ângulo em radianos.

Parâmetro :nAngulo Number - O valor do ângulo cujo coseno você deseja obter.

Valor de Retorno :nValor  é o coseno do valor especificado em nAngulo.

Função : SalNumberCosHSintaxe : nValor = SalNumberCosH ( nAngulo )Descrição : Calcula o coseno hiperbólico de um ângulo. Você deve especificar o ângulo emradianos.

Page 412: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 412/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :nAngulo Number - O valor do ângulo cujo coseno hiperbólico você deseja obter.

Valor de Retorno :

nValor  é o coseno hiperbólico do valor especificado em nAngulo.

Função : SalNumberExponentSintaxe : nNum = SalNumberExponent ( nValor )Descrição : Calcula a potência de um número.

Parâmetro :nValor Number - O valor cuja potência você deseja obter.

Valor de Retorno :

nNum é a potência de nValor .

Função : SalNumberHighSintaxe : nHigh = SalNumberHigh ( nValor )Descrição : Obtém os 16bits mais significantes de um número ( high-order  ).

Parâmetro :nValor Number - O número cujo valor high-order você deseja obter.

SQLWindows/32 trata nValor como um número de 32bits sem sinal.

Valor de Retorno :nHigh é o valor high-order .

Função : SalNumberHypotSintaxe : nHypotenuse = SalNumberHypot ( nX, nY )Descrição : Computes the length of the hypotenuse of a right triangle, given the lengths of theother two sides.

Parâmetros :nX Number. The length of one side of a right triangle.

nY Number. The length of another side of a right triangle.

Valor de Retorno :

nHypotenuse is the length of the hypotenuse of a right triangle. If the computation of thehypotenuse results in an overflow, nHypotenuse is equal to zero (0).

Função : SalNumberLogSintaxe : nLog = SalNumberLog ( nValor )Descrição : Calcula o logarítimo natural de um número.

Page 413: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 413/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :nValor Number. O número cujo logarítimo natural você deseja obter.

Valor de Retorno :

nLog  é o logarítimo natural de nValor . Se nValor  for um número negativo ou for zero, nLog  éigual a zero.

Função : SalNumberLogBase10Sintaxe : nLog = SalNumberLogBase10 ( nValor )Descrição : Calcula o logarítimo de base 10 de um número.

Parâmetro :nValor Number –  O número cujo logarítimo de base 10 você deseja obter.

Valor de Retorno :nLog   é o logarítimo de base de nValor . Se nValor   for igual a 0 (zero) ou for um númeronegativo, nValor  é igual a 0 (zero).

Page 414: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 414/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalNumberLowSintaxe : nNum = SalNumberLow ( nValor )Descrição : Obtém o valor low-order  de um número ( os 16-bits menos significativos ).

Parâmetro :nValor Number  –   O número cujo valor low-order   você deseja obter. O Centuratrata nValor  como um número de 32-bits sem sinal.

Valor de Retorno :nNum é o valor low-order  obtido.

Função : SalNumberMaxSintaxe : nNum = SalNumberMax ( nValor1, nValor2 )Descrição : Retorna o maior valor entre dois números.

Parâmetros :nValor1 Number –  O primeiro dos dois valores.nValor2 Number –  O segundo dos dois valores.

Valor de Retorno :nNum é o maior valor entre nValor1 e nValor2.

Função : SalNumberMinSintaxe : nNum = SalNumberMin ( nValor1, nValor2 )

Descrição : Retorna o menor valor entre dois números.

Parâmetros :nValor1 Number –  O primeiro dos dois valores.nValor2 Number –  O segundo dos dois valores.

Valor de Retorno :nNum é o menor valor entre nValor1 e nValor2.

Função : SalNumberMod

Sintaxe : nResto = SalNumberMod ( nNum, nDivisor )Descrição : Retorna o resto entre a divisão de dois números.

Parâmetros :nNum Number –  É o número que será dividido.nDivisor Number –  É o divisor de nNum.

Valor de Retorno :nResto é o que restar da divisão entre nNum e nDivisor .

Função : SalNumberPi

Page 415: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 415/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : nNumPi = SalNumberPi ( nValor )Descrição : Multiplica um número por Pi. Pi é igual a 3.1415926535979323.

Parâmetros :

nValor Number –  É o número que será multiplicado por Pi.

Valor de Retorno :nNumPi é nValor multiplicado por Pi.

Page 416: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 416/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalNumberPowerSintaxe : nNum = SalNumberPower ( nX, nY )Descrição : Calcula nX  elevado à potência de nY .

Parâmetros :nX Number –  É o número para se elevar a potência.nY Number –  É o expoente.

Valor de Retorno :nNum é igual a nX  elevado a potência de nY , com as seguintes condições:1. Se nX  não for igual a 0 e nY  for igual a 0, nNum é igual a 1.2. Se nX  for igual a 0 e nY  for um número negativo, nNum é igual a zero (0).

Função : SalNumberRandInit

Sintaxe : bOk =  SalNumberRandInit ( nInicial )Descrição : Define o ponto inicial para a geração de uma série de números aleatórios usandoSalNumberRandom.Use SalNumberRandInit quando você quiser gerar o mesmo conjunto de números aleatóriosvárias vezes.

Parâmetro :nInicial Number –  O ponto de partida. Um número qualquer no intervalo entre 0 e

32767.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalNumberRandomSintaxe : nNum = SalNumberRandom ( )Descrição : Gera um número aleatório. Os números gerados pela função SalNumberRandomsão inteiros no intervalo de 0 até 32767 ( 0 até 0x7FFF ).

Nenhum Parâmetro.

Valor de Retorno :nNum é um número aleatório.

Função : SalNumberRoundSintaxe : nResultado = SalNumberRound ( nNum )Descrição : Retorna um número arredondado.Se a parte decimal de um número for maior ou igual a 0,5, o Centura arredonda o númeroacima. Por exemplo, o número 124,33 retorna 124 ; o número 124,56 retorna 125.

Parâmetro :nNum Number –  Um número para ser arredondado.

Page 417: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 417/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nResultado é o nNum arredondado.

Page 418: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 418/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalNumberSinSintaxe : nSeno = SalNumberSin ( nAngulo )Descrição : Calcula o seno de um ângulo. Você deve especificar o ângulo em radianos.

Parâmetro :nAngulo Number - O valor do ângulo cujo seno você deseja obter.

Valor de Retorno :nSeno é o seno do ângulo nAngulo.

Função : SalNumberSinHSintaxe : nSeno = SalNumberSinH ( nAngulo )Descrição  : Calcula o seno hiperbólico de um ângulo. Você deve especificar o ângulo emradianos.

Parâmetro :nAngulo Number - O valor do ângulo cujo seno hiperbólico você deseja obter.

Valor de Retorno :nSeno é o valor do seno hiperbólico do ângulo nAngulo.

Função : SalNumberSqrtSintaxe : nRaiz = SalNumberSqrt ( nValor )Descrição : Calcula a raiz quadrada de um número.

Parâmetro :nValor Number –  O número cuja raiz quadrada você deseja obter.

Valor de Retorno :nRaiz  é o valor da raiz quadrada de nValor . Se nValor  for um número negativo, ele está forado domínio de números válidos e nRaiz  é igual a zero (0).

Função : SalNumberTanSintaxe : nTan = SalNumberTan ( nAngulo )Descrição : Calcula a tangente de um ângulo.

Parâmetro : Number Number - O valor do ângulo cuja tangente você deseja obter.

Valor de Retorno :nTan é a tangente de um ângulo.

Função : SalNumberTanH

Sintaxe : nTan = SalNumberTanH ( nAngulo )

Page 419: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 419/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Calcula a tangente de um ângulo hiperbólico.

Parâmetro : Number Number - O valor do ângulo cuja tangente hiperbólica você deseja obter.

Valor de Retorno :nTan é a tangente hiperbólica do ângulo em nAngulo.

Page 420: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 420/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalNumberToCharSintaxe : sCararctere = SalNumberToChar ( nNum )Descrição : Converte um caractere ASCII em seu valor decimal.

Parâmetro :nNum Number –  O número para ser convertido.

Valor de Retorno : sCaractere é o valor de nNum convertido.

Função : SalNumberToHStringSintaxe : sString = SalNumberToHString ( nHString )Descrição : Converte um número para um handle string.

Parâmetro :nHString Number –  Um valor numérico para ser convertido.

Valor de Retorno : sString  é um ponteiro string que representa um número convertido.

Função : SalNumberToStrSintaxe : nTam = SalNumberToStr ( nNum, nDecimais, sString )Descrição : Converte um número em string.

Parâmetros :nNum Number –  O valor numérico que será transformado em string.nDecimais Number –  O número de casas decimais.sString Receive String –  Uma variável string que receberá o valor convertido.

Valor de Retorno :nTam é o tamanho da string retornada.

Função : SalNumberToStrXSintaxe : sStr = SalNumberToStrX ( nNum, nDecimais )

Descrição : Converte um número em string.

Parâmetros :nNum Number –  O valor numérico que será transformado em string.nDecimais Number –  O número de casas decimais.

Valor de Retorno : sStr  é o valor convertido.

Função : SalNumberToWindowHandleSintaxe : hWndConv = SalNumberToWindowHandle ( nWnd )

Page 421: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 421/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Converte um valor numérico em um valor tipo window handle.

Parâmetro :nWnd Number –  O número que será convertido.

Valor de Retorno :hWndConv é o window handle convertido de nWnd .

Page 422: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 422/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalNumberTruncateSintaxe : nResultado = SalNumberTruncate ( nNum, nPrecisão, nEscala )Descrição : Trunca um número

Parâmetros :nNum Number  –   O número que será truncado, a partir da sua posição mais àesquerda.

nPrecisao Number –  É o número de caracteres a serem mostrados.nEscala Number –  É o número de digitos decimais. nPrecisao deve ser maior do que

nEscala.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalParentWindowSintaxe : hWndPai = SalParentWindow ( hWnd )Descrição : Retorna o handle do objeto pai do objeto especificado em hWnd .

Parâmetro :hWnd Window Handle –  O handle ou o nome cujo o handle do pai você deseja

Valor de Retorno :hWndPai é o handle do objeto pai.

Função : SalPicClearSintaxe : bOk =  SalPicClear ( hWndPic )Descrição : Apaga o conteúdo de uma picture.

Parâmetro :hWndPic Window Handle –  O handle ou nome de uma picture.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPicGetDescriptionSintaxe : nTamanho = SalpicGetDescription ( hWndPic , sDesc , nTamMax )Descrição : Obtém a descrição do conteúdo de uma picture.

Parâmetros :hWndPic Window Handle –  O handle ou o nome de uma picture.sDesc Receive String –  A descrição do conteúdo de hWndPic.nTamMax Number –  O tamanho máximo do texto que será recuperado.

Valor de Retorno :nTamanho é o tamanho (em bytes) da descrição em sDesc.

Page 423: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 423/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalPicGetImageSintaxe : nTam = SalPicGetImage ( hWndPicture , sPicture , nTipo )Descrição : Obtém a imagem contida num objeto tipo picture.

Parâmetros :hWndPicture Window Handle - O handle ou o nome do objeto picture.sPicture Receive String - O conteúdo do objeto picture.nTipo Number - O formato do conteúdo do objeto picture.

Pode ser uma das seguintes constantes:PIC_ImageTypeNone,PIC_ImageTypeBMP,PIC_ImageTypeICON,PIC_ImageTypeWMF,PIC_ImageTypeTIFF,

PIC_ImageTypePCX,PIC_ImageTypeGIF,PIC_ImageTypeJPEG ouPIC_ImageTypeNuVEQ.

Valor de Retorno :nTam  é o tamanho em bytes da imagem em  sPicture. Se o formato não estiver disponível,nTam é zero.

Função : SalPicGetStringSintaxe : nTamanho = SalPicGetString ( hWndPic , nFormato , sPicture )Descrição : Copia o conteúdo de uma picture para uma variável string.

Parâmetros :hWndPic Window Handle –  O handle ou o nome da picture.nFormato Number –  O formato do conteúdo da picture.sPicture Receive String –  O conteúdo da picture em hWndPic.

Valor de Retorno :nTamanho é tamanho (em bytes) da variável  sPicture. Se o formato não estiver disponível,

nTamanho é zero.

Função : SalPicSetSintaxe : bOk =  SalPicSet ( hWndPic, tResource, nFormato )Descrição : Insere um resource numa picture

Parâmetros :hWndPic Windows Handle –  O handle ou o nome da picture.tResource Template  –   Um ícone ou um bitmap na seção do Outline chamada

Resources.

nFormato Number  –   O tipo do resource. Se você especificar zero o Centura

Page 424: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 424/580

Programando com o Centura Team Developer 2000

Página PAGE 582

determinará o tipo do resource. Se não, especifique um dos tiposPIC_Formatbitmap ou PIC_FormatIcon.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPicSetFileSintaxe : bOk =  SalPicSetFile ( hWndPic , sNomeArquivo )Descrição : insere o conteúdo de um arquivo numa picture.

Parâmetros :hWndPic Window Handle –  O handle ou o nome da picture.sNomeArquivo

String  –   O nome do arquivo cujo conteúdo será inserido na picturehWndPic.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPicSetFitSintaxe : bOk =  SalPicSetFit ( hWndPic, nAjuste , nLargura , nAltura )Descrição : Define o ajuste visual de uma picture.

Parâmetros :hWndPic Windows Handle –  o handle ou o nome da picture.nAjuste Number –  O tipo de ajuste. Você pode utilizar uma das eguintes constantes :

PIC_FitBestFit , PIC_FitScale ou PIC_FitSizeToFit.nLargura Number  –   O percentual da escala de largura, no caso de nAjuste  =

PIC_FitScale.nAltura Number  –   O percentual da escala de altura, no caso de nAjuste  =

PIC_FitScale.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPicSetImageSintaxe : nTam = SalPicSetImage ( hWndPicture , sPicture , nTipo )Descrição  : Insere o conteúdo de uma picture numa imagem, sem o cabeçalho padrão deimagens do CTD.

Parâmetros :hWndPicture Window Handle - O handle ou o nome do objeto picture.sPicture Receive String - O conteúdo do objeto picture.nTipo Number - O formato do conteúdo do objeto picture.

Pode ser uma das seguintes constantes:PIC_ImageTypeNone,

PIC_ImageTypeBMP,

Page 425: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 425/580

Programando com o Centura Team Developer 2000

Página PAGE 582

PIC_ImageTypeICON,PIC_ImageTypeWMF,PIC_ImageTypeTIFF,PIC_ImageTypePCX,

PIC_ImageTypeGIF,PIC_ImageTypeJPEG ouPIC_ImageTypeNuVEQ.

Valor de Retorno :nTam  é o tamanho em bytes da imagem em  sPicture. Se o formato não estiver disponível,nTam é zero.

Função : SalPicSetHandleSintaxe : bOk =  SalPicSetHandle( hWndPic , nTipo , nHandle )

Descrição  : Define o handle de uma imagem de um objeto picture como handle de bitmap(HBITMAP) ou de ícone (HICON). Normalmente, HBITMAPs e HICONs são lidos a partirde DLLs.

Parâmetros :hWndPic Window Handle –  O handle ou o nome de um objeto picture.nTipo Number –  Atribua PIC_FormatIcon a nTipo se nHandle for um HICON, ou

PIC_FormatBitmap se nHandle for um HBITMAP.nHandle Number –  um HBITMAP ou HICON.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função: SalPicSetImageSintaxe: bOk = SalPicSetImage ( hWndPicture , sImagem, nTipo )Descrição: Insere o conteúdo de uma string num objeto tipo picture sem o header de imagensdo Centura Team Developer.

Parâmetros :hWndPicture Window Handle –  O handle ou o nome de um objeto tipo picture.

sImagem String –  A imagem.nTipo Number - O tipo da imagem.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPicSetStringSintaxe : bOk =  SalPicSetString ( hWndPic , nFormato , sPicture )Descrição : Insere o conteúdo de uma string numa picture.

Parâmetros :

Page 426: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 426/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndPic Window Handle –  O handle ou o nome de um objeto tipo picture.nFormato Number –  O formato do conteúdo da picture.

PIC_FormatBitmap , PIC_FormatIcon , PIC_FormatObject.sPicture String –  A imagem.

Você pode utilizar SalFileRead para ler um arquivo bitmap para uma string.Você também pode carregar (através do comando SELECT) uma imagemgravada numa coluna do banco de dados para uma variável string.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPixelsToFormUnitsSintaxe : nUnForm = SalPixelsToFormUnits ( hWnd , nPixels, bVertical )Descrição : Calcula o número de unidades de form do Centura, baseado no número de pixels.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto cujo número de unidades

de form você deseja calcular.nNumPixels Number –  O número de pixels.

 bVertical Boolean  –   Atribua FALSE a este parâmetro se o número de pixelscorresponder ao eixo X, e TRUE se corresponder ao eixo Y.

Valor de Retorno :nUnForm é o número de unidades de form se a função for executada com sucesso, e zero sealgum erro ocorrer.

Função : SalPostMsgSintaxe : bOk =  SalPostMsg ( hWndObj , nMensagem , nwParam , nlParam )Descrição : Envia uma mensagem para um determinado objeto, e coloca nMensagem na listade mensagens pendentes do objeto.

Parâmetros :hWndObj Window Handle  –   O handle ou o nome do objeto que irá receber a

mensagem.nMensagem Number –  A mensagem.nwParam Number –  O valor de wParam para a mensagem.nlParam Number - Ovalor de lParam para a mensagem.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtExtractRectSintaxe : bOk = SalPrtExtractRect ( nlParam, nEsquerda, nCima, nDireita, nBaixo )Descrição  : Obtém do parâmetro lParam, da mensagem SAM_Print, o retângulo que estásendo impresso no momento.

Page 427: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 427/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :nlParam Number –  O valor do parâmetro lParam na mensagem SAM_Print.nEsquerda Receive Number –  A posição no eixo X do lado esquerdo do retângulo.

nCima Receive Number –  A posição no eixo Y do lado de cima do retângulo.nDireita Receive Number –  A posição no eixo X do lado direito do retângulo.nBaixo Receive Number –  A posição no eixo Y do lado de baixo do retângulo.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtGetDefaultSintaxe : bOk =  SalPrtGetDefault ( sDispositivo , sDriver , sPorta )Descrição : Obtém as configurações do dispositivo de impressão , driver e porta padrões.

Parâmetros :sDispositivo Receive String –  O dispositivo padrão.sDriver Receive String –  O driver padrão.sPorta Receive String –  A porta padrão.

Valor de Retorno :bOk  é TRUE se a função obter os valores padrões com sucesso e FALSE se falhar.

Função : SalPrtGetParmNum

Sintaxe : bOk =  SalPrtGetParmNum ( nParametro, nValor )Descrição : Obtém o valor de um parâmetro de impressão. Os parâmetros de impressão sãoum conjunto de variáveis globais, inicializadas com valores padronizados. Podem seralterados utilizando-se a função SalPrtSetParmNum, recuperados com a funçãoSalPrtGetParmNum ou reinicializados através da função SalPrtSetParmDefaults.

Parâmetros :nParametro Number –  O parâmetro de impressão cujo valor você deseja obter. Use uma

das constantes PRT_nCopyCount ,PRT_nDraftMode,PRT_nFromPage,PRT_nMarginLeft ,PRT_nMarginTop,PRT_nPrintAll,PRT_nShowFormPageRect ouPRT_nToPage.

nValor Receive Number –  o valor do parâmetro de impressão. Para valores lógicoseste parâmetro é TRUE ou FALSE.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 428: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 428/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalPrtPrintFormSintaxe : bOk =  SalPrtPrintForm ( hWndObj )Descrição : Imprime um  form window, table window ou dialog box e todo o seu conteúdo e

flags das linhas (para o caso das tabelas). Quando hWndObj  for um handle de um  formwindow ou um dialog box, todo o seu conteúdo visível em tela é impresso.

O Centura tenta imprimir o objeto com a mesma fonte mostrada na tela. Para melhoresresultados, utilize as fontes suportadas pela sua impressora.

Se o objeto for maior do que o tamanho do papel, será impresso em tantas páginas quantoforem necessárias.

Parâmetro :hWndObj Window Handle –  O handle ou o nome do objeto a ser impresso.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtSetDefaultSintaxe : bOk =  SalPrtSetDefault ( sDispositivo , sDriver, sPorta )Descrição : Define as configurações padrões do dispositivo de impressão , driver e porta.

Parâmetros :sDispositivo String –  O dispositivo padrão.sDriver String –  O driver padrão.sPorta String –  A porta padrão.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtSetParmDefaultsSintaxe : bOk =  SalPrtSetParmDefaults ( )Descrição : Reinicia os parâmetros de impressão para os seus valores default.

 Número de cópias : 1Imprime em modo rascunho : FALSEImprime todas as páginas : TRUEPágina inicial : 1Página final : 1Margem esquerda : 0Margem direita : 0Desenha um retângulo ao redor do form impresso : FALSE

Nenhum Parâmetro.

Page 429: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 429/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtSetParmNumSintaxe : bOk =  SalPrtSetParmNum ( nParametro , nValor )Descrição : Define o valor de um parâmetro de impressão. Os parâmetros de impressão sãoum conjunto de variáveis globais, inicializadas com valores padronizados. Podem seralterados utilizando-se a função SalPrtSetParmNum, recuperados com a funçãoSalPrtGetParmNum ou reinicializados através da função SalPrtSetParmDefaults.

Parâmetros :nParametro Number –  Uma constante que representa o parâmetro de impressão.

Use uma das constantes :PRT_nCopyCount ,

PRT_nDraftMode,PRT_nFromPage,PRT_nMarginLeft ,PRT_nMarginTop,PRT_nPrintAll,PRT_nShowFormPageRect ouPRT_nToPage.

nValor Number –  o valor do parâmetro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalPrtSetupSintaxe : bOk =  SalPrtSetup ( sDispositivo , sDriver , sPorta, bMostrar )Descrição  : Mostra na tela o dialog box  de configuração de impressão. Inicialmente, aimpressora padrão é mostrada, permitindo ao usuário alterá-la. SalPrtSetup retorna as opçõesselecionadas pelo usuário nas variáveis receive.

Parâmetros :sDispositivo Receive String –  O dispositivo ( a impressora ).sDriver Receive String –  O driver.sPorta Receive String –  A porta.

 bMostrar Boolean  –   Indica se é para mostrar as impressoras inativas, ou apenas aimpressora ativa.Se TRUE todas as impressoras são mostradas, se FALSE, apenas aimpressora default é mostrada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalQueryFieldEdit

Page 430: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 430/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : bLigado = SalQueryFieldEdit ( hWndCampo )Descrição : Retorna o estado do flag de edição de um data field , multiline text , combo box,

 picture  ou célula de uma table window. O flag de edição está ligado quando o usuáriomodifica o valor de um data field , multiline text  ou coluna de uma table window. No caso do

objeto picture, o flag de edição é ligado quando a aplicação servidora está aberta para ediçãodeste objeto.O flag de edição não é ligado quando você recupera as informações a partir de um banco dedados.

Esta função apenas consulta o valor do flag de edição do objeto hWndCampo, não o altera.

Importante : No caso de alguns objetos ( por exemplo, o  scroll bars de uma table window ) afunção SalGetType retorna zero. Não utilize SalQueryFieldEdit com objetos onde SalGetTyperetorne zero.

Parâmetro :hWndCampo Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bLigado é TRUE se o flag de edição do objeto estiver ligado e FALSE se estiver desligado.

Função : SalQuitSintaxe : bOk =  SalQuit ( )Descrição : Encerra a aplicação.Se você estiver executando a aplicação através do Centura SQLWindows32, a sua aplicação é

encerrada e o SQLWindows32 retorna ao modo de design.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportCloseSintaxe : bOk =  SalReportClose ( hWndRelatorio )Descrição : Encerra o relatório. Utilize esta função quando você quiser fechar uma janela devisualização de relatório.

Parâmetro :hWndRelator io

Window Handle  –  O handle ou o nome de uma janela de visualização derelatório.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportCmd

Page 431: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 431/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : bOk =  SalReportCmd ( hWndRelatorio, nComando )Descrição : Envia um comando para uma janela que permite a visualização de um relatório.Utilize SalReportCmd para controlá-la.Quando você utiliza a função SalReportView, o segundo parâmetro é o handle da janela onde

o relatório será mostrado. Use a função SalReportCmd para enviar comandos para esta janelaque controla o Report Builder.

Parâmetros :hWndRelator io

Window Handle –  O handle ou o nome da janela do relatório.

nComando Number  –   O comando que será enviado para o relatório. Os comandosdisponíveis são:RPT_CmdFirstPage,RPT_CmdGotoPage,RPT_CmdLastPage,

RPT_CmdNextPage,RPT_CmdPrevPage,RPT_CmdPrint,RPT_CmdPrinterSetup,RPT_CmdSizeAtual eRPT_CmdSizeFit.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportCreateSintaxe : bOk =  SalReportCreate ( sQrp, sVariaveis, sInputs, bGerar, nErro )Descrição : Cria um template de relatório.

Parâmetros :sQrp String –  O nome do modelo do relatório a ser criado.sVariaveis String  –   A relação das variáveis do Centura que serão utilizadas para

transportar os dados do banco de dados para o relatório. Os nomes dasvariáveis devem estar separados por vírgulas. Os tipos de dados dasvariáveis devem ser os mesmos das variáveis de entrada do relatório,declaradas em sInputs.

sInputs String –  A relação de nomes das variáveis de entrada do relatório. bGerar Boolean –  Se TRUE, o Centura gera um relatório padrão e coloca em nErro 

os erros que ocorrerem .nErro Receive Number  –   Se algum erro ocorrer este parâmetro é uma das

constantes de erro do relatório, uma das constantes RPT_Err*.Quando o programa é executado através do Centura SQLWindows32 (runmode), sempre é mostrado um dialog box  com a explicação do erro queocorrer. No caso de estar executando a aplicação através do executável, odialog box de erros é mostrado apenas se este parâmetro for igual a 1.

Valor de Retorno :

Page 432: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 432/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk  é TRUE se a função for executada com sucesso, e FALSE se falhar.

Função : SalReportDlgOptins

Sintaxe : bOk =  SalReportDlgOptions ( hWndRelatorio, sTitulo, sLinha1, sLinha2, sNome )Descrição  : Configura o dialog box  que será mostrado quando o relatório estiver sendoimpresso. Use esta função após criar o relatório, mas antes de começar a imprimir.

Parâmetros :hWndRelator io

Window Handle –  O handle do relatório.

sTitulo String –  O texto que é mostrado no título do dialog box.sLinha1 String –  O texto que é mostrado na primeira linha centralizada de texto.sLinha2 String –  O texto que é mostrado na segunda linha centralizada de texto.sNome String  –   O nome do documento que é mostrado no gerenciador de

impressão.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportGetDateTimeVarSintaxe : bOk =  SalReportGetDateTimeVar ( hWndRelatorio , sVariavel , dtValor )Descrição : Obtém o valor de uma variável do relatório, tipo date/time.

Parâmetros :

hWndRelator io

Window Handle  –   O handle ou o nome de uma janela de impressão derelatório.

sVariavel String –  O nome da variável do relatório.dtValor Receive Date/Time –  O valor obtido do relatório.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportGetNumberVarSintaxe : bOk =  SalReportGetNumberVar ( hWndRelatorio, sVariavel, nValor )

Descrição : Obtém o valor de uma variável do relatório, tipo number.

Parâmetros :hWndRelator io

Window Handle  –   O handle ou o nome de uma janela de impressão derelatório.

sVariavel String –  O nome da variável do relatório.nValor Receive Number –  O valor obtido do relatório.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 433: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 433/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalReportGetObjectVarSintaxe : bOk =  SalReportGetObjectVar ( hWndRelatorio , sVariavel, sValor )Descrição : Obtém o valor de uma variável do relatório, tipo objeto.

Parâmetros :hWndRelator io

Window Handle  –   O handle ou o nome de uma janela de impressão derelatório.

sVariavel String –  O nome da variável do relatório.sValor Receive String –  O valor da variável sVariavel .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportGetStringVar

Sintaxe : bOk =  SalReportGetStringVar ( hWndRelatorio , sVariavel, sValor )Descrição : Obtém o valor de uma variável do relatório, tipo string.

Parâmetros :hWndRelator io

Window Handle  –   O handle ou o nome de uma janela de impressão derelatório.

sVariavel String –  O nome da variável do relatório.sValor Receive String –  O valor da variável sVariavel .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportPrintSintaxe  : SalReportPrint( hWndObj, sQrp, sVariaveis, sInputs, nCopias, nOpcoes, nPPag,nUPag, nErro )Descrição : Imprime um relatório.A função SalReportPrint cria uma janela minimizada do Report Builder. Um dialog box  émostrado enquanto o relatório é impresso. Quando esta função encerra, o Report Builderautomaticamente é fechado.

Obs  : Esta função estabiliza um diálogo entre o Report Builder e a aplicação. O processamento de impressão em si está no tratamento das mensagens SAM_Report*, que sãoenviadas pelo Report Builder para a aplicação.

O Centura envia as informações da aplicação para o ReportBuilder, quando a aplicaçãoretorna TRUE no processamento da mensagem SAM_ReportFetchNext. O Report Buildercontinua a enviar mensagens SAM_ReportFetchNext, até que a aplicação retorne FALSE,quando então o relatório é encerrado.

Parâmetros :hWndObj Window Handle  –   O handle do objeto da aplicação que irá receber as

mensagens SAM_Report* , e que fará todo o processamento do relatório.

Page 434: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 434/580

Programando com o Centura Team Developer 2000

Página PAGE 582

sQrp String –  O nome de um arquivo de layout de relatório.sVariaveis String  –   A relação das variáveis do Centura que serão utilizadas para

transportar os dados do banco de dados para o relatório. Os nomes dasvariáveis devem estar separados por vírgulas. Os tipos de dados das

variáveis devem ser os mesmos das variáveis de entrada do relatório,declaradas em sInputs.sInputs String –  A relação de nomes das variáveis de entrada do relatório.nCopias Number –  O número de cópias a ser impresso. Se você especificar zero ou

um número negativo, o Centura imprime apenas uma cópia.nOpcoes Number –  Você pode combinar duas ou mais dessas constantes separando-

as com o operador OR (|) :RPT_PrintAll,RPT_PrintDraft,RPT_PrintNoAbort,RPT_PrintNoErrors,

RPT_PrintNoWarn ouRPT_PrintRange.

nPPag Number  –   O número da primeira página do relatório a ser impressa ( senOpcoes incluir RPT_PrintRange).

nUPag Number  –   O número da última página do relatório a ser impressa ( senOpcoes incluir RPT_PrintRange).

nErro Receive Number –  Se a função for executada com sucesso, este parâmetro ézero. Se ocorrer algum erro, este parâmetro é um dos valores das constantesRPT_Err*.

Em modo de execução no tempo de design, o Centura sempre mostra umdialog box com uma explicação caso ocorra algum erro. No aplicativo final,*.EXE, o Centura mostra este dialog box, apenas se você atribuir 1 a este

 parâmetro, antes de chamar a função SalReportPrint.

Valor de Retorno : Nada é retornado, para obter informações sobre o sucesso ou não da execução do relatório,verifique o último parâmetro, nErro.

Função : SalReportPrintToFileSintaxe  : SalReportPrintToFile ( hWndObj, sQrp, sArquivo, sVariaveis, sInput, nCopias,nOpcoes, nPPag, nUPag, bFormato, nErro )Descrição : Imprime um relatório em arquivo no formato RTF ou ASCII.

Parâmetros :hWndObj Window Handle  –   O handle do objeto da aplicação que irá receber as

mensagens SAM_Report* , e que fará todo o processamento do relatório.sQrp String –  O nome de um arquivo de layout de relatório.sArquivo String –  O nome do arquivo.sVariaveis String  –   A relação das variáveis do Centura que serão utilizadas para

transportar os dados do banco de dados para o relatório. Os nomes das

variáveis devem estar separados por vírgulas. Os tipos de dados das

Page 435: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 435/580

Programando com o Centura Team Developer 2000

Página PAGE 582

variáveis devem ser os mesmos das variáveis de entrada do relatório,declaradas em sInputs.

sInputs String –  A relação de nomes das variáveis de entrada do relatório.nCopias Number –  O número de cópias a ser impresso. Se você especificar zero ou

um número negativo, o Centura imprime apenas uma cópia.nOpcoes Number –  Você pode combinar duas ou mais dessas constantes separando-as com o operador OR (|):RPT_PrintAll,RPT_PrintDraft,RPT_PrintNoAbort,RPT_PrintNoErrors,RPT_PrintNoWarn eRPT_PrintRange.

nPPag Number  –   O número da primeira página do relatório a ser impressa ( senOpcoes  incluir RPT_PrintRange).

nUPag Number  –   O número da última página do relatório a ser impressa ( senOpcoes  incluir RPT_PrintRange).

nErro Receive Number –  Se a função for executada com sucesso, este parâmetro ézero. Se ocorrer algum erro, este parâmetro é um dos valores das constantesRPT_Err*.

Em modo de execução no tempo de design, o Centura sempre mostra umdialog box com uma explicação caso ocorra algum erro. No aplicativo final,*.EXE, o Centura mostra este dialog box apenas se você atribuir 1 a este

 parâmetro, antes de chamar a função SalReportPrint.

Valor de Retorno : Nada é retornado. Para obter informações sobre o sucesso ou não da execução do relatório,verifique o último parâmetro, nErro.

Função : SalReportResetSintaxe : bOk =  SalReportReset ( hWndRelatorio )Descrição  : Recarrega uma janela de relatório. Esta função envia novamente a mensagemSAM_ReportFetchInit, e uma ou mais mensagens SAM_ReportFetchNext para que orelatório seja re-processado com novas informações.

Parâmetro :hWndRelator io

Window Handle –  O handle do relatório.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportSetDateTimeVarSintaxe : bOk =  SalReportSetDateTimeVar ( hWndRelatorio, sVariavel, dtValor )

Descrição : Atribui um valor a uma variável tipo date/time, definida no layout de relatório.

Page 436: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 436/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndRelator io

Window Handle –  O handle do relatório.

sVariavel String –  O nome da variável.dtValor Date/Time –  O valor que será atribuído a variável sVariavel .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportSetNumberVarSintaxe : bOk =  SalReportSetNumberVar ( hWndRelatorio, sVariavel, nValor )Descrição : Atribui um valor a uma variável tipo number, definida no layout de relatório.

Parâmetros :hWndRelator io

Window Handle –  O handle do relatório.

sVariavel String –  O nome da variável.nValor Number –  O valor que será atribuído a variável sVariavel .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportSetObjectVar

Sintaxe : bOk =  SalReportSetObjectVar ( hWndRelatorio, sVariavel, sValor )Descrição : Atribui um valor a uma variável tipo object definida no layout de relatório.

Parâmetros :hWndRelator io

Window Handle –  O handle do relatório.

sVariavel String –  O nome da variável.sValor String –  O valor que será atribuído a variável sVariavel .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportSetStringVarSintaxe : bOk = SalReportSetStringVar ( hWndRelatorio, sVariavel, sValor )Descrição : Atribui um valor a uma variável tipo string, definida no layout de relatório.

Parâmetros :hWndRelator io

Window Handle –  O handle do relatório.

sVariavel String –  O nome da variável.sValor String –  O valor que será atribuído a variável sVariavel .

Page 437: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 437/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso, e FALSE se falhar.

Função : SalReportTableCreateSintaxe : bOk =  SalReportTableCreate ( sQrp, hWndTabela, nErro )Descrição : Cria um arquivo de formato de relatório, baseado numa table window. Os nomesdas colunas da tabela serão os nomes dos itens de entrada (input itens) do relatório e os títulosdas colunas serão os mesmos das colunas do relatório. Para table window do tipo top level , otítulo do relatório será o título do formulário. Para table window do tipo child, o relatório serágerado sem título.

Parâmetros :sQrp String –  O nome do arquivo de formato de relatório que será gerado.

hWndTabela Window Handle –  O handle ou o nome do objeto table window.nErro Receive Number –  Se algum erro ocorrer, este parâmetro será igual a uma

das constantes de erro de relatório, RPT_Err*.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalReportTablePrintSintaxe : hWndRelatorio = SalReportTablePrint ( hWndTable , sQrp , nParametros , nErro )Descrição : Imprime um relatório criado a partir de uma determinada table window.

Parâmetros :hWndTable Window Handle –  O handle ou o nome de uma table window.sQrp String –  O nome do layout do relatório.nParametros Number –  Um vetor que você define, contendo as informações sobre a fila

de impressão. Os valores configurados no vetor são :RPT_PrintParamCopies ,RPT_PrintParamFirstPage ,RPT_PrintParamLastPage eRPT_PrintParamOptions.

nErro Receive Number –  Se algum erro ocorrer, este parâmetro será igual a umadas constantes de erro de relatório, RPT_Err*.

Valor de Retorno :hWndRelatorio é o handle do relatório gerado.

Função : SalReportTableViewSintaxe : hWndRelatorio = SalReportTableView ( hWndTable , hWnd , sQrp , nErro )Descrição : Mostra, em modo de preview, o relatório gerado a partir de uma table window.

Parâmetros :

Page 438: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 438/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndTable Window Handle –  O nome ou handle da table window.hWnd Window Handle  –   O nome ou handle da janela que será utilizada para

mostrar o preview do relatório.sQrp String –  O nome do layout do relatório.

nErro Receive Number –  Se algum erro ocorrer, este parâmetro será igual a umadas constantes de erro de relatório, RPT_Err*.

Valor de Retorno :hWndRelatorio é o handle do relatório gerado.

Função : SalReportViewSintaxe  : hWndRelatorio = SalReportView ( hWndFrm, hWnd, sQrp, sVariaveis, sInputs,nFlags )Descrição : Mostra um relatório em modo de preview.

Obs  : Esta função estabiliza um diálogo entre o Report Builder e a aplicação. O processamento de impressão está no tratamento das mensagens SAM_Report*, que sãoenviadas pelo Report Builder para a aplicação.

O Centura envia as informações da aplicação para o ReportBuilder, quando a aplicaçãoretorna TRUE no processamento da mensagem SAM_ReportFetchNext. O Report Buildercontinua a enviar mensagens SAM_ReportFetchNext, até que a aplicação retorne FALSE,quando então o relatório é encerrado.

Parâmetros :

hWndFrm Window Handle  –   O handle do objeto da aplicação que irá receber asmensagens SAM_Report* , e que fará todo o processamento do relatório.

hWnd Window Handle - O handle da janela onde o preview dor relatório serámostrado.

sQrp String –  O nome de um arquivo de layout de relatório.sVariaveis String  –   A relação das variáveis do Centura, que serão utilizadas para

transportar os dados do banco de dados para o relatório. Os nomes dasvariáveis devem estar separados por vírgulas. Os tipos de dados dasvariáveis devem ser os mesmos das variáveis de entrada do relatório,declaradas em sInputs.

sInputs String –  A relação de nomes das variáveis de entrada do relatório.nFlags Receive Number –  Antes de chamar esta função, você pode atribuir a este

 parâmetro uma das constantes abaixo, para configurar algumascaracteristicas da barra de ferramentas da janela de preview :

RPT_NoPrint Não mostra o botão para imprimir.RPT_NoToolbar Não mostra a barra de ferramentas.

Se ocorrer algum erro, este parâmetro é uma das constantes RPT_Err*.

Valor de Retorno :hWndRelatorio é o handle do relatório gerado.

Page 439: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 439/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalScrollGetPosSintaxe : bOk =  SalScrollGetPos ( hWnd, nPosicao )Descrição : Obtém o valor atual de uma scroll bar .

Parâmetros :hWnd Window Handle –  O nome ou o handle da scroll bar .nPosicao Receive Number –  O valor da posição da scroll bar .

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalScrollGetRangeSintaxe : bOk =  SalScrollGetRange ( hWnd, nMin, nMax, nLinha, nPag )Descrição  : Obtém as configurações da  scroll bar , o intervalo, o incremento de linha e o

incremento de página.

Parâmetros :hWnd Window Handle –  O nome ou o handle da scroll bar .nMin Receive Number –  O valor da posição mínima.nMax Receive Number –  O valor da posição máxima.nLinha Receive Number –  O valor do incremento de linha. É o valor de incremento

quando o usuário clica na seta da barra de rolagem.nPag Receive Number  –   O valor do incremento de página. É o valor de

incremento quando o usuário clica na barra lateral da barra de rolagem.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalScrollSetPosSintaxe : bOk =  SalScrollSetPos ( hWnd, nPosicao )Descrição  : Define a posição da barra de scroll. Esta função é equivalente a atribuir umdeterminado valor à bassra de rolagem.

Parâmetros :hWnd Window Handle –  O handle ou o nome da scroll bar .nPosicao Number –  A posição da  scroll bar . Se este número for um número fora do

intervalo configurado para a  scroll bar , o Centura posiciona a barra na primeira posição, ou na última, se ele ficar abaixo do menor valor ou acimado maior valor, respectivamente.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalScrollSetRangeSintaxe : bOk =  SalScrollSetRange ( hWnd, nMin, nMax, nLinha, nPag )

Page 440: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 440/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Define o intervalo ( posição inicial e final) , o incremento de linha e de página deuma scroll bar .Quando uma scroll bar  é criada, o Centura associa os seguintes valores :Posição inicial : 0

Posição final : 100Incremento de linha : 1Incremento de página : 10Parâmetros :hWnd Window Handle –  O handle ou o nome da scroll bar .nMin Number –  A posição inicial.nMax Number –  A posição final.nLinha Number - O valor do incremento de linha.nPag Number - O valor do incremento de página.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSendClassMessageSintaxe : nRetorno = SalSendClassMessage ( nMensagem, wParam, lParam )Descrição  : Ativa o código que foi implementado, ou herdado, no message actions  de umobjeto da classe.

Parâmetros :nMensagem Number –  O número da mensagem.wParam  Number –  O wParam.lParam  Number –  o lParam.

Valor de Retorno :nRetorno  é o valor retornado pela mensagem. Se a mensagem não retornar nenhum valor,nRetorno é zero.

Função : SalSendClassMessageNamedSintaxe  : nRetorno = SalSendClassMessageNamed ( NomeClasse, nMensagem, wParam,lParam )Descrição  : Ativa o código que foi implementado, ou herdado, no message actions  de umobjeto da classe.Utilize esta função quando uma classe for o resultado de uma herança múltipla e você quiserespecificar a classe base que possui o message actions a ser executado.A classe informada em NomeClasse deve ser uma classe base da classe de onde a chamadaestá sendo feita.

Parâmetros : NomeClasse Template –  O nome da classe base.nMensagem Number –  O número da mensagem.wParam Number –  O wParam.

lParam Number –  O lParam.

Page 441: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 441/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nRetorno  é o valor retornado pela mensagem. Se a mensagem não retornar nenhum valornRetorno é zero.

Função : SalSendMsgSintaxe : nRetorno = SalSendMsg ( hWnd, nMensagem, wParam, lParam )Descrição : Envia uma determinada mensagem para um objeto. O processamento é desviado

 para a mensagem enviada, só retornando quando os procedimentos codificados na mensagemterminarem.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto que receberá a mensagem.nMensagem Number –  O número da mensagem.

wParam Number –  O wParam.lParam Number –  o lParam.

Valor de Retorno :nRetorno  é o valor retornado pela mensagem. Se a mensagem não retornar nenhum valor,nRetorno é zero.

Função : SalSendMsgToChildrenSintaxe : bOk =  SalSendMsgToChildren ( hWndPai , nMensagem, wParam, lParam )Descrição : Envia uma mensagem à todos os objetos filhos de um  form window, dialog box,table window ou mdi.

Parâmetros :HWndPai Window Handle –  O handle ou nome de um form window, dialog box, table

window ou mdi.nMensagem Number –  O número da mensagem.wParam Number –  O wParam.lParam Number –  o lParam.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSendValidateMsgSintaxe : nStatus = SalSendValidateMsg ( )Descrição : Envia uma mensagem SAM_Validate para o objeto com o foco.Utilize esta função para forçar a validação de um campo, antes de processar a ação de ummenu. O Centura não envia automaticamente aos objetos a mensagem SAM_Validate quandoum menu é acionado.

Nenhum Parâmetro.

Page 442: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 442/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nStatus  pode ser um dos valores VALIDATE_Cancel, VALIDATE_Ok ouVALIDATE_OkClearFlag.

Função : SalSetDefButtonSintaxe : bOk =  SalSetDefButton ( hWndBotao )Descrição : Determina qual é o botão default de um form window ou dialog box.

Parâmetro :hWndBotao Window Handle –  O handle ou o nome de um pushbutton.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetFieldEditSintaxe : bOk =  SalSetFieldEdit ( hWndCampo , bFlag )Descrição  : Liga ou desliga o flag de edição de um data field , combo box, multiline text ,coluna da table window ou picture.O flag de edição é ligado sempre que o usuário altera o conteúdo de um data field , combo

box, multiline text , ou coluna da table window.O flag de edição não é ligado quando o conteúdo do objeto é alterado através de um comandode banco de dados ou do comando Set.

Parâmetros :

hWndCampo Window Handle –  O handle ou nome do objeto. bFlag Boolean –  Se TRUE, liga o flag. Se FALSE, desliga.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetFocusSintaxe : hWndFoco = SalSetFocus ( hWnd )Descrição : Coloca o foco num determinado objeto.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :hWndFoco é o handle do objeto que possuía o foco antes desta função ser executada.

Função : SalSetMaxDataLengthSintaxe : bOk =  SalSetMaxDataLength ( hWndCampo , nTamanho )Descrição  : Configura a quantidade limite de caracteres que podem ser armazenados numdata field , multiline text  ou coluna da table window.

Page 443: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 443/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndCampo Window Handle –  O handle ou o nome do objeto.nTamanho Number –  O número máximo de caracteres.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetProfileStringSintaxe : bOk =  SalSetProfileString ( sSeção, sEntrada, sValor, sArquivo)Descrição  : Define o valor de uma entrada de uma seção específica num arquivo deinicialização ou no registro do windows. Todos os valores armazenados devem estar emformato string. Estes valores podem ser recuperados, utilizando-se a função SalGetProfileInt.

Parâmetros :

sSeção String –  A identificação da seção.sEntrada String –  A entrada onde o valor será armazenado.sValor String –  O valor a ser armazenado.sArquivo String - O nome do arquivo de inicialização ou o nome da empresa,

dependendo da configuração feita, através da função SalUseRegistry. Casovocê esteja utilizando um arquivo de inicialização e não tenha especificadoo path completo, o Centura pesquisa pelo arquivo no subdiretório doWindows.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetWindowLabelTextSintaxe : bOk =  SalSetWindowLabelText ( hWnd, sTexto )Descrição  : Define um background text de um objeto. Para ser associado a um objeto, obackground text  precisa vir imediatamente anterior ao objeto no outline.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto.sTexto String –  O texto do background text  associado ao objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetWindowLocSintaxe : bOk =  SalSetWindowLoc ( hWnd, nX, nY )Descrição : Move um objeto para uma nova posição.

Parâmetros :hWnd Window Handle –  O handle ou nome do objeto.nX Number –  A posição do eixo X ( em unidades de form ).

Page 444: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 444/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nY Number –  A posição do eixo Y ( em unidades de form ).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetWindowSizeSintaxe : bOk =  SalSetWindowSize ( hWnd , nLargura , nAltura )Descrição : Redimensiona um objeto.

Parâmetros :hWnd Window Handle –  O handle ou o nome de um objeto.nLargura Number –  A nova largura do objeto ( em unidades de form ).nAltura Number –  A nova altura do objeto ( em unidades de form ).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalSetWindowTextSintaxe : bOk =  SalSetWindowText ( hWnd, sTexto )Descrição : Especifica o texto de um objeto.O texto de um objeto é o título de um  form window, dialog box, table window, radio button,check box ou pushbutton.

 No caso de data field  e coluna da table window, o texto é o valor do objeto em formato string.Considerando-se o tipo de dado do objeto.

Para um combo box, o texto é o valor da sua parte editável. Se o combo box  estiverconfigurado para não permitir edições, o Centura procura na lista de valores um valor quecorresponda ao texto, selecionando-o, caso encontre. Este mesmo comportamento se aplicaaos objetos do tipo list box.

A função SalSetWindowText desliga o flag de edição do campo.

Parâmetros :hWnd Window Handle –  O handle ou nome do objeto.sTexto String –  O texto do objeto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalShowWindowSintaxe : bOk =  SalShowWindow ( hWnd )Descrição : Torna um objeto visível.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Page 445: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 445/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se o estado do objeto, anterior a chamada da função, era visível, e bOk  é FALSEse o estado era invisível.

Função : SalShowWindowAndLabelSintaxe : bOk =  SalShowWindowAndLabel ( hWnd )Descrição : Torna um objeto e o seu background text  visíveis.

Parâmetro :hWnd Window Handle –  O handle ou o nome do objeto.

Valor de Retorno :bOk  é TRUE se o estado do objeto, anterior a chamada da função, era visível, e bOk  é FALSEse o estado era invisível.

Função : SalStatusGetTextSintaxe : nTamanho = SalStatusGetText ( hWnd, sText, nTamanho )Descrição : Obtém o texto mostrado na barra de status de um form window ou mdi.

Parâmetros :hWnd Window Handle –  O handle ou nome do objeto.sTexto Receive String –  O texto mostrado na barra de status.nTamanho Number –  O tamanho máximo do texto do objeto.

Valor de Retorno :nTamanho é o tamanho do texto recuperado. Se nTamanho for zero, significa que o objetonão possui texto algum.

Função : SalStatusSetTextSintaxe : bOk =  SalStatusSetText ( hWnd, sTexto )Descrição : Apresenta um determinado texto na barra de status de um form window ou de ummdi.

Parâmetros :

hWnd Window Handle –  O handle ou o nome de um form window ou mdi.sTexto String –  O texto que será mostrado na barra de status.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalStatusSetVisibleSintaxe : bOk =  SalStatusSetVisible ( hWnd, bMostra )Descrição : Mostra e esconde a barra de status de um form window ou de um mdi.

Parâmetros :

Page 446: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 446/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWnd Window Handle –  O handle ou o nome de um form window ou mdi. bMostra Boolean  –   Se TRUE, a barra de status é apresentada, se FALSE, é

escondida.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalStrCompressSintaxe : bOk =  SalStrCompress ( sString )Descrição : Comprime uma determinada string. Use esta função para comprimir strings paraarmazenamento em disco ou em bancos de dados. Use, também, para armazenamento deimagens.

Parâmetro :

sString Receive String –  A string a ser comprimida.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalStrFirstCSintaxe : bOk =  SalStrFirstC ( sString, nChar )Descrição : Extrai o primeiro caractere de uma string e retorna o seu valor decimal.

Parâmetros :

sString Receive String –  A string que terá o seu primeiro caractere retirado.nChar Receive Number –  O valor decimal do primeiro caractere em sString .

Valor de Retorno :bOk  é sempre TRUE, a menos que sString seja uma string inválida ou nula.

Função : SalStrGetBufferLengthSintaxe : nTamanho = SalStrGetBufferLength ( sString )Descrição : Retorna o tamanho do buffer de uma string.O Centura armazena as variáveis string em buffers o tamanho do buffer inclui o caractere nulo

de terminação.

Parâmetro :sString String –  A string cujo tamanho você deseja obter.

Valor de Retorno :nTamanho é o tamanho do buffer da variável.

Função : SalStrIsValidDateTimeSintaxe : bOk =  SalStrIsValidDateTime ( sDataHora )Descrição : Verifica se a string representa um valor date/time válido.

Page 447: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 447/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :sDataHora String –  Uma string contendo um valor data/hora.

Valor de Retorno :bOk  é TRUE se sDataHora contém um valor date/time válido. bOk  é FALSE se não for umvalor válido do tipo date/time.

Função : SalStrIsValidNumberSintaxe : bOk =  SalStrIsValidNumber ( sNumero )Descrição  : Verifica se o conteúdo de uma variável string representa um valor numéricoválido.

Parâmetro :

sNumero String –  A string que contém um valor numérico.

Valor de Retorno :bOk  é TRUE se sNumero for um número válido e FALSE se não for um valor válido.

Função : SalStrLeftSintaxe : nTamanho = SalStrLeft ( sOrigem, nExtrair, sDestino )Descrição  : Extrai o número de caracteres especificado em nExtrair da string em sOrigem,armazenando o resultado em sDestino. É tomado como base o primeiro caractere mais àesquerda.

Parâmetros :sOrigem String –  A string origem.nExtrair Number –  O número de caracteres a serem extraídos de sOrigem.sDestino Receive String –  A string retirada de sOrigem.

Valor de Retorno :nTamanho é o tamanho da nova string em sDestino.

Função : SalStrLeftX

Sintaxe : sDestino = SalStrLeftX ( sOrigem, nExtrair )Descrição : Extrai o número de caracteres especificado em nExtrair da string em sOrigem. Étomado como base o primeiro caractere mais à esquerda.

Parâmetros :sOrigem String –  A string origem.nExtrair Number –  O número de caracteres a ser extraído de sOrigem.

Valor de Retorno : sDestino é a nova string.

Page 448: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 448/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrLengthSintaxe : nTamanho = SalStrLength ( sString )Descrição : Retorna o tamanho de uma string.O Centura, ao armazenar uma string, coloca um caractere nulo indicando o final da string.

Este caractere não está incluído no seu tamanho.

Parâmetro :sString String –  A string cujo tamanho você quer obter.

Valor de Retorno :nTamanho é o tamanho da string.

Função : SalStrLopSintaxe : nCaractere = SalStrLop ( sString )

Descrição : Retorna o valor numérico decimal, padrão ASCII, do primeiro caractere de umastring, removendo-o.

Parâmetro :sString Receive String –  A variável string.

Valor de Retorno :nCaractere  é o valor ASCII do primeiro caractere da string. Quando a string é nula,nCaractere é igual a zero.

Função : SalStrLowerSintaxe : nTamanho = SalStrLower ( sOrigem, sDestino )Descrição : Converte uma string para letras minúsculas.

Parâmetros :sOrigem String –  A string a ser convertida.sDestino String –  A string já convertida.

Valor de Retorno :nTamanho é o tamanho da variável sDestino.

Função : SalStrLowerXSintaxe : sDestino = SalStrLowerX ( sOrigem )Descrição : Converte uma string para letras minúsculas.

Parâmetro :sOrigem String –  A string a ser convertida.

Valor de Retorno : sDestino é a string sOrigem convertida.

Page 449: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 449/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrMidSintaxe : nTamanho = SalStrMid ( sOrigem , nPosInicial, nQtdCarac, sDestino )Descrição : Retorna uma parte da string original, iniciando na posição nPosInicial, contendo onúmero de caracteres especificado em nQtdCarac.

Parâmetros :sOrigem String –  É a string original.nPosInicial Number –  É a posição inicial da string que você deseja obter.nQtdCarac Number  –  É a quantidade de caracteres que você deseja obter, a partir da

 posição inicial. Observe que a posição mais à esquerda da string é a posiçãozero.

sDestino Receive String –  É a porção que foi retirada da string original.

Valor de Retorno :nTamanho é o tamanho da string obtida.

Função : SalStrMidXSintaxe : sDestino = SalStrMidX ( sOrigem , nPosInicial, nQtdCarac )Descrição : Retorna uma parte da string original, iniciando na posição nPosInicial , contendoo número de caracteres especificado em nQtdCarac.

Parâmetros :sOrigem String –  É a string original.nPosInicial Number –  É a posição inicial da string que você deseja obter.nQtdCarac Number  –  É a quantidade de caracteres que você deseja obter, a partir da

 posição inicial. Observe que a posição mais à esquerda da string é a posiçãozero.

Valor de Retorno : sDestino é a porção que foi retirada da string original.

Função : SalStrProperSintaxe : nTamanho = SalStrProper ( sOrigem, sDestino )Descrição  : Converte uma string, de modo que todas as palavras iniciem por letrasmaiúsculas.

Parâmetros :sOrigem String –  A string a ser convertida.sDestino String –  A string já convertida.

Valor de Retorno :nTamanho é o tamanho da variável sDestino.

Função : SalStrProperXSintaxe : sDestino = SalStrProperX ( sOrigem )

Page 450: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 450/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição  : Converte uma string, de modo que todas as palavras iniciem por letrasmaiúsculas.

Parâmetro :

sOrigem String –  A string a ser convertida.

Valor de Retorno : sDestino é a string já convertida.

Page 451: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 451/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrRepeatSintaxe : nTamanho = SalStrRepeat ( sOrigem, nQtd, sDestino )Descrição : Concatena uma string com ela mesma, um determinado número de vezes.

Parâmetros :sOrigem String –  A string origem.nQtd Number –  é o número de vezes que a string será concatenada.sDestino Receive String –  é a nova string gerada.

Valor de Retorno :nTamanho é o tamanho da nova string obtida.

Função : SalStrRepeatXSintaxe : sDestino = SalStrRepeatX ( sOrigem, nQtd )

Descrição : Concatena uma string com ela mesma, um determinado número de vezes.

Parâmetros :sOrigem String –  A string origem.nQtd Number –  é o número de vezes que a string será concatenada.

Valor de Retorno : sDestino é a nova string gerada.

Função : SalStrReplace

Sintaxe : nTamanho = SalStrReplace ( sOrigem, nPosInicial, nTamanho, sTroca, sDestino )Descrição : Substitui caracteres de uma string por caracteres de outra string.

Parâmetros :sOrigem String –  A string origem, que contém os caracteres que serão substituídos.nPosInicial Number –  A posição inicial, onde a busca terá início.nTamanho Number –  O número de caracteres a serem substituídos.sTroca String –  A string nova, que será inserida a partir da posição em nPosInicial.sDestino Receive String –  A nova string.

Valor de Retorno :nTamanho é o tamanho da nova string.

Função : SalStrReplaceXSintaxe : sDestino = SalStrReplaceX ( sOrigem, nPosInicial, nTamanho, sTroca )Descrição : Substitui caracteres de uma string por caracteres de outra string.

Parâmetros :sOrigem String –  A string origem, que contém os caracteres que serão substituídos.nPosInicial Number –  A posição inicial, onde a busca terá início.nTamanho Number –  O número de caracteres a serem substituídos.

Page 452: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 452/580

Programando com o Centura Team Developer 2000

Página PAGE 582

sTroca String –  A string nova, que será inserida a partir da posição em nPosInicial.

Valor de Retorno : sDestino é a nova string.

Page 453: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 453/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrRightSintaxe : nTamanho = SalStrRight ( sOrigem , nNumCarac, sDestino )Descrição  : Obtém uma string de um determinado tamanho, começando com o últimocaractere de sOrigem.

Parâmetros :sOrigem String –  A string origem.nNumCarac Number –  O número de caracteres a ser extraído da variável sOrigem.sDestino Receive String –  A nova string.

Valor de Retorno :nTamanho é o tamanho da nova string.

Função : SalStrRightX

Sintaxe : sDestino = SalStrRightX ( sOrigem , nNumCarac )Descrição  : Obtém uma string de um determinado tamanho, começando com o últimocaractere de sOrigem.

Parâmetros :sOrigem String –  A string origem.nNumCarac Number –  O número de caracteres a ser extraído da variável sOrigem.

Valor de Retorno : sDestino é a nova string.

Função : SalStrScanSintaxe : nPosInicial = SalStrScan ( sOrigem, sBuscar )Descrição : Pesquisa por sBuscar  em sOrigem e retorna a primeira posição onde  sBuscar  foiencontrada.

Parâmetros :sOrigem String –  A string origem, cujo caractere inicial é zero..sBuscar String –  É a string que você deseja encontrar em sOrigem.

Valor de Retorno :nPosInicial  é a posicão onde a string  sBuscar  foi encontrada em  sOrigem. Se o Centura nãoencontrá-la, nPosInicial  será – 1.

Função : SalStrSetBufferLengthSintaxe : bOk =  SalStrSetBufferLength ( sString, nTamanho )Descrição : Define o tamanho do buffer de uma variável string. Este procedimento só se faznecessário quando precisamos utilizar uma variável tipo Receive String junto com umafunção externa.

Parâmetros :

Page 454: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 454/580

Programando com o Centura Team Developer 2000

Página PAGE 582

sString String –  A variável string cujo tamanho do buffer você deseja definir.nTamanho Number –  O tamanho da variável sString .

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 455: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 455/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrToDateSintaxe : dtData = SalStrToDate ( sValorData )Descrição : Converte uma string em um valor tipo Date/Time. Esta função utiliza o formatode data do sistema operacional. Para utilizar um formato independente, utilize a função

SalDateConstruct.

Parâmetro :sValorData String –  O valor a ser convertido para o tipo de dado Date/Time.

Valor de Retorno :dtData é a data convertida.

Função : SalStrTokenizeSintaxe : nQtd = SalStrTokenize ( sOrigem , sInicial , sFinal, sVetor )

Descrição : Divide uma string em partes, baseado nos caracteres delimitadores inicial e final.O Centura usa os delimitadores para reconhecer o início e fim de cada parte da string.

Parâmetros :sOrigem String –  A string a ser dividida.sInicial String –  A string que contém o delimitador inicial.sFinal String –  A string que contém o delimitador final.sVetor String Array –  Um vetor que será criado com as partes divididas da string

 sOrigem.

Valor de Retorno :nQtd  é a quantidade de partes em que a string original foi dividida.

Função : SalStrToNumberSintaxe : nNumero = SalStrToNumber ( sString )Descrição : Converte uma string em um número.

Parâmetro :sString String –  A string a ser convertida.

Valor de Retorno :nNumero é o número resultado da conversão.

Função : SalStrTrimSintaxe : nNovoTamanho = SalStrTrim ( sOrigem, sDestino )Descrição : Elimina os espaços encontrados no início e no final da variável string. Os espaçosduplos e os tabs encontrados no meio da string são convertidos em um espaço simples.

Parâmetros :sOrigem String –  A string original.sDestino Receive String –  A nova string.

Page 456: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 456/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nNovoTamanho é o tamanho da string sDestino.

Page 457: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 457/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalStrTrimXSintaxe : sDestino = SalStrTrimX ( sOrigem )Descrição : Elimina os espaços encontrados no início e no final da variável string. Os espaçosduplos e os tabs encontrados no meio da string são convertidos em um espaço simples.

Parâmetro :sOrigem String –  A string original.

Valor de Retorno : sDestino é a nova string.

Função : SalStrUncompressSintaxe : bOk =  SalStrUncompress ( sString )Descrição : Descomprime uma determinada string. Use esta função para descomprimir strings

que foram comprimidas, utilizando-se a função SalStrCompress.

Parâmetro :sString Receive String –  A string a ser descomprimida.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalStrUpperSintaxe : nTamanho = SalStrUpper( sOrigem, sDestino )

Descrição : Converte todas as letras de uma variável em suas respectivas letras maiúsculas.

Parâmetros :sOrigem String –  A string a ser convertida.sDestino Receive String –  A string já convertida em letras maiúsculas.

Valor de Retorno :nTamanho é o tamanho da string sDestino.

Função : SalStrUpperX

Sintaxe : sDestino = SalStrUpperX( sOrigem )Descrição : Converte todas as letras de uma variável em suas respectivas letras maiúsculas.

Parâmetro :sOrigem String –  A string a ser convertida.

Valor de Retorno : sDestino é a string convertida.

Função : SalTBarSetVisibleSintaxe : bOk =  SalTBarSetVisible ( hWnd, bVisivel )

Page 458: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 458/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Mostra ou esconde a barra de ferramentas de um top level  ou de um mdi.

Parâmetros :hWnd Window Handle –  O handle ou o nome do top level  ou do mdi.

 bVisivel Boolean  –  Use TRUE para mostrar a barra de ferramentas e FALSE paraesconder.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 459: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 459/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblAnyRowsSintaxe : bOk =  SalTblAnyRows ( hWndTabela, nFlagsOn, nFlagsOff )Descrição : Verifica se alguma linha de uma table window possui os flags indicados.Se você especificar zero nos parâmetros nFlagsOn e nFlagsOff, a função SalTblAnyRows

retornará TRUE se a table window tiver alguma linha, independente do seu flag.

Parâmetros :hWndTabela Window Handle –  O handle da tabela.nFlagsOn Number –  Os flags que a linha deverá ter. Você pode combinar mais de um

flag usando o operador OR (|) para concatená-los. Os flags que podem serutilizados são representados pelas constantes ROW_*

nFlagsOff Number –  Os flags que a linha não deverá ter. Você pode combinar mais deum flag usando o operador OR (|) para concatená-los. Os flags que podemser utilizados são representados pelas constantes ROW_*

Valor de Retorno :bOk  é TRUE, se a table window tiver alguma linha com os flags indicados em nFlagsOn e senão tiver nenhuma linha com os flags em nFlagsOff .

Função : SalTblClearSelectionSintaxe : bOk =  SalTblClearSelection ( hWndTabela )Descrição : Desmarca todas as linhas de uma table window.

Parâmetro :hWndTabela Window Handle –  O handle ou o nome da table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblColumnAverageSintaxe  : nMedia = SalTblColumnAverage ( hWndTabela , nNumColuna, nFlagsOn,nFlagsOff )Descrição  : Calcula a média dos valores de todas as colunas ou apenas da colunaespecificada.O Centura utiliza os flags de linha para identificar as linhas que você deseja calcular a média.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nNumColuna Number –  O identificador da coluna.nFlagsOn Number –  Os flags que a linha deverá ter. Você pode combinar mais de um

flag usando o operador OR (|) para concatená-los. Os flags que podem serutilizados são representados pelas constantes ROW_*

nFlagsOff Number –  Os flags que a linha não deverá ter. Você pode combinar mais deum flag usando o operador OR (|) para concatená-los. Os flags que podemser utilizados são representados pelas constantes ROW_*

Page 460: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 460/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nMedia é a média de todos os valores das colunas de uma table window ou apenas da colunaespecificada. Se algum erro ocorrer, nMedia será igual a zero.

Page 461: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 461/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblColumnSumSintaxe : nSoma = SalTblColumnSum ( hWndTabela , nNumColuna, nFlagsOn, nFlagsOff )Descrição : Calcula a soma dos valores de todas as colunas ou apenas da coluna especificada.O Centura utiliza os flags de linha para identificar as linhas que você deseja calcular a soma.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nNumColuna Number –  O identificador da coluna.nFlagsOn Number –  Os flags que a linha deverá ter. Você pode combinar mais de um

flag usando o operador OR (|) para concatená-los. Os flags que podem serutilizados são representados pelas constantes ROW_*

nFlagsOff Number –  Os flags que a linha não deverá ter. Você pode combinar mais deum flag usando o operador OR (|) para concatená-los. Os flags que podemser utilizados são representados pelas constantes ROW_*

Valor de Retorno :nSoma é a soma de todos os valores das colunas de uma table window ou apenas da colunaespecificada. Se algum erro ocorrer, nSoma será igual a zero.

Função : SalTblCopyRowsSintaxe : bOk =  SalTblCopyRows ( hWndTabela , nFlagsOn, nFlagsOff )Descrição : Copia o conteúdo das linhas de uma table window  para a área de transferência,em formato texto. Na área de transferência as colunas são separadas pelo caractere TAB, e aslinhas pelo caractere de fim de linha.

Especifique zero em nFlagsOn e zero em nFlagsOff  para copiar a tabela inteira.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nFlagsOn Number –  Os flags que a linha deverá ter. Você pode combinar mais de um

flag usando o operador OR (|) para concatená-los. Os flags que podem serutilizados são representados pelas constantes ROW_*

nFlagsOff Number –  Os flags que a linha não deverá ter. Você pode combinar mais deum flag usando o operador OR (|) para concatená-los. Os flags que podemser utilizados são representados pelas constantes ROW_*

Valor de Retorno :bOk   é TRUE se alguma linha da table window  foi copiada para a área de transferência eFALSE se nenhuma linha foi copiada, ou se alguma linha não pôde ser copiada para a área detransferência.

Função : SalTblCreateColumnSintaxe  : nColuna = SalTblCreateColumn ( hWndTabela, nPosicao, nLargura, nTamMax,sTitulo )Descrição : Cria uma coluna numa table window em tempo de execução. A coluna criada é do

tipo string.

Page 462: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 462/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nPosicao Number –  A posição visual da coluna na table window. Especifique 1 para

que a coluna seja criada na posição mais à esquerda da tabela. Especifique 2 para que a coluna seja a segunda, e assim por diante.nLargura Number –  É a largura da coluna em polegadas.nTamMax Number –  É o maior número de caracteres que a coluna pode armazenar.sTitulo String –  O título da coluna.

Valor de Retorno :nColuna é o identificador da coluna. Se algum erro ocorrer, nColuna é igual a zero.

Função : SalTblDefineRowHeader

Sintaxe  : bOk =  SalTblDefineRowHeader ( hWndTabela, sTitulo, nLargura, nFlag,hWndColuna )Descrição : Define a aparência e o comportamento do cabeçalho da linha ( row header  ). Ocabeçalho da linha é a área não editável situada à esquerda da table window, que é usadanormalmente para mostrar informações sobre o estado da linha. Pode ser também usado paramostrar o número da linha.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.sTitulo String –  O título da coluna do cabeçalho da linha (row header).nLargura Number –  A largura do cabeçalho da linha (row header).

nFlag Number  –  Os atributos do cabeçalho da linha. Você pode combinar estesflags utilizando o operador OR ( | ). Entre os possíveis valores para o flagestão : TBL_RowHdr_MarkEdits, TBL_RowHdr_ShareColor,TBL_RowHdr_Sizable ou TBL_RowHdr_Visible.

hWndColuna Window Handle  –   Opcionalmente, o cabeçalho da linha pode mostrarinformações de alguma coluna da table window, então, você pode informarneste parâmetro o handle da coluna. Caso informe hWndNULL, a coluna docabeçalho da linha ficará vazia.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblDefineSplitWindowSintaxe : bOk =  SalTblDefineSplitWindow ( hWndTabela , nLinhas, bDimensionavel )Descrição : Divide uma table window horizontalmente em duas partes.Você pode inserir linhas numa metade menor da table window. Isto é conveniente quando nãose tem conhecimento do número total de linhas de uma table window. Esta área da table

window também pode ser usada para mostrar um resumo de informações, totais etc.

Parâmetros :

hWndTabela Window Handle –  O handle (ou o nome) da table window.

Page 463: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 463/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nLinhas Number  –  O número de linhas que a nova área dividida da table window terá.

 bDimensionavel

Boolean  –   Se você informar TRUE, o usuário poderá redimensionar otamanho desta nova área criada. Se informar FALSE, o usuário não podera

alterar o tamanho.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblDeleteRowSintaxe : bOk =  SalTblDeleteRow ( hWndTabela , nLinha , nAjustar )Descrição  : Apaga uma linha da table window, mas não apaga a linha correspondente no

 banco de dados.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da tabela.nLinha Number –  O número da linha que você deseja apagar.nAjustar Boolean  –   Se você especificar TBL_Adjust, o Centura apaga a linha da

table window  e do result set do SQLBase. Se você especificarTBL_NoAdjust, a sincronização entre a table window  e o result set não éfeita.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 464: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 464/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblDeleteSelectedSintaxe : bOk =  SalTblDeleteSelected ( hWndTabela , hSql )Descrição  : Aplica um comando SQL DELETE para todas as linhas da table window marcadas com o flag ROW_Selected. Antes de ser utilizado nesta função, o comando

DELETE precisa ser preparado.Assim que a linha for apagada do banco de dados, o Centura apaga também da table window.Como esta função não executa um comando COMMIT, você deverá executá-lo para garantirque a operação de DELETE não será perdida, no caso de um ROLLBACK.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.hSql Sql Handle –  O handle com o comando DELETE previamente preparado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblDestroyColumnsSintaxe : bOk =  SalTblDestroyColumns ( hWndTabela )Descrição : Esta função destrói todas as colunas que foram criadas automaticamente, atravésda função SalTblCreateColumn, e as colunas criadas em tempo de execução pela funçãoSalTblPopulate. Funciona apenas nas table window  que possuem apenas colunas criadasdinamicamente.

Parâmetro :hWndTabela Window Handle –  O handle (ou o nome) da table window.

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se a tabela possuir colunascriadas em tempo de design, ou se o handle informado for inválido.

Função : SalTblDoDeletesSintaxe : bOk =  SalTblDoDeletes ( hWndTabela , hSql , nFlagsOn )Descrição  : Aplica um comando SQL DELETE para todas as linhas da table window marcadas com o flag especificado em nFlagsOn. Antes de ser utilizado nesta função, ocomando DELETE precisa ser preparado.Assim que a linha for apagada do banco de dados, o Centura apaga também da table window.Como esta função não executa um comando COMMIT, você deve executá-lo para garantirque a operação de DELETE não será perdida no caso de um ROLLBACK.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.hSql Sql Handle  –   O handle sql com o comando DELETE previamente

 preparado.nFlagsOn Number  –   O Centura usa este flag para determinar quais linhas da table

window serão apagadas.

Você pode especificar um dos seguintes flags : ROW_MarkDeleted e

Page 465: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 465/580

Programando com o Centura Team Developer 2000

Página PAGE 582

ROW_Selected.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se o handle da tabela, ou o

handle sql, forem inválidos.

Page 466: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 466/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblDoInsertsSintaxe : bOk =  SalTblDoInserts ( hWndTabela , hSql , bLimparFlags )Descrição  : Executa um comando SQL INSERT para todas as linhas da table window quetiverem o flag ROW_New ligados. O comando INSERT precisa ser preparado antes de

utilizar esta função.Como esta função não executa o comando COMMIT, você precisa executá-lo para garantirque a operação de INSERT não será perdida no caso de um ROLLBACK.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.hSql Sql Handle –  O handle com o comando INSERT preparado.

 bLimparFlags Boolean –  Se você especificar TRUE, o Centura limpa o flag ROW_New decada linha inserida no banco de dados. Se você especificar FALSE oCentura não limpa o flag.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso, e FALSE se o handle da tabela ou ohandle sql forem inválidos.

Função : SalTblDoUpdatesSintaxe : bOk =  SalTblDoUpdates ( hWndTabela , hSql , bLimparFlags )Descrição : Executa um comando SQL UPDATE para todas as linhas da table window quetiverem o flag ROW_Edited ligados. O comando UPDATE deverá ser preparado antes deutilizar esta função.Como esta função não executa um comando COMMIT, você precisa executá-lo para garantir

que a operação de UPDATE não será perdida, no caso de um ROLLBACK.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.hSql Sql Handle –  O handle com o comando UPDATE preparado.

 bLimparFlags Boolean –  Se você especificar TRUE, o Centura limpa o flag ROW_Editedde cada linha inserida no banco de dados. Se você especificar FALSE, oCentura não limpa o flag.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso, e FALSE se falhar.

Função : SalTblFetchRowSintaxe : nResultado = SalTblFetchRow ( hWndTabela , nLinha )Descrição  : Se a linha especificada em nLinha  não estiver no cache da table window, oCentura envia uma mensagem SAM_FetchRow para a table window, permitindo que a linhaseja recuperada do banco de dados ou de alguma outra fonte de dados.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.

nLinha Number –  O número da linha.

Page 467: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 467/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :nResultado é um dos seguintes valores:  TBL_RowDeleted –  Se a linha especificada não pôde ser recuperada porque foi apagada

 por outra transação;  TBL_RowFetched –  Se a linha foi recuperada com sucesso ;  TBL_NoMoreRows - Se a linha especificada não pôde ser recuperada porque não foi

encontrada, e quando não existem mais linhas além da linha informada.

Page 468: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 468/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblFindNextRowSintaxe : bOk =  SalTblFindNextRow ( hWndTabela , nLinha , nFlagsOn , nFlagsOff )Descrição  : A partir da linha especificada, pesquisa por uma linha que atenda asconfigurações dos flags informados. A pesquisa pára na primeira linha encontrada que

contenha um dos flags especificados em nFlagsOn, e não contenha nenhum dos flags emnFlagsOff .Utilize esta função num loop ( comandos While e Loop... ) para encontrar todas as linhas quesatisfaçam uma condição.Você não precisa incrementar o número da linha, o Centura continua a pesquisa iniciando na

 próxima linha. Para iniciar a pesquisa na primeira linha, especifique TBL_MinRow emnLinha.

Atenção : Você não pode utilizar TBL_MinRow, se antes associar este valor a uma variável.Isto porque TBL_MinRow é uma constante do Centura, e o parâmetro nLinha é um parâmetrotipo receive, assim, seu valor poderá ser alterado na função.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da tabela.nLinha Receive Number  –  A linha onde o Centura irá iniciar a pesquisa. A busca

inicia no valor informado em nLinha + 1. Quando o Centura encontra umalinha, ele retorna o número desta neste parâmetro.

nFlagsOn Number –  O flag que a linha deverá ter.nFlagsOff Number –  O flag que a linha não pode ter.

Você pode especificar os flags ROW_* em ambos os parâmetros (nFlagsOn  e nFlagsOff   ). Se quiser, pode especificar mais de um flag,separando-os com o operador OR ( | ).

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se nenhuma linha forencontrada.

Função : SalTblFindPrevRowSintaxe : bOk =  SalTblFindPrevRow ( hWndTabela , nLinha , nFlagsOn , nFlagsOff )Descrição : A partir da linha especificada, pesquisa em ordem decrescente, por uma linha queatenda as configurações dos flags informados. A pesquisa pára na primeira linha encontradaque contenha um dos flags especificados em nFlagsOn, e não contenha nenhum dos flags emnFlagsOff .Utilize esta função num loop (comandos While ,  Loop... ) para encontrar todas as linhas quesatisfaçam a condição especificada.Você não precisa decrementar o número da linha, o Centura continua a pesquisa iniciando nalinha anterior. Para iniciar a pesquisa na última linha, especifique TBL_MaxRow em nLinha.

Atenção : Você não pode utilizar TBL_MaxRow se antes associar este valor a uma variável.Isto porque TBL_MaxRow é uma constante do Centura, e o parâmetro nLinha  é um

 parâmetro tipo receive, assim, seu valor poderá ser alterado na função.

Parâmetros :

Page 469: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 469/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndTabela Window Handle –  O handle (ou o nome) da tabela.nLinha Receive Number  –  A linha onde o Centura irá iniciar a pesquisa. A busca

inicia no valor informado em nLinha - 1. Quando o Centura encontra umalinha, ele retorna o número desta neste parâmetro.

nFlagsOn Number –  O flag que a linha deverá ter.nFlagsOff Number –  O flag que a linha não pode ter.Você pode especificar os flags ROW_* em ambos os parâmetros (nFlagsOn  e nFlagsOff   ). Se quiser, pode especificar mais de um flag,separando-os com o operador OR ( | ).

Valor de Retorno :bOk   é TRUE se a função for executada com sucesso e FALSE se nenhuma linha forencontrada.

Page 470: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 470/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblGetColumnTextSintaxe : bOk =  SalTblGetColumnText ( hWndTabela , nColuna , sTexto )Descrição  : Recupera os dados contidos numa coluna da table window. Será recuperado ovalor da linha que estiver com o contexto.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.nColuna Number –  O identificador da coluna. É a ordem da coluna no outline.sTexto Receive String –  Os dados da coluna.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblGetColumnTitle

Sintaxe : nTamanho = SalTblGetColumnTitle ( hWndColuna , sTexto , nTamanho )Descrição : Obtém o título de uma table window.

Parâmetros :hWndColuna Window Handle –  O handle (ou o nome) de uma coluna da table window.sTexto Receive String –  O título da coluna.nTamanho Number –  O tamanho máximo do título a ser recuperado.

Valor de Retorno :nTamanho é o tamanho do título recuperado em sTexto.

Função : SalTblGetColumnWindowSintaxe : hWndColuna = SalTblGetColumnWindow ( hWndTabela , nColuna , nFlags )Descrição : Obtém o handle de uma coluna da table window.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.nColuna Number - O identificador da coluna. É a ordem da coluna no outline.nFlags Number –  Uma constante que mostra quando o valor em nColuna identifica

a posição da coluna no outline, ou a posição visual da coluna. Os possíveisvalores são COL_GetID e COL_GetPos.

Valor de Retorno :hWndColuna é o handle da coluna recuperada. hWndColuna é hWndNULL, se o Centura nãoconseguir encontrar a coluna.

Função : SalTblInsertRowSintaxe : nNovaLinha = SalTblInsertRow ( hWndTabela , nLinha )Descrição : Inclui uma linha em branco numa table window.

Parâmetros :

Page 471: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 471/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndTabela Window Handle –  O handle (ou o nome) da table window.nLinha Number –  O número da nova linha.

Se este valor for um valor válido de uma linha existente na table window, oCentura insere a linha na localização exata. Se você especificar

TBL_MaxRow, o Centura inclui a linha no final da table window.Se a table window estiver dividida, ou seja, se a split window estiver ativa, evocê especificar TBL_MinSplitRow, o Centura adiciona a linha na primeiralinha da split window.

Valor de Retorno :nNovaLinha é o número da nova linha, se a função for executada com sucesso. Será igual aTBL_Error, se ocorrer algum erro.

Função : SalTblKillEdit

Sintaxe : bOk =  SalTblKillEdit ( hWndTabela )Descrição : Tira a linha do modo de edição, selecionando-a. Isto faz com que a linha recebaas mensagens SAM_Validate e SAM_KillFocus.

Parâmetro :hWndTabela Window Handle –  O handle (ou o nome) da table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblKillFocusSintaxe : bOk =  SalTblKillFocus ( hWndTabela )Descrição : Desliga o focus frame de uma table window, ou seja, tira o foco da table window.

Parâmetro :hWndTabela Window Handle –  O handle (ou o nome) de uma table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblObjectsFromPointSintaxe  : bOk = SalTblObjectsFromPoint ( hWndTabela, nX, nY, nLinha, hWndColuna,nFlags )Descrição : Obtém a parte da table window localizada numa determinada coordenada.

Parâmetros :hWndTabela Window Handle –  O handle da table window.nX Number  –   As coordenadas referentes ao lado esquerdo superior da table

window.nY Number  –   As coordenadas referentes ao lado esquerdo superior da table

window.

Page 472: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 472/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nLinha Receive Number –  Se nY  estiver por cima de uma linha da tabela, nLinha éo número dessa linha.

hWndColuna Receive Window Handle - Se nY  estiver por cima de uma coluna da tabela,hWndColuna é o handle dessa coluna.

hFlags Receive Number  –   A parte da table window. Mostra a posição em que acoordenada X está localizada.Pode ser uma das seguintes constantes :TBL_XOverLockedColumnsTBL_XOverLockedColumnsBorderTBL_XOverRowHeaderTBL_XOverUnlockedColumns

 No caso da coordenada Y, pode ser uma das seguintes constantes :TBL_YOverColumnHeaderTBL_YOverNormalRows

TBL_YOverSplitBarTBL_YOverSplitRows

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso, e FALSE se falhar.

Função : SalTblPasteRowsSintaxe : bOk =  SalTblPasteRows ( hWndTabela )Descrição : Cola o conteúdo da área de transferência na table window especificada.O Centura assume que as informações contidas na área de transferência estão separadas por

tabulações, e em formato texto. O Centura inclui as novas linhas na table window, semsobrepor as linhas já existentes, e converte aos tipos de dados correspondentes às colunas datable window.

Parâmetro :hWndTabela Window Handle –  O handle (ou nome) da table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblPopulateSintaxe : bOk =  SalTblPopulate ( hWndTabela , hSql, sSelect, nMetodo )Descrição  : Compila e executa um comando SELECT, recupera as linhas do result set   ecarrega-as na table window. Além de gerenciar a navegação na tabela.Esta função também trabalha com table windows que não possuem colunas. O Centura cria ascolunas em tempo de execução, baseado na lista de colunas do comando SELECT, utilizandoos tipos de dados e os nomes das colunas, como títulos das colunas. Se você chamar a funçãoSalTblPopulate novamente, durante a mesma seção, o Centura destruirá as colunas criadasautomaticamente pelo último comando SELECT executado e criará novas colunas.

Page 473: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 473/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A função SalTblPopulate também trabalha com comandos SELECT que não possuem acláusula INTO. A table window  precisa ter o mesmo número de colunas do comandoSELECT, e seus tipos de dados precisam ser correspondentes.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.hSql Sql Handle  –   O handle sql que será utilizado para executar o comando

SELECT informado em sSelect .sSelect String  –  O comando SELECT. Se você passar como parâmetro uma string

nula (STRING_Null) o Centura utiliza o último comando preparado emhSql. Com isto, evita-se a necessidade de reprocessar o mesmo comandoSELECT a cada chamada desta função.

nMetodo Number –  O modo como a table window será populada. Especifique um dosvalores:TBL_FillAll –  Carrega todos os dados retornados no comando SELECT, de

uma só vez. Só libera o acesso ao usuário quando todas as linhas do resultset forem carregadas na table window.TBL_FillAllBackground –  Carrega os dados necessários para ocuparem a

 parte visível da table window. Passa então o controle para a aplicação,enquanto continua a trazer as linhas restantes em segundo plano (

 background ).TBL_FillNormal - Carrega os dados necessários para ocuparem a partevisível da table window. O restante só é carregado quando o usuáriosolicitar, clicando na barra de rolagem.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se o handle da tabela, ou ohandle sql, forem inválidos.

Função : SalTblQueryColumnFlagsSintaxe : bLigado = SalTblQueryColumnFlags ( hWndColuna , nFlags )Descrição : Testa o estado dos flags de uma coluna de uma table window.

Parâmetros :hWndColuna Window Handle –  O handle (ou o nome) da table window.nFlags Number  –  os flags da coluna para serem testados. Você pode combinar os

flags de coluna ( COL_* ) utilizando o operador OR ( | ).

Valor de Retorno :bLigado é TRUE, se um dos flags indicados em nFlags estiver ativo, e FALSE, se nenhumdos flags indicados em nFlags estiver ativo.

Função : SalTblQueryColumnIDSintaxe : nColID = SalTblQueryColumnID ( hWndColuna )Descrição : Obtém o identificador de uma coluna de uma table window. A posição da coluna

no outline.

Page 474: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 474/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro :hWndColuna Window Handle –  O handle ou o nome da table window.

Valor de Retorno :nColID é o identificador da coluna, será – 1 se o handle em hWndColuna for inválido.

Função : SalTblQueryColumnPosSintaxe : nPosicao = SalTblQueryColumnPos ( hWndColuna )Descrição : Obtém a posição relativa da coluna na table window. A posição visual.

Parâmetro :hWndColuna Window Handle –  O handle da table window.

Valor de Retorno :nPosicao é a posição visual da coluna na table window.

Função : SalTblQueryColumnWidthSintaxe : bOk =  SalTblQueryColumnWidth ( hWndColuna , nFormUnits )Descrição : Obtém a largura ( em form units) de uma coluna da table window.

Parâmetros :hWndColuna Window Handle –  O handle da coluna.nFormUnits Receive Number –  A largura da coluna.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQueryContextSintaxe : nLinha = SalTblQueryContext ( hWndTabela )Descrição : Retorna a linha com o contexto numa table window. Esta, normalmente, é a linhaque está com o foco.

Parâmetro :

hWndTabela Window Handle –  O handle ou o nome da table window.

Valor de Retorno :nLinha é o número da linha que está com o contexto.

Função : SalTblQueryFocusSintaxe : bOk =  SalTblQueryFocus ( hWndTabela , nLinha , hWndColuna )Descrição : Identifica a célula que está com o foco, numa table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da tabela.

Page 475: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 475/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nLinha Receive Number –  O número da linha que está com o foco.hWndColuna Receive Window Handle –  O handle da coluna que está com o foco.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQueryLinesPerRowSintaxe : bOk = SalTblQueryLinesPerRow ( hWndTabela , nLinhas )Descrição  : Obtém a altura em linhas das linhas da table window. Com a funçãoSalTblSetLinesPerRow você pode definir a altura das linhas da table window, essa altura é aexpressa em número de linhas.

Parâmetro :hWndTabela Window Handle –  O handle (ou o nome) da table window.

nLinhas Receive Number - Um número que equivale a altura das linhas da tablewindow.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQueryLockedColumnsSintaxe : nNum = SalTblQueryLockedColumns ( hWndTabela )Descrição : Obtém o número de colunas travadas de uma table window. As colunas travadasnão são roladas horizontalmente numa table window, quando o usuário aciona as setas da

 barra horizontal.

Parâmetro :hWndTabela Window Handle –  O handle (ou o nome) da table window.

Valor de Retorno :nNum é o número de colunas travadas da table window especificada.

Função : SalTblQueryRowFlagsSintaxe : bOk =  SalTblQueryRowFlags ( hWndTabela , nLinha , nFlags )

Descrição : Consulta os flags da linha.

Parâmetros :hWndTabela Window Handle –  O handle (ou o nome) da table window.nLinha Number –  O número da linha, cujo o flag você deseja consultar.nFlags Number  –  Os flags de linha que se quer cosultar. Você pode combinar os

flags ROW_* com o operador OR ( | ) .

Valor de Retorno :bOk  é TRUE se a linha possuir um dos flags citados em nFlags.

Page 476: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 476/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblQueryRowHeaderSintaxe  : bOk =  SalTblQueryRowHeader( hWndTabela, sTitulo, nMax, nLargura, nFlags,hWndColuna )Descrição : Obtém as definições do header  da linha.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.sTitulo Receive String –  O título do cabeçalho da linha.nMax Number –  O tamanho máximo do título.nLargura Receive Number –  A largura do cabeçalho em pixels.nFlags Receive Number  –   Os atributos do cabeçalho da linha. Especifique um

desses atributos: TBL_RowHdr_MarkEdits,TBL_RowHdr_ShareColor,TBL_RowHdr_Sizable ouTBL_RowHdr_Visible.

hWndColuna Receive Window Handle  –   A coluna a que o cabeçalho da linha estáassociada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQueryScrollSintaxe : bOk =  SalTblQueryScroll ( hWndTabela , nPosicao, nMin, nMax )Descrição : Retorna a posição atual do scroll da table window e os limites da table window.O scroll da table window é o número da linha superior da janela.

Você pode definir os limites da table window  com a função SalTblSetRange, e o Centuramuda estes valores quando linhas são incluídas ou excluídas na table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nPosicao Receive Number –  A posição de scroll.nMin Receive Number –  O limite inicial da table window.nMax Receive Number –  O limite final da table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQuerySplitWindowSintaxe : bOk =  SalTblQuerySplitWindow ( hWndTabela , nNumLinhas , bAjuste )Descrição : Obtém as especificações de como a table window está dividida horizontalmente.São as configurações da split window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nNumLinhas Receive Number  –  O número de linhas visíveis na  split window. Retorna

zero quando a split window não estiver ativa.

Page 477: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 477/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 bAjuste Receive Boolean  –   Indica se o usuário pode ajustar o tamanho da  split

window, acionando o mouse numa das suas laterais.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblQueryTableFlagsSintaxe : bOk =  SalTblQueryTableFlags ( hWndTabela, nFlags )Descrição : Testa o status dos flags da table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nFlags Number  –  O flag a ser testado na table window. Você pode combinar os

flags TBL_* utilizando o operador OR ( | ) .

Valor de Retorno :bOk  é TRUE se a tabela possuir um dos flags informados em nFlags.

Função : SalTblQueryVisibleRangeSintaxe : bOk =  SalTblQueryVisibleRange ( hWndTabela , nMin, nMax )Descrição : Recupera o intervalo atual de linhas visíveis na table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.

nMin Receive Number –  A primeira linha visível.nMax Receive Number –  A última linha visível.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblResetSintaxe : bOk =  SalTblReset ( hWndTabela )Descrição  : Limpa uma table window, descartando todas as linhas contidas no seu cache, eredefinindo seus limites para 0 e – 1.

Parâmetro :hWndTabela Window Handle –  O handle ou o nome da table window.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 478: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 478/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblScrollSintaxe : bOk =  SalTblScroll ( hWndTabela, nLinha, hWndColuna, nTBLScroll )Descrição : Posiciona a table window numa determinada coluna e linha.

Parâmetros :hWndTabela Window Handle –  O handle da table window.nLinha Number - O número da linha para posicionar. Se você especificar  – 1,

apenas a coluna é posicionada.hWndColuna Window Handle  –   O handle da coluna que será posicionada. Se você

especificar hWndNull, apenas a linha é posicionada.nTBLScroll Number –  O indicador para posicionar. Especifique uma das constantes:

TBL_AutoScroll,TBL_ScrollBottom ouTBL_ScrollTop.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se o número da linha, ou ohandle da coluna, forem inválidos.

Função : SalTblSetCellTextColorSintaxe : bOk =  SalTblSetCellTextColor ( hWndColuna , nCor, bDescatavel )Descrição : Muda a cor do texto de uma célula da table window.

Obs : Para obter a cor da célula de uma table window, utilize a função SalColorGet, tomandocomo parâmetro o handle da coluna e a cor COLOR_IndexCellText.

Parâmetros :hWndColuna Window Handle –  O handle ou o nome da coluna.nCor Number –  A cor do texto da célula.

 bDescartavel Boolean  –   Determina se o Centura irá manter esta cor, mesmo após osdados serem lidos novamente para a table window. Se você usar TRUE, oCentura descarta as configurações de cor, após uma nova carga dos dados.Se você especificar FALSE, o Centura mantém as definições de cor.Observe que isso requer recursos adicionais do sistema que permitam aoCentura manter as configurações na memória.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetColumnFlagsSintaxe : bOk =  SalTblSetColumnFlags ( hWndColuna , nFlags , bAcao )Descrição : Ativa ou desativa os flags de uma coluna da table window.

Parâmetros :hWndColuna Window Handle –  O handle ou o nome da coluna da table window.

nFlags Number –  O flag da coluna.

Page 479: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 479/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você pode combinar os flags COL_* usando o operador OR ( | ). bAcao Boolean –  Se TRUE, o Centura liga o flag. Se FALSE desliga-o.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.Para definir uma coluna como multiline text , use o flag COL_MultilineCell ( 0x008000000 ).

Page 480: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 480/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblSetColumnPosSintaxe : bOk =  SalTblSetColumnPos ( hWndColuna , nPosicao )Descrição : Move uma coluna da table window para uma nova posição.

Parâmetros :hWndColuna Window Handle –  O handle ou o nome da coluna a ser movida.nPosicao Number –  A nova posição da coluna da table window. Especifique 1 para a

 primeira posição, 2 para a Segunda e assim por diante.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetColumnTextSintaxe : bOk =  SalTblSetColumnText ( hWndTabela , nColuna , sTexto )

Descrição : Associa um determinado valor a uma coluna da table window, a linha com o foco.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window nColuna Number –  A posição da coluna no outline.sTexto String –  A informação a ser associada à coluna.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetColumnTitleSintaxe : bOk =  SalTblSetColumnTitle ( hWndColuna , sTitulo )Descrição : Define o título de uma determinada coluna da table window.

Parâmetros :hWndColuna Window Handle –  O handle ou onome de uma coluna da table window.sTitulo String –  O título da coluna.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetColumnWidthSintaxe : bOk =  SalTblSetColumnWidth ( hWndColuna , nFormUnits )Descrição : Define a largura visual da coluna.

Parâmetros :hWndColuna Window Handle –  O handle da coluna.nFormUnits Number –  A largura visual da coluna em form units.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 481: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 481/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblSetContextSintaxe : bOk =  SalTblSetContext ( hWndTabela , nLinha )Descrição : Define a linha de contexto de uma table window.

Parâmetros :hWndTabela Window Handle –  O handle ou onome da table window.nLinha Number –  O número da linha que será a nova linha de contexto.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetFlagsAnyRowsSintaxe  : bLinha = SalTblSetFlagsAnyRows ( hWndTabela , nFlags , bAcao , nFlagsOn ,

nFlagsOff )Descrição : Liga ou desliga os flags de uma linha.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nFlags Number –  Os flags.

 bAcao Boolean –  Se você usar TRUE, liga os flags, e FALSE desliga-os.nFalgsOn Number –  Os flags que a linha deverá ter. Pode-se combinar os valores dos

flags utilizando o operador OR ( | ). Atribua zero para nFlagsOn  enFlagsOff , especificando todas as linhas.

nFlagsOff Number  –   Os flags que a linha não  deverá ter. Seus valores poderão sercombinados, utilizando o operador OR ( | ). Atribua zero para nFlagsOn enFlagsOff , especificando todas as linhas.

Valor de Retorno :bLinha  é TRUE se alguma linha da table window  tem algum dos flags especificados emnFlagsOn, e se se não tiver nenhum dos flags em nFlagsOff .

Função : SalTblSetFocusCellSintaxe : bOk =  SalTblSetFocusCell ( hWndTabela , nLinha , hWndColuna , nEditarMin ,nEditarMax )Descrição  : Move o foco para uma célula ( coluna e linha ) específica da table window. OCentura coloca a table window em modo de edição e permite ao usuário selecionar uma parteda informação na célula.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da tabela.nLinha Number –  O número da linha.hWndColuna Window Handle –  O handle da coluna para onde você quer mover o foco.nEditarMin Number –  A posição do caractere mais à esquerda da célula. Quando usado

com nEditarMax, este parâmetro permite ao usuário selecionar uma parte

do texto de uma célula de uma table window.

Page 482: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 482/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para selecionar todos os caracteres numa célula, especifique zero para este parâmetro, e – 1 para nEditarMax.

nEditarMax Number  –  A posição do caractere mais à direita da célula. Quando usadocom nEditarMin, este parâmetro permite ao usuário selecionar uma parte do

texto de uma célula de uma table window.Para selecionar todos os caracteres numa célula, especifique -1 para este parâmetro, e zero para nEditarMin.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 483: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 483/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SalTblSetFocusRowSintaxe : bOk =  SalTblSetFocusRow ( hWndTabela, nLinha )Descrição : Move o foco para uma determinada linha da tabela.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nLinha Number –  O número da linha que você deseja que receba o foco.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetLinesPerRowSintaxe : bOk =  SalTblSetLinesPerRow ( hWndTabela, nLinhas )Descrição : Define a altura das linhas da table window. Alterar a autura das linhas é bastante

útil quando uma coluna é definida como sendo do tipo multiline. O texto em cada célula édividido automaticamente.

Você pode definir que uma coluna será do tipo multiline utilizando a funçãoSalTblSetColumnFlags com o flag COL_MultilineCell.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nLinhas Number –  O número de linhas que uma linha da table window terá.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetLockedColumnsSintaxe : bOk =  SalTblSetLockedColumns ( hWndTabela , nNumColunas )Descrição : Define o número de colunas travadas de uma tabela. As colunas que você travarnão serão afetadas pelas barras de rolagem horizontal da table window, ou seja, não serãoroladas para a esquerda assim como as demais colunas.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.nNumColunas

 Number  –   O número de colunas a travar. Se você especificar zero, ascolunas que por acaso estejam travadas, são destravadas. Especifique 1 paratravar a primeira coluna mais à esquerda da table window, e 2 para as duas

 primeiras colunas, 3 para as três primeiras colunas e assim por diante.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetRangeSintaxe : bOk =  SalTblSetRange ( hWndTabela , nMin , nMax )

Page 484: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 484/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Define a primeira e a última linha (o intervalo) de uma table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.

nMin Number –  O limite inicial de uma table window. Indica a primeira linha.nMax Number –  O limite final de uma table window. Indica a última linha.Para especificar uma table window vazia, utilize 0 e – 1, para nMin e nMax,respectivamente.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetRowSintaxe : nLinha = SalTblSetRow ( hWndTabela , nLinha )

Descrição : Posiciona o foco na primeira, anterior, próxima ou na última linha de uma tablewindow.

Parâmetros :hWndTabela Window Handle –  O handle da table window.nLinha Number –  A posição do foco. Especifique um dos seguintes valores:

TBL_SetFirstRow,TBL_SetLastRow,TBL_SetNextRow ouTBL_SetPrevRow.

Valor de Retorno :nLinha é o número da linha onde o foco foi posicionado.

Função : SalTblSetRowFlagsSintaxe : bOk =  SalTblSetRowFlags ( hWndTabela , nLinha , nFlags , bLigar )Descrição : Liga ou desliga o flag de uma linha da table window.

Parâmetros :hWndTabela Window Handle –  O handle da table window.nLinha Number –  O número da linha, cujo flag você deseja ligar ou desligar.nFlags Number  –   O flag da linha. Você pode combinar qualquer um dos flags

ROW_* usando o operador OR ( | ). bLigar Boolean  –   Se você especificar TRUE, o flag será ligado, se especificar

FALSE, o flag será desligado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSetTableFlagsSintaxe : bOk =  SalTblSetTableFlags ( hWndTabela , nFlags , bLigar )

Page 485: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 485/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Liga ou desliga um flag para a table window.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da table window.

nFlags Number  –   O flag da tabela. Você pode combinar qualquer um dos flagsTBL_* usando o operador OR ( | ). bLigar Boolean  –   Se você especificar TRUE, o flag será ligado, se especificar

FALSE, o flag será desligado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTblSortRowsSintaxe : bOk =  SalTblSortRows ( hWndTabela , nColuna , nOrdem )

Descrição  : Classifica as linhas de uma table window, baseado nos valores de uma de suascolunas. Você precisa criar esta coluna em tempo de design, desde que não seja através dasfunções SalTblPopulate ou SalTblCreateColumn.

Importante: O cache da table window não pode ser descartável, e a configuração do númeromáximo de linhas na memória deve ser grande o suficiente para suportar as linhas, enquantosão ordenadas.

Parâmetros :hWndTabela Window Handle –  O handle ou o nome da tabela.nColuna Number –  O número de ordem (no outline) da coluna que será ordenada.

nOrdem Number –  A direção da classificação. Utilize:TBL_SortDecreasing ou TBL_SortIncreasing.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTimerKillSintaxe : bOk =  SalTimerKill ( hWnd , nEvento )Descrição  : Destrói um timer de um objeto. O Centura remove as mensagens SAM_Timer

 pendentes para o objeto hWnd .

Defina um timer do sistema com a função SalTimerSet. Observe que timers estão limitadosaos recursos globais. Sua aplicação precisa checar o valor retornado pela função SalTimerSet

 para verificar qual o timer que foi criado.

Parâmetros :hWnd Window Handle –  O handle ou o nome de um objeto.nEvento Number –  O identificador do timer a ser destruído.

Valor de Retorno :

Page 486: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 486/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk   é TRUE se a função for executada com sucesso e FALSE se o timer não pode serencontrado.

Função : SalTimerSetSintaxe : bOk =  SalTimerSet ( hWnd , nEvento, nMilesimosSeg )Descrição  : Cria um timer para um determinado objeto. Quando um evento temporárioocorre, o Centura envia ao objeto uma mensagem SAM_Timer.

Observe que timers estão limitados aos recursos globais. Sua aplicação precisa checar o valorretornado pela função SalTimerSet para verificar qual o timer que foi criado.

Parâmetros :hWnd Window Handle –  O handle ou o nome de um objeto.nEvento Number –  O identificador do evento temporário a ser criado.

nMilesimosSeg

 Number –  O intervalo de tempo entre as mensagens SAM_Timer.O valor máximo para este parâmetro é 65535 (aproximadamente 65segundos).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalTrackPopupMenuSintaxe : bOk =  SalTrackPopupMenu ( hWndObj , sNomeMenu , nFlags , nX , nY )Descrição : Cria um menu popup em tempo de execução.

Parâmetros :hWndObj Window Handle –  O handle ou o nome do objeto top level  que irá processar

as mensagens geradas pelo menu.sNomeMenu

String –  O nome de um named menu que precisa estar definido em um destestrês locais:  na seção Named Menus do objeto informado em hWndObj   na seção Named Menus do objeto pai do objeto hWndObj   seção Named Menus do Global Declarations

nFlags Number - Especifica como o popup menu será mostrado. Você pode

combinar os valores dos flags com o operador OR ( | ) .Os flags disponíveis são:TPM_LeftButton - O usuário pode clicar nos itens do menu com o botãoesquerdo.TPM_RightButton - O usuário pode clicar nos itens do menu com o botãodireito.TPM_CenterAlign - Centraliza o menu horizontalmente na janela.TPM_CursorX - Mostra o menu na posição do mouse, ao invés de usar a

 posição nX.TPM_CursorY - Mostra o menu na posição do mouse, ao invés de usar a

 posição nY.

TPM_LeftAlign - Alinha o menu horizontalmente à esquerda na janela.

Page 487: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 487/580

Programando com o Centura Team Developer 2000

Página PAGE 582

TPM_RightAlign - Alinha o menu horizontalmente à direita na janela.nX Number  –  A posição do popup menu no eixo X. Este valor é ignorado caso

você utilize TPM_CursorX em nFlags.nY Number  –  A posição do popup menu no eixo Y. Este valor é ignorado caso

você utilize TPM_CursorY em nFlags.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalUpdateWindowSintaxe : bOk =  SalUpdateWindow ( hWndObj )Descrição : Força o Centura a atualizar um objeto.Pintar um objeto é uma atividade de prioridade baixa no Windows. O Windows envia amensagem WM_Paint para o final da fila de eventos de um objeto e processa antes todas as

outras mensagens da lista. Se, durante a fase de desenvolvimento de sua aplicação, você acharque o objeto está demorando muito para ser desenhado pelo Windows, você pode forçar oCentura a atualizar o objeto.

Parâmetro :hWndObj Window Handle –  O handle ou onome do objeto a ser atualizado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalUseRegistrySintaxe : bOk =  SalUseRegistry ( bUsarRegistro , sNomeEmpresa )Descrição  : Esta função é utilizada para redirecionar todas as funções SalProfile* para oregistro do Windows. Todos os valores utilizados nas funções SalProfile* são convertidos

 para strings. O nome do arquivo INI usado como último parâmetro nas funções SalProfile*, éusado como nome da aplicação.Observe o caminho formado :

\\HKEY_CURRENT_USER\Software\<nomeEmpresa>\<nomeAplicação>\<seção>\<configuração>\

Parâmetros : bUsarRegistr o

Boolean –  Se TRUE o registro será utilizado. Se FALSE, arquivos INI serãousados.

sNomeEmpresa

String –  O nome da empresa a ser usado no registro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalValidateSet

Page 488: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 488/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : bOk =  SalValidateSet ( hWndCC, bValState, lParam )Descrição : Você utiliza SalValidateSet quando o usuário tenta mover o foco para um objetoCustom Control.

 No Centura, mudança de foco dispara uma validação. SalValidateSet diz ao Centura que o

foco está sendo mudado para um objeto custom control , então, o Centura executará avalidação, caso seja necessário.

Parâmetros :hWndCC Window Handle –  O handle de um objeto custom control.

 bValida Boolean –  Se TRUE, indica que o Centura deve validar este objeto quandoele perder o foco.

lParam  Number –  O Centura passa o valor que você especificar na variável lParam da mensagem SAM_Validate.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalWaitCursorSintaxe : bOk =  SalWaitCursor ( bLiga )Descrição : Liga ou desliga a ampulheta, a qual é o indicador visual de que a aplicação estáocupada.Você precisa utilizar esta função sempre que for necessário informar ao usuário quando aaplicação está ocupada, e, também , ao ser liberada.

Parâmetro :

 bLiga Boolean –  Quando o Centura deve ligar ( TRUE ), ou desligar ( FALSE ) aampulheta.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalWindowClassNameSintaxe : sClasse = SalWindowClassName( hWnd )Descrição : Obtém o nome da classe de um objeto.

Parâmetro :hWnd Window Handle –  O handle de uma instância de um determinado objeto.

Valor de Retorno :sClasse é o nome da classe do objeto.

Função : SalWindowGetPropertySintaxe : bOk =  SalWindowGetProperty( hWndQO , sNomeProp , sValorProp )Descrição : Obtém o valor da propriedade de uma instância de determinado QuickObject.

Page 489: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 489/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hWndQO Window Handle –  O handle ou o nome do QuickObject.sNomeProp String –  O nome da propriedade.sValorProp Receive String –  O valor da propriedade recuperada.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalWindowHandleToNumberSintaxe : nWnd = SalWindowHandleToNumber ( hWnd )Descrição : Converte um window handle em um número.Por exemplo, você pode passar um window handle como parâmetro em wParam, através dafunção SalSendMsg.

Assim :Call SalSendMsg( hWndDestino , nMensagem , SalWindowHandleToNumber ( hWndItem ) ,0 )

Parâmetro :hWnd Window Handle –  O handle a ser convertido.

Valor de Retorno :nWnd  é o número convertido.

Função : SalWindowIsDerivedFromClassSintaxe : bOk =  SalWindowIsDerivedFromClass ( hWnd , NomeClasse )Descrição : Verifica se o objeto é instância de uma classe, ou seja, se o objeto pertence a umaclasse que é derivada da classe especificada.

Parâmetros :hWnd Window Handle –  O handle ou o nome do objeto.

 NomeClasse String –  O nome da classe.

Valor de Retorno :bOk  é TRUE se o objeto é uma instância da classe informada, ou se o objeto deriva de umaclasse que é derivada da classe informada.

Função : SalWinHelpSintaxe : bOk =  SalWinHelp( hWnd, sArquivo, nComando, nDado, sDado )Descrição : Inicia o sistema de Help do Windows.

Parâmetros :hWnd Window Handle  –   O handle ou o nome do objeto que está solicitando o

help.

sArquivo String –  O nome do arquivo de help.

Page 490: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 490/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nComando Number  –  É o tipo de help solicitado. Você pode usar uma das constantesHELP_*.

nDado Number –  Especifique zero a menos que :nComando seja igual a HELP_Context ou HELP_SetIndex.

sDado String –  O contexto, ou a palavra chave do tópico solicitado. Este parâmetrodeve ser sempre nulo, a menos que nComando seja igual a HELP_Key.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalYieldEnableSintaxe : bOk = SalYieldEnable ( bAcao )Descrição : Configura se a aplicação poderá cancelar processamentos demorados.

Parâmetro : bAcao Boolean - Se TRUE, o cancelamento poderá ser realizado. Especifique

FALSE para desligar esse comportamento.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SalYieldQueryStateSintaxe : bOk = SalYieldQueryState ( )Descrição : Verifica se a aplicação poderá cancelar processamento demorado.

Nenhum Parâmetro. 

Valor de Retorno :bOk  é TRUE se o cancelamento de processamento demorado pode ser realizado e FALSE emcaso contrário. Esse comportamento é configurado através da função SalYieldEnable.

Função : SalYieldStartMessagesSintaxe : bOk = SalYieldStartMessages ( hWndObj )

Descrição : Habilita o cancelamento de processamentos demorados e o envio de mensagens aum determinado objeto.

Habilite ao usuário o cancelamento de processamentos demorados para que, por exemplo, ousuário possa cancelar uma operação de carga de dados numa table window que estejademorando demais.

Parâmetro :hWndObjeto Window Handle - O handle do objeto que poderá receber mensagens

enquanto a aplicação estiver num processamento.

Valor de Retorno :

Page 491: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 491/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função: SalYieldStopMessages

Sintaxe: bOk = SalYieldStopMessages ( )Descrição: Desabilita o cancelamento de processamentos demorados.

Nenhum Parâmetro. 

Valor de Retorno:bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 492: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 492/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice BGuia de referência das Funções SQL

Dando prosseguimento ao guia de referencia das funções este apêndice apresentadetalhadamente as funções de acesso a bandos de dados.

O correto uso das funções do SQLWindows/32 pelo desenvolvedor é de sumaimportância. Portanto, neste apêndice apresentamos detalhadamente todas as suasfunções.

Page 493: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 493/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SqlClearImmediateSintaxe : bOk = SqlClearImmediate ( )Descrição : Desconecta do banco de dados o handle sql interno.Você conecta um handle sql interno utilizando a função SqlImmediate, e este permanece

conectado até que a aplicação encerre, ou quando você, explicitamente, desconectá-lo com afunção SqlClearImmediate.A função SqlClearImmediate gera um commit   implícito quando este é o último cursorconectado ao banco de dados.

Nenhum Parâmetro . 

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlCloseSintaxe : bOk = SqlClose ( hSql )Descrição : Libera o cursor associado ao handle sql hSql, permitindo a sua reutilização.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlCloseAllSPResultSetsSintaxe : bOk = SqlCloseAllSPResultSets ( hSql )Descrição : Fecha todos os result sets gerados por alguma stored procedure.

Esta função é útil quando você deseja fechar todos os result sets abertos por uma stored procedure sem precisar fechá-los um de cada vez. Caso não exista nenhuma stored procedureexecutada no handle hSql esta função retorna FALSE.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlCommitSintaxe : bOk = SqlCommit ( hSql )Descrição  : Encerra todas as transações sql conectadas ao banco de dados, efetivando asalterações realizadas.

Page 494: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 494/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para evitar que o result set   de um cursor seja destruído, quando um comando commit   éexecutado, ligue a preservação de contexto através da função SqlSetParameter, configurandoDBP_PRESERVE como TRUE.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função: SqlCommitSessionSintaxe: bOk = SqlCommitSession ( hSessao )Descrição: Esta função aplica (commit) as transações associadas à sessão especificada. Todasas operações SQL que estiverem ativas no momento da execução desta função serão

efetivadas junto ao banco de dados.

Parâmetro:hSessao Session Handle  –   Um handle que identifica uma sessão com o banco de

dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlConnectSintaxe : bOk = SqlConnect ( hSql )Descrição : Efetua a conexão a um banco de dados.O Centura utiliza os valores das variáveis SqlDatabase, SqlUser  e SqlPassword . Os valores

 padrões para estas variáveis são DEMO, SYSADM  e SYSADM, respectivamente. Observe que,os valores de algumas variáveis, como por exemplo SqlNoRecovery  e SqlOutMessage  têmefeito na execução desta função.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlCreateSessionSintaxe : bOk = SqlCreateSession ( hSessao , sParametros )Descrição  : Cria uma nova sessão de acordo com os parâmetros especificados emsParametros.

Quando você fizer uma chamada à função SqlCommitSession ( ) serão comitados apenas oshandles Sql que estiverem associados a uma determinada transação.

Page 495: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 495/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hSessao Session Handle  –  O handle da sessão a ser criada. Após a execução desta

função você deve utilizar este handle de sessão para fazer referência àsessão criada.

sParametros String - Os parâmetros da sessão. Cada provedor OLE DB possui seuconjunto de propriedades próprios, porém, normalmente alguns parâmetrossão comuns entre eles, tais como: Provider, Initial Catalog, User Name,User Id, Password entre outros.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlCreateStatement

Sintaxe : bOk = SqlCreateStatement ( hSessao , hSql )Descrição : Conecta um handle sql dentro de uma determinada sessão. Todos os parâmetrosespecificados no momento da conexão da sessão são aplicados à conexão do handle sql.

Quando você fizer uma chamada à função SqlCommitSession ( ) serão comitados apenas oshandles Sql que estiverem associados a uma determinada transação. Com a funçãoSqlCreateStatement você associa um handle sql a uma transação.

O valor de retorno é o mesmo que a função SqlConnect.

Para desconectar um handle sql criado com a função SqlCreateStatement utilize normalmentea função SqlDisconnet.

Você pode associar a uma sessão quantos handles sql você desejar, não há limites.

Parâmetros :hSessao Session Handle - O handle da sessão.hSql SqlHandleString - O handle sql que será conectado como parte da sessão.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlDirectoryByNameSintaxe : bOk = SqlDirectoryByName ( sServidor , sNomes )Descrição : Obtém os nomes das bases de dados de um determinado servidor.

Parâmetros :sServidor String –  O nome do servidor.sNomes String Array –  O nome de um vetor contendo os nomes das bases de dados.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 496: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 496/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SqlDisconnectSintaxe : bOk = SqlDisconnect ( hSql )

Descrição : Desconecta um determinado handle sql.

Quando você desconectar o último handle sql da sua aplicação, de uma determinada base dedados, o comando commit  é automaticamente executado.

Desconecte todos os handles sql da aplicação, antes de encerrá-la.

Você pode utilizar SqlDisconnect para desconectar um handle sql associado a uma sessão.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlDropStoredCmdSintaxe : bOk = SqlDropStoredCmd ( hSql , sNome )Descrição : Apaga um determinado stored command  de um banco de dados.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

sNome String –  O nome do stored command  a ser apagado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlErrorSintaxe : nErro = SqlError ( hSql )Descrição : Obtém o código do erro mais recente, num determinado handle sql.Esta função não pode ser utilizada após uma chamada à função SqlImmediate, pois, esta nãoretorna um handle que possa ser utilizado como parâmetro na função SqlError.

Parâmetro :HSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :nErro é o código do erro retornado. Quando é igual a zero, indica que não houve erros sql.

Função : SqlErrorTextSintaxe : bOk = SqlErrorText ( nErro, nTipo, sErro, nTamanho, nTamanhoReal )

Page 497: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 497/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Obtém o texto, explicando o motivo e a sugestão de correção do código do erroarmazenado em nErro.

Utilize a função SqlError para obter o código do erro mais recente ocorrido.

Parâmetros : Nerro Number –  O código de erro, obtido através da função SqlError. Ntipo Number –  Especifique as constantes abaixo :

SQLERROR_Reason –  para obter o texto do motivo do erro.SQLERROR_Remedy –  para obter o texto com a sugestão de correção.Você pode utilizar o operador OR ( | ) para combinar as duas constantes.

Serro Receive String  –  A explicação do motivo ou da sugestão de correção doerro.

 Ntamanho Number –  O tamanho máximo de sErro. NtamanhoRe

al

Receive Number –  O tamanho atual de sErro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlExecuteSintaxe : bOk = SqlExecute ( hSql )Descrição : Executa um comando SQL preparado com a função SqlPrepare, ou recuperadoatravés da função SqlRetrieve.

A função SqlExecute  não obtém os dados, para isso, utilize as funções SqlFetchNext ,SqlFetchPrevious ou SqlFetchRow.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlExecutionPlanSintaxe : bOk = SqlExecutionPlan ( hSql , sTexto , nTamanho )Descrição  : Obtém o plano de execução de um determinado comando sql. O plano deexecução mostra as tabelas, visões, índices e as otimizações para o comando sql. Os nomesdas tabelas e visões são mostrados na ordem em que são processados.

Parâmetro:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sTexto Receive String –  O plano de execução.nTamanho Number –  O tamanho máximo do texto em sTexto.

Valor de Retorno :

Page 498: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 498/580

Programando com o Centura Team Developer 2000

Página PAGE 582

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlExists

Sintaxe : bOk = SqlExists ( sSelect , bExiste )Descrição : Verifica a existência de uma linha.A função SqlExists utiliza os valores das variáveis SqlDatabase, SqlUser  e SqlPassword  paraefetuar a conexão ao banco de dados, e usa o handle interno para executar o comandoespecificado.

Parâmetros :sSelect String –  O comando select que verificará a existência da linha.

 bExiste Receive Boolean –  É TRUE caso a linha exista e FALSE caso contrário.

Valor de Retorno :bOk  é TRUE se o comando sSelect estiver correto e executável, e FALSE se falhar.

Função : SqlExtractArgsSintaxe : bOk = SqlExtractArgs ( wParam , lParam , hSql , nErro , nPosicao )Descrição  : Obtém informações dos argumentos wParam  e lParam  num eventoSAM_SqlError. Utilize esta função apenas para processar a mensagem SAM_SqlError, que éacionada quando ocorre algum erro sql.

Parâmetros :

wParam Number –  O valor do argumento wParam, na mensagem SAM_SqlError.lParam Number –  O valor do argumento lParam, na mensagem SAM_SqlError.hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nErro Receive Number –  O código do erro.nPosicao Receive Number –  A posição do erro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se a função falhar.

Função : SqlFetchNext

Sintaxe : bOk = SqlFetchNext ( hSql , nInd )Descrição : Recupera a próxima linha do result set .Antes disso, você precisa ter preparado um comando SELECT, com a função SqlPrepare, e terexecutado este comando com a função SqlExecute.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados, e

um comando select  previamente preparado.nInd Receive Number –  O código de retorno da operação de fetch.

Um dos seguintes valores : FETCH_Delete, FETCH_Eof, FETCH_Ok ouFETCH_Update.

Page 499: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 499/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função trouxer alguma linha do result set , e FALSE se nenhuma linha forencontrada.A função SqlFetchNext  só irá retornar FALSE, e o indicador do código da operação de fetch 

só será igual a FETCH_Eof, quando você tentar carregar mais uma linha, após a última linhado result set .

Função : SqlFetchPreviousSintaxe : bOk = SqlFetchPrevious ( hSql , nInd )Descrição : Recupera a linha anterior do result set.Antes disso, você precisa ter preparado um comando  select , com a função SqlPrepare, e terexecutado este comando com a função SqlExecute.

Parâmetros :

hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados, eum comando select  previamente preparado.

nInd Receive Number –  O código de retorno da operação de fetch.Um dos seguintes valores : FETCH_Delete, FETCH_Eof, FETCH_Ok ouFETCH_Update.

Valor de Retorno :bOk  é TRUE se a função trouxer alguma linha do result set , e FALSE se nenhuma linha forencontrada.

Função : SqlFetchRowSintaxe : bOk = SqlFetchRow ( hSql , nLinha , nInd )Descrição : Recupera uma determinada linha do result set .Antes disso, você precisa ter preparado um comando  select , com a função SqlPrepare, e terexecutado este comando com a função SqlExecute.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados, e

um comando select  previamente preparado.nLinha Number –  O número da linha a ser recuperada do result set .

nInd Receive Number –  O código de retorno da operação de fetch.Um dos seguintes valores : FETCH_Delete, FETCH_Eof, FETCH_Ok ouFETCH_Update.

Valor de Retorno :bOk  é TRUE se a função trouxer a linha do result set , e FALSE se não conseguir trazer.

Função : SqlFreeSessionSintaxe : bOk = SqlFreeSession ( hSessao )Descrição : Desconecta uma sessão.

Page 500: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 500/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Todos os handles sql subordinados a sessão e que ainda estiverem ativos serão desconectadosantes que a sessão seja liberada.

Parâmetro:

hSessao Session Handle : O handle da sessão.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetErrorSintaxe : bOk = SqlGetError ( hSql , nErro , sMsgErro )Descrição : Desliga o mapeamento de erros e mostra o erro “real” do servidor.  

Parâmetros :

hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nErro Number –  O número do erro.sMsgErro Receive String –  A mensagem de erro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetErrorPositionSintaxe : bOk = SqlGetErrorPosition ( hSql , nPosicao )

Descrição  : Obtém a posição do erro num comando sql. Após a execução da funçãoSqlPrepare, a posição do erro aponta para o local, no comando sql preparado, onde o Centuradetectou algum erro de sintaxe.Observe que a posição do primeiro caractere num comando sql é a zero (0).

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados, e

um comando sql previamente preparado.nPosicao Receive Number –  A posição, no comando sql, onde o erro foi encontrado.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetErrorTextSintaxe : bOk = SqlGetErrorText ( nErro , sTexto )Descrição  : Obtém a mensagem de erro equivalente ao número do erro informado. Estainformação será pesquisada no arquivo ERROR.SQL.

Parâmetros :nErro Number –  O número do erro.sTexto Receive String –  A mensagem de erro.

Page 501: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 501/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetErrorTextXSintaxe : sTexto = SqlGetErrorText ( nErro )Descrição  : Obtém a mensagem de erro equivalente ao número do erro informado. Estainformação será pesquisada no arquivo ERROR.SQL.

Parâmetro:nErro Number –  O número do erro.

Valor de Retorno : sTexto é a mensagem de erro recuperada.

Função : SqlGetLastStatementSintaxe : sCmdSql = SqlGetLastStatement ( )Descrição : Obtém o último comando sql utilizado em qualquer uma das funções SqlXxxx. Ocomando retornado é o mesmo mostrado na janela padrão de erros do Centura.

Nenhum Parâmetro.

Valor de Retorno : sCmdSql  contém o último comando sql executado.

Função : SqlGetModifiedRowsSintaxe : bOk = SqlGetModifiedRows ( hSql , nNum )Descrição  : Retorna o número de linhas afetadas pelo último comando insert , update  oudelete executado.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nNum Receive Number –  O número de linhas afetadas.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetParameterSintaxe : bOk = SqlGetParameter ( hSql , nParametro , nNum , sStr )Descrição : Obtém o valor de um parâmetro do banco de dados. Esta função retorna o valordo parâmetro em nNum ou sStr, de acordo com o tipo de dado do parâmetro.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

nParametro Number  –   O parâmetro do banco de dados. Utilize uma das constantes

Page 502: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 502/580

Programando com o Centura Team Developer 2000

Página PAGE 582

DBP_*.nNum Receive Number –  O valor do parâmetro, se este for do tipo número.sStr Receive String - O valor do parâmetro, se este for do tipo string.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetParameterAllSintaxe : bOk = SqlGetParameterAll ( hSql , nParametro , nNum , sStr , bNum )Descrição : Obtém o valor de um parâmetro do banco de dados. Esta função retorna o valordo parâmetro em nNum ou sStr, de acordo com o tipo de dado do parâmetro.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

nParametro Number  –   O parâmetro do banco de dados. Utilize uma das constantesSQLP* definidas no arquivo SQL.H.

nNum Receive Number –  O valor do parâmetro, se este for do tipo numérico.sStr Receive String - O valor do parâmetro, se este for do tipo string.

 bNum Boolean  –  Se for TRUE, o valor do parâmetro é retornado em nNum. SeFALSE, o valor do parâmetro é retornado em sStr.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetResultSetCountSintaxe : bOk = SqlGetResultSetCount ( hSql , nNumLinhas )Descrição : Conta o número de linhas do result set. O Centura obtém cada linha do result set ,retorna o número de linhas e coloca o cursor na posição original. Atenção : esta tarefa podeconsumir muito tempo.

Você precisa ativar o modo result set  com a função SqlSetResultSet .

Você precisa utilizar a função SqlExecute antes da função SqlGetResultSetCount .

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nNumLinhas Receive Number –  O número de linhas no result set.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlGetRollbackFlagSintaxe : bOk = SqlGetRollbackFlag ( hSql , bFlag )Descrição : Obtém o flag indicador de rollback  da base de dados. Utilize esta função após um

erro na aplicação, para saber se a transação foi desfeita através do comando rollback. 

Page 503: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 503/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

 bFlag Receive Boolean  –   É TRUE se um rollback ocorreu, e FALSE caso

contrário.Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlImmediateSintaxe : bOk = SqlImmediate ( sCmd )Descrição : Prepara e executa um comando sql.

 Na primeira vez que a função SqlImmediate é executada, as funções SqlConnect , SqlPrepare,SqlExecute são também executadas. No caso dos comandos  select , executa também a funçãoSqlFetchNext .

A função SqlConnect  é executada apenas quando necessário.

Parâmetro:sCmd String –  O comando sql a ser preparado e executado. O comando não pode

ter mais do que 255 variáveis tipo BIND e mais de 255 variáveis tipo INTO.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 504: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 504/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SqlOpenSintaxe : bOk = SqlOpen ( hSql , sNomeCursor )Descrição : Nomeia um cursor e executa um comando sql. Utilize esta função para executar

um comando INSERT , UPDATE  e DELETE  na linha atual.A função SqlOpen deve ser utilizada após a função SqlPrepare e antes de alguma das funçõesSqlFetch*.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sNomeCursor String –  O nome do cursor.

Especifique este nome nas cláusulas ‘CURRENT OF <nome_do_cursor>’  ou ‘ADJUSTING <nome_do_cursor>’   nos comandos insert , update  oudelete.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlPrepareSintaxe : bOk = SqlPrepare ( hSql , sCmd )Descrição : Compila um comando sql para ser executado.A compilação inclui :  Verificação da sintaxe do comando.  Verificação do catálogo do sistema.

  Processamento da cláusula INTO.Os dados, quando trazidos do banco de dados, são colocados nos nomes citados na cláusulaINTO. Estas variáveis são, comumente, chamadas de variáveis INTO. Você pode especificarno máximo 255 variáveis INTO.

  Identificação das variáveis BINDs no comando sql. As variáveis BINDs possuem informações que são necessárias para o funcionamento corretodo comando sql. Você pode especificar até 255 variáveis binds num comando sql.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sCmd String –  O comando sql para ser compilado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlPrepareAndExecuteSintaxe : bOk = SqlPrepareAndExecute ( hSql , sCmd )Descrição : Compila e executa um comando sql.A compilação inclui :  Verificação da sintaxe do comando.  Verificação do catálogo do sistema.

  Processamento da cláusula INTO.

Page 505: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 505/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Os dados, quando trazidos do banco de dados, são colocados nos nomes citados na cláusulaINTO. Estas variáveis são, comumente, chamadas de variáveis INTO. Você pode especificarno máximo 255 variáveis INTO.

  Identificação das variáveis BINDs no comando sql. As variáveis BINDs possuem informações que são necessárias para o funcionamento correto

do comando sql. Você pode especificar até 255 variáveis binds num comando sql.

Parâmetros:hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sCmd String –  O comando sql para ser compilado e executado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlRetrieveSintaxe : bOk = SqlRetrieve ( hSql , sNome , sBinds , sIntos )Descrição : Obtém um comando SQLBase compilado.Para executar o comando, você precisa utilizar a função SqlExecute. Você não precisacompilar o comando, pois, o mesmo já foi compilado através da função SqlStore.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sNome String –  O nome de um comando compilado.sBinds String  –   Uma lista com os nomes, separados por vírgulas, de até 255

variáveis BINDs. Esta lista deve conter o mesmo número de variáveis do

comando compilado. Este parâmetro pode ser nulo.sIntos String - Uma lista com os nomes, separados por vírgulas, de até 255variáveis INTOs. Este parâmetro pode ser nulo, e deverá ser nulo caso o

 próximo comando a ser executado for a função SalListPopulate.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlRollbackSessionSintaxe : bOk = SqlRollbackSession ( hSessao )

Descrição  : Esta função desfaz as transações associadas à sessão especificada. Todas asoperações SQL que estiverem ativas no momento da execução desta função serão desfeitas

 junto ao banco de dados.

Parâmetro:hSessao Session Handle  –   Um handle que identifica uma sessão com o banco de

dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 506: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 506/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : SqlSetInMessageSintaxe : bOk = SqlSetInMessage ( hSql , nTamanho )Descrição  : Define o tamanho (em bytes) do buffer de mensagem de entrada  para umdeterminado sql handle. O buffer de entrada contém os dados de uma aplicação, resultantes

de uma consulta.Existe um buffer  para cada handle sql  conectado. O servidor de bancos de dados mantém umbuffer de mensagem de entrada do tamanho do maior buffer configurado na estação.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nTamanho Number  –  O tamanho (em bytes) do buffer que você deseja configurar. O

tamanho padrão é 1K, e o máximo é 32K.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetIsolationLevelSintaxe : bOk = SqlSetIsolationLevel ( hSql , sNivel )Descrição : Define o nível de isolamento.

 No SQLBase, o nível de isolamento padrão é o Read Repeatability (RR). Qualquer mudançano nível de isolamento causa um commit implícito. O nível de isolamento se aplica a todos oshandles sql conectados a base de dados, para o mesmo usuário.

Para obter informações mais detalhadas sobre níveis de isolamento, consulte o manualConnecting Centura Objects to Databases. 

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sNivel String –  O nível de isolamento a ser definido. Especifique um destes valores

:CS - Cursor StabilityRL –  Release LocksRO –  Read OnlyRR –  Read Repeatability

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetLockTimeoutSintaxe : bOk = SqlSetLockTimeout ( hSql , nTimeOut )Descrição  : Especifica o tempo máximo de espera para ativar um lock . Após o tempoespecificado, ocorre um timeout , e, automaticamente, um rollback  é executado na transação.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

nTimeOut Number –  O valor do timeout, em segundos. Valores válidos incluem  – 1 (

Page 507: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 507/580

Programando com o Centura Team Developer 2000

Página PAGE 582

espera para sempre), 0 (nunca espera) e valores acima disso incluindo 1800(equivalente à 30 minutos). O valor padrão é 300.

Valor de Retorno :

bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetLongBindDatatypeSintaxe : bOk = SqlSetLongBindDatatype ( nNumVarBind , nTipoDeDado )Descrição : Especifica o tipo de dado da coluna quando a mesma receber um valor do tipoLong String.

Parâmetros :nNumVarBind

 Number –  Indica qual a variável bind a ser configurada. Use 1 para indicar a primeira variável no comando sql, 2 para a segunda e assim por diante.

nTipoDeDado

 Number –  O tipo de dado a ser definido. Use os seguintes tipos de dados :22 - Tipo Text23 –  Tipo Long Binary24  –   Char > 254 bytes, ou long varchar > 254 bytes. ( Apenas paraInformix )

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetOutMessageSintaxe : bOk = SqlSetOutMessage ( hSql , nTamanho )Descrição  : Define o tamanho (em bytes) do buffer de mensagem de saída  para umdeterminado sql handle. O buffer de saída contém os dados de uma aplicação, como os dadosa serem incluídos no banco de dados.Existe um buffer  para cada handle sql  conectado. O servidor do bancos de dados mantém umbuffer de mensagem de saída do tamanho do maior buffer configurado na estação.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nTamanho Number  –  O tamanho (em bytes) do buffer  que você deseja configurar. O

tamanho padrão é 1K, e o máximo é 32K.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetParameterSintaxe : bOk = SqlSetParameter ( hSql , nParametro , nNum , sStr )Descrição  : Atribui um valor a um determinado parâmetro do banco de dados. Utilize os

 parâmetros nNum ou sStr de acordo com o seu tipo de dado.

Parâmetros :

Page 508: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 508/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nParametro Number  –   O parâmetro do banco de dados. Utilize uma das constantes

DBP_*.nNum Number –  O valor do parâmetro.

sStr String - O valor do parâmetro.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetParameterAllSintaxe : bOk = SqlSetParameterAll ( hSql , nParametro , nNum , sStr , bNum )Descrição  : Atribui um valor a um determinado parâmetro do banco de dados. Utilize os

 parâmetros nNum ou sStr de acordo com o seu tipo de dado.

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.nParametro Number  –   O parâmetro do banco de dados. Utilize uma das constantes

SQLP* definidas no arquivo SQL.H.nNum Number –  O valor do parâmetro, se este for do tipo numérico.sStr String - O valor do parâmetro, se este for do tipo string.

 bNum Boolean –  Se for TRUE, o valor do parâmetro está em nNum. Se FALSE, ovalor do parâmetro está em sStr.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlSetResultSetSintaxe : bOk = SqlSetResultSet ( hSql , bSet )Descrição : Liga/desliga o modo result set , para todos os handles sql   associados ao mesmohandle hSql  

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

 bSet Boolean  –  Alterna entre o modo de result set   ligado (TRUE) e desligado

(FALSE).

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlStoreSintaxe : bOk = SqlStore ( hSql , sNome , sComando )Descrição : Armazena e nomeia um comando compilado num banco de dados SQLBase.A função SqlStore compila o comando sql, portanto, você não precisa executar a funçãoSqlPrepare antes de utilizar SqlStore.

Page 509: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 509/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros :hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.sNome String –  O nome do comando a ser armazenado.sComando String –  O comando sql a ser compilado e armazenado.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Função : SqlVarSetupSintaxe : bOk = SqlVarSetup ( hSql )Descrição : Antes que o Centura execute um comando sql, ou obtenha uma linha do banco dedados (fetch), o Centura compila as variáveis bind  e into e gera os respectivos códigos paraobtenção dos valores ( variáveis bind ) ou para a recuperação de linhas do banco de dados (variáveis into ).

O padrão do Centura é compilar :  variáveis bind em tempo de execução.  variáveis into em tempo de fetch.

Você pode modificar este comportamento padrão executando a função SqlVarSetup, que salva o contexto deexecução atual. Quando você, posteriormente, executar ou recuperar informações, o Centura utiliza o contexto

 para resolver referências às variáveis bind  e into. Isto significa que você pode utilizar variáveis bind  e into numcontexto diferente do local onde a função Sql* está sendo chamada. Você precisa executar a função SqlPrepareantes de utilizar a função SqlVarSetup.

Parâmetro:

hSql Sql Handle –  Um handle que identifica a conexão com o banco de dados.

Valor de Retorno :bOk  é TRUE se a função for executada com sucesso e FALSE se falhar.

Page 510: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 510/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice CGuia de referência das Mensagens SAM

Sendo o ambiente Windows um ambiente orientado a eventos, torna-se de extrema importância para o desenvolvedor neste ambiente, o pleno conhecimento dos eventos que podem ocorrer na suaaplicação. Para um estudo aprofundado dos eventos do ambiente Windows, recomendamos queseja estudado o SDK, que acompanha alguns produtos de desenvolvimento da Microsoft, como

 por exemplo o C++. Estes eventos do Windows também são capturados pelas aplicações Centura, porém, neste apêndice, são explicados detalhadamente os eventos específicos do Centura TeamDeveloper. Eventos estes, que são listados neste apêndice, em ordem alfabética.

Page 511: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 511/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Mensagem : SAM_ActivateDescrição : A mensagem SAM_Activate é enviada aos objetos top-level ( form window e mdi window ) quandoestes são ativados ou desativados. A variável wParam indica quando o objeto está sendo ativado ou desativado.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto ativo.wParam Indica se o objeto está sendo ativado ( TRUE ) ou desativado ( FALSE ).lParam Não é utilizada.

Mensagem : SAM_AnyEditDescrição : A mensagem SAM_AnyEdit é enviada aos objetos tipo data field, combo box, table windowcolumns e multiline field quando o usuário modifica o valor do mesmo. O objeto processa a mensagemSAM_AnyEdit a cada tecla pressionada. Ao processar a mensagem SAM_AnyEdit, a aplicação pode verificar ovalor do objeto.

Variáveis :

Para objetos do tipo data field, combo box ou multiline field, os valores das variáveis são :

hWndForm O handle do objeto pai.hWndItem O handle do objeto ativo.wParam Não é utilizada.lParam Não é utilizada.

Para objetos do tipo table window column, os valores das variáveis são :

hWndForm O handle da table window.hWndItem O handle da coluna.wParam Não é utilizada.lParam O número da linha da table window.

Mensagem : SAM_AppExitDescrição : A mensagem SAM_AppExit é enviada à aplicação depois que todas as janelas forem fechadas.Quando o usuário encerra a execução da aplicação, todos os objetos são fechados e a mensagem SAM_AppExité enviada para a aplicação. Esta é a última mensagem processada pela aplicação, e é enviada apenas para o

Application Actions. Você não pode fazer referência a nenhum objeto da aplicação neste momento.

Variáveis :hWndForm Não é utilizada.hWndItem Não é utilizada.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_AppStartup

Page 512: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 512/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : A mensagem SAM_AppStartup é enviada para a aplicação antes que qualquer janela seja criada,mesmo as que estiverem com o atributo de criação automática ligado. Esta é a primeira mensagem que aaplicação recebe, e é enviada apenas para o Application Actions da aplicação.

Variáveis :

hWndForm Não é utilizada.hWndItem Não é utilizada.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_CacheFullDescrição : A mensagem SAM_CacheFull é enviada a uma table window quando o Centura precisa trazer maisuma linha para a tabela, mas o cache da tabela encontra-se cheio e nehuma de suas linhas encontram-sequalificadas como descartável.Se o cache da table window estiver configurado como não-descartável (non-discardable), a mensagem

SAM_CacheFull indica que não é mais possível preencher o cache com dados. Se o cache da table windowestiver configurado como descartável (discardable), a mensagem SAM_CacheFull indica que o cache está cheiode informações que precisam ser atualizadas. Quando você salva as linhas modificadas, estas passam a serqualificadas como descartáveis.

Variáveis :hWndForm O handle da table window.hWndItem Não é utilizada.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_CaptionDoubleClickDescrição : A mensagem SAM_CaptionDoubleClick é enviada a uma table window e a uma coluna da tablewindow quando o usuário dá um clique-duplo no título de uma coluna.Para obter o handle da coluna da table window armazenado na variável wParam, utilize a funçãoSalNumberToWindowHandle.

Variáveis :hWndForm O handle da table window.hWndItem O handle do objeto que capturou a mensagem, table window ou column,

dependendo do caso.wParam O handle da coluna.

lParam Não é utilizada.

Mensagem : SAM_ClickDescrição : A mensagem SAM_Click é enviada para avisar que o usuário pressionou o botão esquerdo domouse uma vez.

É enviada a um check box ou push button quando você clica em um desses objetos, ou executa alguma atividadecom o teclado, simulando um click com o mouse.

É enviada a um radio button que ainda não está selecionado quando você clica nele, ou executa alguma atividadecom o teclado, simulando um click com o mouse. Se você clicar num radio button que já está selecionado, amensagem SAM_Click não é enviada.

Page 513: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 513/580

Programando com o Centura Team Developer 2000

Página PAGE 582

É enviada a um list box quando você clica num dos seus elementos, ou executa alguma atividade com o teclado,simulando um click com o mouse. Se você clicar num list box vazio ou numa área do objeto que não possuanenhum item, a mensagem SAM_Click não é enviada.

É enviada a um combo box quando você clica num dos seus elementos mostrados na sua lista, ou executa

alguma atividade com o teclado, simulando um click com o mouse. Se você clicar na “parte data field” do combo box ou clicar no botão que ativa a lista, a mensagem SAM_Click não é enviada.

É enviada a uma table window e para a coluna com o foco quando você clica na célula da table window, ouexecuta alguma atividade com o teclado, simulando um click com o mouse.

Variáveis :

Para objetos do tipo combo box, list box, push button, option button ou radio button, osvalores das variáveis são :

hWndForm O handle do form window ou do dialog box.

hWndItem O handle do objeto que capturou a mensagem.wParam Não é utilizada.lParam Não é utilizada.

Para objetos do tipo picture, os valores das variáveis são :

hWndForm O handle do form window ou do dialog box.hWndItem O handle do objeto que capturou a mensagem.wParam A coordenada X na imagem onde o usuário clicou com o mouse.lParam A coordenada Y na imagem onde o usuário clicou com o mouse.

Para objetos do table window e column, os valores das variáveis são :

hWndForm O handle da table window.hWndItem O handle do objeto que capturou a mensagem.wParam Não é utilizada.lParam O número da linha da table window.

Mensagem : SAM_CloseDescrição : A mensagem SAM_Close é enviada aos objetos do tipo dialog box, form window, mdi window etable window, quando o usuário dá um double-click no ícone do menu do sistema, ou quando o usuário acionano menu do sistema a opção “Fechar”. A mensagem SAM_Close é enviada para avisar que ovocê está tentando fechar uma janela. Processando amensagem SAM_Close, uma aplicação pode verificar a necessidade de salvar alguma informação, avisando issoao usuário.Se você utilizar a função SalQuit, SalEndDialog ou SalDestroyWindow, a mensagem SAM_Close não é enviada.

Variáveis :hWndForm O handle do objeto top level.hWndItem Não é utilizada.wParam Não é utilizada.lParam Não é utilizada.

Page 514: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 514/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Mensagem : SAM_ColumnSelectClickDescrição : A mensagem SAM_ColumnSelectClick é enviada para table window e column, quando o usuárioseleciona ou desfaz a seleção de uma coluna, clicando no seu título.Você ativa este recurso com a função SalTblSetTableFlags, atribuindo TRUE à constante do Centura chamadaTBL_Flag_SelectableCols, pois, este valor inicialmente é FALSE.

Para obter o handle da coluna da table window armazenado na variável wParam, utilize a funçãoSalNumberToWindowHandle.

Variáveis :hWndForm O handle da table window.hWndItem O handle do objeto que capturou a mensagem, table window ou column,

dependendo do caso.wParam O handle da coluna.lParam Não é utilizada.

Mensagem : SAM_ContextMenuDescrição : A mensagem SAM_ContextMenu é enviada quando o usuário clica com o botão direito do mouse,ou quando pressiona as teclas Shift+F10.

 Na maioria dos casos você não precisará processar esta mensagem, no entanto, utilize a funçãoSalContextMenuSetPopup para definir um menu popup, que será mostrado automaticamente, quando um objetoreceber a mensagem SAM_ContextMenu.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto ativo.wParam A coordenada X, em pixels, relativa ao lado esquerdo superior da tela.lParam A coordenada Y, em pixels, relativa ao lado esquerdo superior da tela.

Mensagem : SAM_CornerClickDescrição : A mensagem SAM_CornerClick é enviada a uma table window e column, quando o usuário clica notítulo do header de uma linha. O header de uma linha é a coluna não-editável, localizada à esquerda da tablewindow. A variável wParam indica quando o objeto está sendo ativado ou desativado.

Para obter o handle da coluna da table window armazenado na variável wParam, utilize a função

SalNumberToWindowHandle.

Variáveis :hWndForm O handle da table window.hWndItem O handle da coluna.wParam Um valor numérico que indica o handle da coluna.lParam A linha da table window que está com o contexto.

Mensagem : SAM_CornerDoubleClickDescrição : A mensagem SAM_CornerDoubleClick é enviada a uma table window e column, quando o usuário

efetua um clique duplo no título do header de uma linha. O header de uma linha é a coluna não-editável,

Page 515: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 515/580

Programando com o Centura Team Developer 2000

Página PAGE 582

localizada à esquerda da table window. A variável wParam indica quando o objeto está sendo ativado oudesativado.

Para obter o handle da coluna da table window armazenado na variável wParam, utilize a funçãoSalNumberToWindowHandle.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Um valor numérico que indica o handle da coluna.lParam A linha da table window que está com o contexto.

Mensagem : SAM_CountRowsDescrição : A mensagem SAM_Activate é enviada à table window que possui o limite de linhas dinâmico(range). Utilize-a para saber o número de linhas de uma table window.

A aplicação processa a mensagem SAM_CountRows, retornando o número de linhas na table window. Normalmente, isto significa contar o número de linhas do result set.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.lParam Não é utilizada.

Esta mensagem retorna o número de linhas da table window.

Mensagem : SAM_CreateDescrição : A mensagem SAM_Create é enviada aos objetos top level ( mdi window, dialog box, form windowou table window ) e depois para todos os objetos subordinados criados, antes de estarem visíveis.

O Centura cria o objeto top level e todos os seus objetos filhos. Antes que esses objetos estejam visíveis aousuário, o Centura envia a mensagem SAM_Create para cada um deles, iniciando pelo top level, e depois a cadaum dos objetos fiolhos, para, só então, torná-los visíveis.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está sendo criado.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_CreateCompleteDescrição : A mensagem SAM_CreateComplete é enviada aos objetos top level ( mdi window, dialog box, formwindow e table window ), logo após tornar visíveis o top level e seus filhos.

O Centura cria o objeto top level e todos os seus objetos filhos. Antes que esses objetos estejam visíveis aousuário, o Centura envia a mensagem SAM_Create para cada um deles, iniciando pelo top level e depois a cadaum dos objetos filhos, neste momento, todos os objetos tornam-se visíveis. Só então a mensagem

SAM_CreateComplete é enviada ao objeto top level.

Page 516: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 516/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do que está sendo criado.

wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_CustControlCmdDescrição : A mensagem SAM_CustControlCmd é enviada a um objeto do tipo custom control, quando o objeto

 pai recebe alguma notificação ( WM_COMMAND ) vinda do objeto custom control.

O Centura ignora qualquer valor que você retornar ao processar esta mensagem.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto custom control ativo.wParam O número da mensagem notificada.lParam Não é utilizada.

Mensagem : SAM_DDE_ClientExecuteDescrição : A mensagem SAM_DDE_ClientExecute é enviada para todos os objetos na aplicação servidora. Oevento que dispara esta mensagem é um comando DDE qualquer enviado a partir de uma aplicação cliente.

Um servidor aguarda por uma requisição de um comando vinda das aplicações clientes. O servidor obtém ocomando enviado pelo cliente através da função SalDDEGetExecuteString. O parâmetro para a função

SalDDEGetExecuteString é o valor de lParam obtido na mensagem SAM_DDE_ClientExecute, o qual aponta para uma string que é o comando solicitado. Após a execução da função SalDDEGetExecuteString, o servidor pode então analisar a string do comando e determinar a ação a ser executada.

O servidor pode enviar dados ou alguma outra resposta para o cliente, fazendo-se uso da funçãoSalDDESendToClient. Na mensagem SAM_DDE_ClientExecute, o valor de wParam corresponde ao windowhandle do cliente. O servidor utiliza o valor de wParam no terceiroparâmetro da função SalDDESendToClient,

 para enviar os dados ou a resposta de volta ao mesmo cliente.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto.

wParam O handle do remetente da mensagem.lParam O comando.

Mensagem : SAM_DDE_ClientRequestDescrição : A mensagem SAM_DDE_ClientRequest é enviada à aplicação servidora como o resultado de umarequisição da aplicação cliente para os dados que foram atualizados.

O servidor pode enviar dados ou alguma outra resposta para o cliente, fazendo-se uso da funçãoSalDDESendToClient. Na mensagem SAM_DDE_ClientExecute, o valor de wParam corresponde ao windowhandle do cliente. O servidor utiliza o valor de wParam no terceiroparâmetro da função SalDDESendToClient,

 para enviar os dados ou a resposta de volta ao mesmo cliente.

Page 517: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 517/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto.wParam O handle do remetente da mensagem.

lParam Não é utilizada.

Mensagem : SAM_DDE_DataChangeDescrição : A mensagem SAM_DDE_DataChange é enviadapara todos os objetos numa aplicação cliente DDE.Ela é enviada quando o servidor DDE envia dados para o cliente.

Quando um servidor DDE envia um item para o cliente, os dados aparecem automaticamente no objetoespecificado na aplicação cliente ( através da função SalDDEStartSession). A aplicação cliente não precisaexecutar qualquer ação para receber os dados. No entanto, se a aplicação cliente quiser saber quando o os dadosforam enviados pelo servidor, pode fazê-lo processando a mensagem SAM_DDE_DataChange.

Observe que a mensagem SAM_DDE_DataChange é enviada depois que os dados sãoenviados ao cliente.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_DestroyDescrição : A mensagem SAM_Destroy é enviada aos objetos top level (dialog box, form window ou tablewindow) e depois para todos os seus objetos filho antes que oobjeto seja destruído. As mensagens SAM_Destroysão enviadas após a mensagem SAM_Close ser enviada ao objeto top level.

Por exemplo, num form window com data fields, o Centura envia as mensagens aos objetos na seguinte ordem :

1. envia SAM_Close ao form window.2. envia SAM_Destroy ao form window.3. envia SAM_Destroy a cada um dos objetos filho do form window.

Depois que todas as mensagens SAM_Destroy são enviadas, os objetos são destruídos.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está sendo destruído.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_DoubleClickDescrição : A mensagem SAM_DoubleClick é enviada aos objetos do tipo combo box, list box, picture, tablewindow e column quando você dá um double-click num desses objetos.

Variáveis :

Page 518: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 518/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para objetos do tipo combo box ou list box, os valores das variáveis são :

hWndForm O handle do objeto top level.hWndItem O handle da picture.

wParam Não é utilizada.lParam Não é utilizada.

Para objetos do tipo picture, os valores das variáveis são :

hWndForm O handle do objeto top level.hWndItem O handle do combo box ou list box.wParam A coordenada X na imagem onde o usuário clicou com o mouse.lParam A coordenada Y na imagem onde o usuário clicou com o mouse.

Para objetos do tipo table window e column, os valores das variáveis são :

hWndForm O handle da table window.hWndItem O handle da coluna.wParam Não é utilizada.lParam O número da linha clicada.

Mensagem : SAM_DragCanAutoStartDescrição : A mensagem SAM_DragCanAutoStart é enviada para os objetos do tipo top level, child table, datafield, multiline field, list box, combo box, e picture para saber se o objeto pode entrar em modo automático dearrastar-e-soltar.

Retorne TRUE para habilitar o modo automático de arrastar-e-soltar. Se você retornar FALSE ou se não processar esta mensagem, o Centura não habilitará o modo automático de arrastar-e-soltar.

O Centura inicia o modo de arrastar-e-soltar automaticamente, quando a aplicação retorna TRUE à mensagemSAM_DragCanAutoStart. Isto é o mínimo que a aplicação deve fazer para permitir que o usuário arraste oconteúdo de um objeto.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto origem.wParam A posição do mouse no eixo X.

lParam A posição do mouse no eixo Y.

Mensagem : SAM_DragDropDescrição : A mensagem SAM_DragDrop é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture quando o usuário ‘soltar’ o mouse por cima do objeto destino.  

Para obter o handle do objeto armazenado na variável wParam, use a função SalNumberToWindowHandle.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto origem.

Page 519: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 519/580

Programando com o Centura Team Developer 2000

Página PAGE 582

lParam Não é utilizada.

Mensagem : SAM_DragEnd

Descrição : A mensagem SAM_DragEnd é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que o modo arrastar-e-soltar foi encerrado.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_DragEnterDescrição : A mensagem SAM_DragEnter é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que o mouse foi movimentado para dentro de um objeto,enquanto o modo arrastar-e-soltar estava ligado.

Para obter o handle do objeto armazenado na variável wParam, use a função SalNumberToWindowHandle.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto origem.lParam Não é utilizada.

Mensagem : SAM_DragExitDescrição : A mensagem SAM_DragExit é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que o mouse foi movimentado para fora de um objeto,enquanto o modo arrastar-e-soltar estava ligado.

Para obter o handle do objeto armazenado na variável wParam, use a função SalNumberToWindowHandle.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto origem.

lParam Não é utilizada.

Mensagem : SAM_DragMoveDescrição : A mensagem SAM_DragMove é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que o mouse foi movimentado por cima de um objeto,enquanto o modo arrastar-e-soltar estava ligado.

Para obter o handle do objeto armazenado na variável wParam, use a função SalNumberToWindowHandle.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.

Page 520: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 520/580

Programando com o Centura Team Developer 2000

Página PAGE 582

wParam O handle do objeto origem.lParam Não é utilizada.

Mensagem : SAM_DragNotifyDescrição : A mensagem SAM_DragNotify é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que uma ação com o mouse, enquanto o modo arrastar-e-soltar estava ligado.

Para obter o handle do objeto armazenado na variável wParam, use a função SalNumberToWindowHandle.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto destino.lParam Uma das seguintes mensagens :

SAM_DragDrop –  O usuário moveu o mouse para dentro do objeto destinoSAM_DragEnter –  O usuário soltou o mouse no objeto destino.SAM_DragExit –  O usuário movimentou o mouse para fora do objetodestino.SAM_DragMove –  O usuário moveu o mouse por cima do objeto destino.

Mensagem : SAM_DragStartDescrição : A mensagem SAM_DragStart é enviada para os objetos do tipo top level, child table, data field,multiline field, list box, combo box e picture, indicando que o modo arrastar-e-soltar teve início.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam A posição do mouse no eixo X.lParam A posição do mouse no eixo Y.

Mensagem : SAM_DropDownDescrição : A mensagem SAM_DropDown é enviada ao combo box antes que a sua lista seja mostrada.

Variáveis :

hWndForm O handle do objeto top level.hWndItem O handle do combo box.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_DropFilesDescrição : A mensagem SAM_DropFiles é enviada ao objetos do tipo column, data field, multiline field, list

 box, combo box, picture e custom control, quando o usuário solta um arquivo, ou um cojunto de arquivos, a partir do Gerenciador de arquivos ou do Windows Explorer.Apenas os objetos que estiverem com o modo arrastar-e-soltar ligado recebem esta mensagem.

Page 521: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 521/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Utilize a função SalDropQueryFiles para obter os nomes dos arquivos que foram soltos no objeto. Esta função sódeve ser utilizada durante o processamento da mensagem SAM_DropFiles.

Através da função SalDropQueryPoint você obtém a localização do mouse no objeto onde os arquivos foramsoltos.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_EndCellTabDescrição : A mensagem SAM_EndCellTab é enviada à table window quando o usuário tenta avançar,utilizando a tecla TAB, além da última coluna editável da table window.

Você pode usar esta mensagem para adicionar, automaticamente, uma nova linha na table window, ou para posicionar o cursor na primeira coluna da próxima linha.

O comportamento padrão do Centura é selecionar a linha atual. Para mudar este comportamento, retorne TRUEno final do Message Actions desta mensagem.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.lParam O número da linha atual, a linha que está com o contexto. Observe que a

 primeira linha é 0 (zero), a segunda é 1, e assim por diante.

Mensagem : SAM_FetchDoneDescrição : A mensagem SAM_FetchDone é enviada à table window quando a função SalTblPopulate,utilizando o valor TBL_FillAllBackground no seu último parâmetro, concluíu a carga dos dados na tablewindow.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.lParam Não é utilizada.

Mensagem : SAM_FetchRowDescrição : A mensagem SAM_FetchRow é enviada à table window sempre que o Centura precisar copiar umalinha para o cache da table window.

Quando você carrega os dados numa table window o Centura envia uma mensagem SAM_FetchRow para linhamostrada na table window. Quando o usuário solicita que sejam mostradas mais linhas, o Centura envia maismensagens SAM_FetchRow para as linhas que ainda não estão no cache e que precisam ser mostradas.

 Normalmente, você utiliza a função SqlFetchRow para trazer uma linha para a table window, baseado no número

da linha ( valor este contido em lParam ) .

Page 522: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 522/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.

wParam Não é utilizada.lParam O número da linha que está sendo carregada.

Esta mensagem pode retornar um dos seguintes valores :TBL_NoMoreRows - Quando não existe mais linhas na posição especificada, nem além dela.TBL_RowDeleted - A linha foi apagada.TBL_RowFetched - A linha solicitada foi carregada com sucesso.

Mensagem : SAM_FetchRowDoneDescrição : A mensagem SAM_FetchRowDone é enviada à uma table window depois que o Centura carrega

uma linha.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.lParam O número da linha que foi carregada.

Mensagem : SAM_FieldEditDescrição : A mensagem SAM_FieldEdit é enviada aos objetos do tipo combo box, data field, multiline text,table window ou column quando o usuário modifica o valor do um objeto e move o foco para fora do objeto.

Por exemplo : Se você digitar um valor num data field, e pressionar a tecla TAB ou clicar com o mouse foradeste objeto, uma mensagem SAM_FieldEdit é enviada ao data field.

Observe que a SAM_AnyEdit é enviada a cada tecla pressionada, enquanto que SAM_FieldEdit é enviadaapenas quando o usuário tenta tirar o foco de um objeto que teve seu conteúdo alterado.

Para realizar validações nos objetos, utilize a mensagem SAM_Validate. A mensagem SAM_FieldEdit é mantida pela Centura Software Corporation apenas para manter a compatibilidade com as versões mais antigas doCentura.

Variáveis :

Para objetos do tipo data field, combo box ou multiline field, os valores das variáveis são :

hWndForm O handle do objeto top level.hWndItem O handle do data field, combo box ou multiline field.wParam Não é utilizada.lParam Não é utilizada.

 No caso do objeto column, os valores das variáveis são :

hWndForm O handle da table window.

hWndItem O handle da coluna.

Page 523: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 523/580

Programando com o Centura Team Developer 2000

Página PAGE 582

wParam Não é utilizada.lParam O número da linha da table window.

Mensagem : SAM_HelpDescrição : A mensagem SAM_Help é enviada ao objeto do tipo top level quando o usuário pressiona a tecla defunção F1.

A variável wParam contém o handle do objeto filho que está com o foco. Utilize esta informação paradisponibilizar a ajuda sensitiva ao contexto.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto top level.wParam O handle do objeto filho que está com o foco.lParam Não é utilizada.

Mensagem : SAM_KillFocusDescrição : A mensagem SAM_ KillFocus é enviada aos objetos do tipo table window, data field, multilinefield, pushbutton, radio button, option button, combo box, list box, column e barras de scroll quando o usuárioestá tirando o foco do objeto, ou seja, quando o usuário está saindo do objeto. Esta mensagem é sempre enviada,mesmo quando o valor do objeto não é alterado.

Atenção : Você não pode utilizar a função SalSetFocus enquanto processa a mensagem SAM_KillFocus, devidoa uma limitação do Windows.

Variáveis :

hWndForm O handle do objeto top level.hWndItem O handle do objeto.wParam O handle do objeto que está obtendo o foco.lParam Não é utilizada.

Mensagem : SAM_PrintDescrição : A mensagem SAM_Print é enviada aos objetos do tipo form window, data field, multiline text,combo box ou pushbutton, quando este estiver sendo impresso.

Variáveis :

hWndForm O handle do objeto top level.hWndItem O handle do objeto que está sendo impresso no momento.wParam O valor do HDC ( Display Context Handle )lParam O retângulo que está sendo impresso.

Mensagem : SAM_TblDoDetailsDescrição : A mensagem SAM_TblDoDetails é enviada à table window quando o foco é alterado, seja via

 programa ou pelo usuário.

Se você processar esta mensagem, mas não executar o comando Return, o Centura executa o seu procedimento padrão para este evento.

Page 524: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 524/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objetowParam Não é utilizada.

lParam Não é utilizada.

Mensagem : SAM_ReportFetchInitDescrição : A mensagem SAM_ReportFetchInit é enviada ao objeto top level que iniciou o relatório. este eventoacontece quando o Report Builder está pronto para formatar a primeira página de um relatório.

O Report Builer envia esta mensagem à aplicação, após ter enviado a mensagem SAM_ReportStart.

A mensagem SAM_ReportFetchInit significa que o Report Builder está apto a receber dados vindos daaplicação.

Se a origem dos dados do relatório for um banco de dados, execute a função SqlExecute.Se você retornar FALSE, o relatório é finalizado. Se você não retonar valor algum, ou retornar TRUE, o relatóriocontinua.

Variáveis :hWndForm Não é utilizada.hWndItem Não é utilizada.wParam O handle do objeto Report Builder.lParam Não é utilizada.

Mensagem : SAM_ReportFetchNextDescrição : A mensagem SAM_ReportFetchNext é enviada é enviada ao objeto top level que iniciou o relatório.O Report Builer envia esta mensagem à aplicação, após ter enviado a mensagem SAM_ReportFetchInit.

A mensagem SAM_ReportFetchNext significa que o Report Builder está apto a receber a próxima linha dedaodos vindos da aplicação.

Se a origem dos dados do relatório for um banco de dados, normalmente deve ser feita uma chamada à funçãoSqlFetchNext, para se obter os dados. Se estes forem obtidos com sucesso, a aplicação deve retornar TRUE paraa mensagem SAM_ReportFetchNext. O Centura não envia os dados da aplicação para o relatório até que aaplicação retorne TRUE no processamento desta mensagem. Se não existe mais linhas de dados para seremobtidas, a aplicação deve retornar FALSE.

Variáveis :hWndForm Não é utilizada.hWndItem Não é utilizada.wParam O handle do objeto que iniciou o relatório.lParam Não é utilizada.

Mensagem : SAM_ReportFinishDescrição : A mensagem SAM_ ReportFetchNext é enviada ao objeto top level que iniciou o relatório. OReport Builer envia esta mensagem à aplicação quando o relatório é encerrado.

Variáveis :hWndForm Não é utilizada.

Page 525: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 525/580

Programando com o Centura Team Developer 2000

Página PAGE 582

hWndItem Não é utilizada.wParam O handle do objeto que iniciou o relatório.lParam É TRUE, se o usuário cancelou a impressão do relatório.

Mensagem : SAM_ReportNotifyDescrição : O Report Builder recebe os dados vindos da aplicação e formata os blocos do relatório. Quando um

 bloco formatado ultrapassa os limites da página, o bloco de cabeçalho/rodapé da página é incluído na página.Esta página é então, enviada à impressora ou mostrada na tela, quando em modo de visualizar impressão.

A mensagem SAM_ReportNotify é enviada pelo Report Builder à aplicação quando um bloco do relatório estaformatado, e foi enviado ao buffer da página. As notificações Before são enviadas antes que qualquer formataçãoocorra. As notificações Output  são enviadas quando a primeira linha do relatório é enviada ao buffer, e, asnotificações Done, são enviadas quando o bloco inteiro é enviado ao buffer da página.

As notificações são enviadas ao objeto top level que iniciou o relatório. O Report Builder envia dois conjuntosde notificações para cada bloco :

Quando ao menos uma linha do boco formatado foi enviada ao buffer da página.Quando o bloco acabou de ser enviado ao buffer da página.

Verifique o valor da variável lParam para saber qual a parte do relatório que o Report Builder está pronto paraformatar. O valor em lParam é uma das constantes RPT_Before*.

O Report Builder ignora qualquer valor que você retornar durante o processamento da mensagemSAM_ReportNotify.

Variáveis :hWndForm Não é utilizada.hWndItem Não é utilizada.

wParam O handle do relatório.lParam Um dos códigos de notificações RPT_Before*.

Mensagem : SAM_ReportStartDescrição : A mensagem SAM_ReportStart é enviada ao objeto top level que iniciou o relatório. O ReportBuiler envia esta mensagem à aplicação quando está pronto para formatar uma parte do relatório.

A mensagem SAM_ReportStart é enviada depois que a aplicação invoca o relatório ( com a funçãoSalReportView ou SalReportPrint ) indicando que o relatório está sendo iniciado. Esta mensagem é mostradaantes que o relatório seja mostrado ou impresso.

O Centura ignora qualquer valor de retorno neste evento.

Variáveis :hWndForm Não é utilizada.hWndItem Não é utilizada.wParam O handle do objeto que iniciou o relatório.lParam Não é utilizada.

Mensagem : SAM_RowHeaderClickDescrição : A mensagem SAM_RowHeaderClick é enviada à table window quando você clica no cabeçalho de

uma linha.

Page 526: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 526/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.

lParam O número da linha com o contexto.

Mensagem : SAM_RowHeaderDoubleClickDescrição : A mensagem SAM_RowHeaderDoubleClick é enviada à table window quando você dá um double-click no cabeçalho de uma linha.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.

lParam O número da linha com o contexto.

Mensagem : SAM_RowSetContextDescrição : A mensagem SAM_RowSetContext é enviada à table window quando o usuário muda o foco dalinha. Se você processar esta mensagem, mas não retornar algum valor ( através do comando Return ), o Centuraexecuta o seu processamento padrão.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handl edo objeto.wParam Não é utilizada.

lParam Não é utilizada.

Mensagem : SAM_RowValidateDescrição : A mensagem SAM_RowValidate é enviada à table window antes que o foco mude de linha,

 permitindo que a aplicação valide o a linha com o contexto, ou seja, a linha que foi editada.

Esta mensagem é enviada apenas quando você muda o foco de uma linha para outra, e não quando você muda ofoco da table window para algum outro objeto.

Se a aplicação retornar VALIDATE_Cancel, o foco permanece na linha atual. Se a aplicação retornarVALIDATE_Ok, o comportamento da table window permanece o mesmo, mudando o foco da linha.

A mensagem SAM_RowValidate é enviada respeitando as configurações dos flags da linha atual e da célulaeditada.

Variáveis :hWndForm O handle da table window.hWndItem O handle da table window.wParam Não é utilizada.lParam O número da linha com o contexto ( a primeira linha é 0, a segunda é 1, e

assim por diante).

Page 527: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 527/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Mensagem : SAM_ScrollBarDescrição : A mensagem SAM_ScrollBar é enviada à barra de scroll horizontal e vertical, quando vocêmovimenta a barra utilizando o mouse ou o teclado.

A aplicação deve verificar o valor da variável wParam para determinar quais dos seguintes movimentos pode ter

ocorrido: SB_Bottom, SB_LineDown, SB_LineUp, SB_PageDown, SB_PageUp, SB_ThumbPosition,SB_ThumbTrack e SB_Top.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle da scroll bar.wParam Um dos valores SB_* citados acima.lParam O valor numérico da scroll bar.

Mensagem : SAM_SetFocusDescrição : A mensagem SAM_SetFocus é enviada aos objetos do tipo check box, combo box, data field, list box, multiline text, push button, radio button, scroll bar ou column quando o objeto recebe o foco.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto que está perdendo o foco.lParam Não é utilizada.

Mensagem : SAM_SqlErrorDescrição : A mensagem SAM_SqlError é enviada à seção Application Actions do outline quando ocorrer umerro na execução de alguma função SQL.

Se você processar esta mensagem, você poderá controlar como a aplicação responderá aos erros SQL, num nívelglobal, processando os erros de maneira padronizada através de uma caixa de diálogo mostrando o número doerro e a mensagem de texto.

Você também pode usar o comando When SqlError em qualquer seção Message Actions do outline, para um processamento de erros mais específico.

Variáveis :hWndForm O handle do objeto top level que invocou a função Sql* que provocou o

erro.hWndItem Não é utilizada.wParam O handle SqllParam O número e a posição do erro.

Mensagem : SAM_TimerDescrição : A mensagem SAM_Timer é enviada à seção Application Actions, aos objetos top level e aos seusobjetos filhos de acordo com o intervalo de tempo configurado com a função SalTimerSet.

Verifique o conteúdo da variável wParam para obter o identificador do timer . Desta forma, um objeto pode

 processar várias mensagens SAM_Timer, de mais de um timer .

Page 528: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 528/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Atenção : Timers são limitados aos recursos do Windows.

Variáveis :hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O identificador do timer .lParam  Não é utilizada.

Mensagem : SAM_ValidateDescrição : A mensagem SAM_Validate é enviada ao objetos do tipo data field, multiline field, combo box ecolumn quando o usuário modifica o valor do objeto e tenta mover o foco para fora do objeto, ou seja, quando ousuário tenta mudar de objeto.

Quando o usuário muda o valor de um destes objetos, o flag de edição do objeto é modificado para TRUE. Você

 pode obter o valor do flag de edição através da função SalQueryFieldEdit e pode atribuir um valor ao flag deedição utilizando a função SalSetFieldEdit.

A mensagem SAM_Validate valida os valores que o usuário digitou. Sempre que o usuário modifica o valor deum objeto o Centura envia a mensagem SAM_Validate para o objeto. Se o valor do objeto estiver válido, retorneVALIDATE_Ok à mensagem SAM_Validate. Isto fará com que o valor do flag de edição torne-se FALSE.

O valor que você retonar a partir da mensagem SAM_Validate controlará a mudança de foco entre os objetos.

O Centura não envia a mensagem SAM_Validate quando o usuário seleciona um item de menu, pois o acesso aomenu não tira o foco do objeto. Você pode forçar a validação do objeto utilizando a função SalSendValidateMsgno Menu Actions do menu item. Isto forç a validação do campo antes de processar a escolha do menu ( semmudar o foco ). A função SalSendValidateMsg retorna o valor que for retornado no processamento da mensagem

SAM_Validate.

Os possiveis valores que devem ser retornados à mensagem SAM_Validate, são :

VALIDATE_Cancel –  Não permite que o foco seja retirado do objeto, retornando o foco ao objeto editado.VALIDATE_Ok –  Permite a mudança do foco. Este é o comportamento padrão do Centura, caso você não

retorne nenhum valor na mensagem SAM_Validate.VALIDATE_OkClearFlag –  Permite a mudança do foco e atribui FALSE ao flag de edição do objeto.

Obs : O Centura enviará a mensagem SAM_FieldEdit ao objeto, a menos que você retorne VALIDATE_Cancel.

Para colunas da table window, os valores das variáveis são :

hWndForm O handle do objeto top level.hWndItem O handle do objeto que está recebendo a mensagem.wParam O handle do objeto que está recebendo o foco. Será zero quando não existir

mudança de foco, no caso de uma chamada através da funçãoSalSendValidateMsg.

lParam O índice da linha. Se o foco está na primeira linha, este valor é zero. Se o foco está nasegunda linha, este valor é 1, e assim por diante.

Para os outros objetos, os valores das variáveis são :

hWndForm O handle do objeto top level.

hWndItem O handle do objeto que está recebendo a mensagem.

Page 529: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 529/580

Programando com o Centura Team Developer 2000

Página PAGE 582

wParam Não é utilizada.lParam  Não é utilizada.

Page 530: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 530/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 531: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 531/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice DGuia de referência das funções do Report BuilderEste guia serve de referência às funções encontradas do Report Builder.

Page 532: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 532/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Funções agregadas

AverageCount

MaximumMinimumReportAverageReportCountReportMaximumReportMinimumReportSumSum

Funções não agregadas

CurrentDateCurrentTimeDateAddDayDateConstructDateDayDateHourDateIFFDateMinuteDateMonthDateMonthBeginDateMonthEndDateSecondDateToStrDateToStrPictureDateToStrPictureDateYear

 NumberAbsolute NumberCountryFmt NumberIFF NumberMod NumberRound

 NumberToCurrency NumberToStr NumberToStrPicture NumberTruncatePageNumberPowerReportDeviceReportDriverReportFileNameReportPortStrCase

StrCompare

Page 533: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 533/580

Programando com o Centura Team Developer 2000

Página PAGE 582

StrlFFStrLeftStrLengthStrLower

StrLTrimStrMidStrPadStrProperStrRepeatStrReplaceStrRightStrRTrimStrScanStrSpacesStrTabColSuppress

StrTabRowSuppressStrTabSeparateStrToDateStrToNumberStrTranslateStrTrimStrUpperWeekDayXTabGetColCountXTabGetColHeadingsXTabGetRowCountXTabGetRowHeadings

Page 534: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 534/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : AverageSintaxe : nMedia = Average ( input item )Descrição : Retorna a média de uma coluna dentro de um break group.

Parâmetro : input item Number - A coluna que você quer obter a média.

Valor de Retorno :nMedia é a média calculada.

Função : CountSintaxe : nLinhas = Count ( )Descrição : Retorna o número de linhas processadas dentro de um break group.

Nenhum Parâmetro . 

Valor de Retorno :nLinhas é a quantidade de linhas processadas.

Função : MaximumSintaxe : nValor = Maximum ( input item )Descrição  : Retorna o valor máximo de uma coluna de valores. Você pode obter o valormáximo de uma coluna de um determinado break group ou do relatório todo.

Parâmetro : input item Number - A coluna cujo valor máximo você quer obter.

Valor de Retorno :nValor  é o valor máximo obtido.

Função : MinimumSintaxe : nValor = Minimum ( )Descrição : Retorna o menor valor de uma coluna de valores numéricos. Você pode obter o

menor valor de uma coluna de um determinado break group ou do relatório todo.

Parâmetro : input_item Number - O nome da coluna da qual você deseja obter o menor valor.

Valor de Retorno :nValor  é o menor valor obtido.

Função : ReportAverageSintaxe : nValor = ReportAverage ( input_item )

Page 535: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 535/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Retorna a média de uma determinada coluna. Diferentemente da função Average, ReportAverage calcula a média considerando o relatório todo.

Nenhum Parâmetro . 

Valor de Retorno :nValor  é a média calculada.

Função : ReportCountSintaxe : nLinhas = ReportCount ( )Descrição  : Retorna o número de linhas processadas num relatório. Se você utilizar estafunção no Report Footer, nLinhas será a quantidade total de linhas processadas no relatório.Se você utilizá-la no Footer  de um bloco, nLinhas  será a quantidade total de linhas

 processadas até esse ponto do relatório.

Nenhum Parâmetro . 

Valor de Retorno :nLinhas é a quantidade total de linhas processadas até o ponto onde a função foi processada.

Função : ReportMaximumSintaxe : nValor = ReportMaximum ( input_item )Descrição : Retorna o valor máximo de uma coluna de valores no relatório todo.

Parâmetro : input_item Number - O nome da coluna da qual você deseja obter o valor máximo.

Valor de Retorno :nValor  é o valor máximo obtido.

Função : ReportMinimumSintaxe : nValor = ReportMinimum ( input_item )Descrição : Retorna o menor valor de uma coluna de valores numéricos no relatório todo.

Parâmetro : input_item Number - O nome da coluna cujo valor mínimo você deseja obter.

Valor de Retorno :nValor  é o menor valor obtido.

Função : ReportSumSintaxe : nValor = ReportSum ( input_item )Descrição : Retorna a soma de uma coluna de valores numéricos no relatório todo.

Page 536: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 536/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro : input_item Number - O nome da coluna cuja soma de valores no relatório todo você

deseja obter.

Valor de Retorno :O valor retornado depende do local onde você utilizar o campo associado à funçãoReportSum no seu template.

Se for utilizada no Report Footer, nValor  é a soma do input_item especificado, considerandoo relatório todo.Se for utilizada no Page Footer, nValor  é a soma do input_item especificado, considerando osvalores até a página atual.Se for utilizada no Break Group Footer, nValor   é a soma do input_item  especificado,considerando os valores até a quebra de grupo atual.Se for utilizada no Detail Block , nValor  é a soma do input_item especificado, considerando

os valores até a linha de detalhe atual.

Função : SumSintaxe : nValor = Sum ( input_item )Descrição : Retorna a soma de uma coluna de valores numéricos num determinado grupo.

Parâmetro : input_item Number - O nome da coluna da qual você deseja obter a soma dos valores

de um determinado grupo.

Valor de Retorno :nValor  é a soma do input_item especificado num determinado Break Group.

Função : CurrentDateSintaxe : dtData = CurrentDate ( )Descrição : Retorna a data atual. Esta função baseia-se no relógio interno do seu computador,

 por isso, certifique-se de que a data do seu computador esteja correta.

Nenhum Parâmetro . 

Valor de Retorno :dtData é a data atual.

Função : CurrentTimeSintaxe : dtHora = CurrentTime ( )Descrição : Retorna a hora atual. Esta função baseia-se no relógio interno do seu computador,

 por isso, certifique-se de que a hora do seu computador esteja correta.

Nenhum Parâmetro . 

Page 537: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 537/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno :dtHora é a hora atual.

Função : DateAddDaySintaxe : dtData = DateAddDay ( dtDataRef , nNumDias )Descrição : Adiciona ou subtrai um número de dias de uma determinada data.

Parâmetro : dtDataRef Date - Data de referência que servirá de base para o cálculo.nNumDias Number - Número de dias. Se for informado um número positivo,

dtDataRef será acrescida de nNumDias, se for um número negativo,dtDataRef será subtraida de nNumDias.

Valor de Retorno :dtData é a nova data calculada.

Função : DateConstructSintaxe : dtDataHora = DateConstruct ( nAno , nMes , nDia , nHora , nMinuto , nSegundo )Descrição : Retorna um valor tipo date/time que é construído a partir dos valores informados

 por você.

Parâmetros : nAno Number - Um valor indicando o ano.

nMes Number - Um valor indicando o mês.nDia Number - Um valor indicando o dia.nHora Number - Um valor indicando a hora.nMinuto Number - Um valor indicando o minuto.nSegundo Number - Um valor indicando os segundos.

Valor de Retorno :dtDataHora é o valor data e hora construído.

Função : DateDay

Sintaxe : nDia = DateDay ( dtData )Descrição : Extrai o dia de uma data informada.

Parâmetro : dtData Date - O valor tipo date cujo dia você deseja obter.

Valor de Retorno :nDia é o dia extraído da data dtData.

Função : DateHour

Sintaxe : nHora = DateHour ( dtData )

Page 538: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 538/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição : Extrai a hora de uma data informada.

Parâmetro : dtData Date - Um valor tipo date cuja hora você deseja obter.

Valor de Retorno :nHora é a hora extraída da data dtData.

Função : DateIFFSintaxe : dtData = DateIIF ( nValor , dtData1 , dtData2 , dtData3 )Descrição : Dependendo do valor em nValor, retorna uma das três datas informadas.

Parâmetros : nValor Number - Um valor numérico.

dtData1 Date - A data que será retornada, no caso do valor em nValor ser menor doque 0.

dtData2 Date - A data que será retornada, no caso do valor em nValor ser igual a 0.dtData3 Date - A data que será retornada, no caso do valor em nValor ser maior do

que 0.

Valor de Retorno :dtData é a data obtida.

Função : DateMinuteSintaxe : nMinuto = DateMinute ( dtData )Descrição : Extrai o valor dos minutos de uma data informada.

Parâmetro : dtData Date - Um valor tipo date cujos minutos você deseja obter.

Valor de Retorno :nMinuto é o minuto extraído da data dtData.

Função : DateMonthSintaxe : nMes = DateMonth ( dtData )Descrição : Extrai o mês de uma data informada.

Parâmetro : dtData Date - Um valor tipo date do qual você deseja obter o mês.

Valor de Retorno :nMes é o mês extraído da data dtData.

Função : DateMonthBegin

Page 539: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 539/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : dtDataInicial = DateMonthBegin ( dtData )Descrição : Retorna o primeiro dia do mês e ano especificados em dtData.

Parâmetro : 

dtData Date - Um valor tipo date cujo primeiro dia do mês você deseja obter.

Valor de Retorno :dtDataInicial   é uma data que corresponde ao primeiro dia do mês e ano informados emdtData.

Função : DateMonthEndSintaxe : dtDataFinal = DateMonthEnd ( dtData )Descrição : Retorna o último dia do mês e ano especificados em dtData.

Parâmetro : dtData Date - Um valor tipo date cujo último dia do mês você deseja obter.

Valor de Retorno :dtDataFinal  é uma data que corresponde ao último dia do mês e ano informados em dtData.

Função : DateSecondSintaxe : nSegundos = DateSecond ( dtData )Descrição : Extrai o valor dos segundos de uma data informada.

Parâmetro : dtData Date - Um valor tipo date cujo valor dos segundos você deseja obter.

Valor de Retorno :nSegundos é o valor dos segundos extraído da data dtData.

Função : DateToStrSintaxe : sData = DateToStr ( dtData )Descrição : Converte um valor de uma data para sua representação tipo string.

Parâmetro : dtData Date - Um valor tipo date cujo valor string você deseja obter.

Valor de Retorno : sData é a data convertida.

Função : DateToStrPictureSintaxe : sData = DateToStrPicture ( dtData , sFormato )Descrição  : Converte um valor de uma data para sua representação tipo string, formatando

conforme a formatação indicada em sFormato.

Page 540: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 540/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetro : dtData Date - Um valor tipo date cujo valor em formato string você deseja obter.sFormato String - A formatação que será aplicada ao valor da data.

Valor de Retorno : sData é a data convertida no formato especificado em sFormato. Por exemplo:DateToStrPicture( 12/31/56 , 'MMM d-yyyy' ) retornará a string Dec-31-1956. DateToStrPicture( 12/31/56 , 'dd-MM-yyyy' ) retornará a string 31-12-1956. 

Função : DateYearSintaxe : nAno = DateYear ( dtData )Descrição : Extrai o valor do ano de uma data informada.

Parâmetro : dtData Date - Um valor tipo date cujo ano você deseja obter.

Valor de Retorno :nAno é o valor do ano extraído da data dtData.

Função : NumberAbsoluteSintaxe : nValorAbsoluto = NumberAbsolute ( nValor )Descrição : Retorna o valor absoluto de um número.

Parâmetro : nValor Number - O valor numérico cujo valor absoluto você deseja obter.

Valor de Retorno :nValorAbsoluto é o valor absoluto do número nValor .

Função : NumberCountryFmtSintaxe : sValor = NumberCountryFmt ( nValor )Descrição  : Retorna uma string formatada, representando o valor número em nValor. A

formatação utilizada depende das configurações internacionais do Windows.

Parâmetro : nValor Number - O valor numérico cujo valor em formato string você deseja obter.

Valor de Retorno : sValor  é valor string formatado.

Função : NumberIFFSintaxe : nValor = NumberIIF ( nNumero , nValor1 , nValor2 , nValor3 )

Descrição : Dependendo do valor em nNumero, retorna um dos três valores informados.

Page 541: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 541/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros : nNumero Number - Um valor numérico.nValor1 Number - O valor que será retornado, no caso de nNumero ser menor do

que 0.nValor2 Number - O valor que será retornado, no caso de nNumero ser igual a 0.nValor3 Number - O valor que será retornado, no caso de nNumero ser maior do que

0.

Valor de Retorno :nValor  é o valor obtido.

Função : NumberModSintaxe : nResto = NumberMod ( nNumero1 , nNumero2 )

Descrição : Obtém o resto da divisão entre nNumero1 e nNumero2.

Parâmetros : nNumero1 Number - O valor numérico que será dividido por nNumero2.nNumero2 Number - O valor numérico que será o divisor de nNumero1.

Valor de Retorno :nResto é o resto da divisão de nNumero1 por nNumero2.

Função : NumberRoundSintaxe : nNovoNumero = NumberRound ( nNumero, nPrecisão )Descrição  : Retorna um valor numérico arredondado, de acordo com o número de casasdecimais informado em nPrecisão.

Parâmetros : nNumero Number - O valor numérico que será arredondado.nPrecisão Number - O número de casas decimais, à direita do ponto decimal.

Valor de Retorno :nNovoNumero é o novo número gerado, devidamente arredondado, de acordo com o número

de casas decimais informado em nPrecisão.

Função : NumberToCurrencySintaxe : sNumeroFormatado = NumberToCurrency ( nNumero )Descrição : Converte o número informado para um valor string, formatado de acordo com asconfigurações padrões do Windows.

Parâmetro : nNumero Number - O valor numérico que será convertido.

Valor de Retorno :

Page 542: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 542/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 sNumeroFormatado é um valor string que representa o valor numérico nNumero formatado.

Função : NumberToStr

Sintaxe : sNumero = NumberToStr ( nNumero )Descrição : Converte o número informado para um valor string.

Parâmetro : nNumero Number - O valor numérico que será convertido.

Valor de Retorno : sNumero é um valor string que representa o valor numérico nNumero.

Função : NumberToStrPictureSintaxe : sNumero = NumberToStrPicture ( nNumero , sFormato)Descrição  : Converte o número informado em nNumero  para um valor string, aplicando aformatação informada em sFormato.

Parâmetros : nNumero Number - O valor numérico que será convertido e formatado.sFormato String - A formatação que será aplicada ao número informado em sFormato.

Valor de Retorno : sNumero é um valor string que representa o valor numérico nNumero formatado.

Função : NumberTruncateSintaxe : nNumTruncado = NumberTruncate ( nNumero , nPrecisao)Descrição  : Trunca o número, obedecendo o número de casas decimais especificado emnPrecisao.

Parâmetros : nNumero Number - O valor numérico que será truncado.nPrecisao Number - O número de casas decimais.

Valor de Retorno :nNumTruncado é o valor truncado.

Função : PageNumberSintaxe : nNumPagina = PageNumber ( )Descrição : Retorna o número da página atual.

Nenhum Parâmetro. 

Valor de Retorno :nNumPagina é o número da página atual.

Page 543: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 543/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : PowerSintaxe : nNovoNumero = Power ( nNumero , nPotencia )

Descrição  : Retorna o valor em nNumero  elevado a potência do número informado emnPotencia.

Parâmetros : nNumero Number - O número que você deseja elevar a uma determinada potência.nPotencia Number - O valor da potência.

Valor de Retorno :nNovoNumero é o resultado da exponenciação.

Função : ReportDeviceSintaxe : sNomeImpr = ReportDevice ( )Descrição : Retorna o nome da impressora conectada ao relatório.

Nenhum Parâmetro. 

Valor de Retorno : sNomeImpr  é o nome da impressora conectada ao relatório.

Função : ReportDriverSintaxe : sNomeDriver = ReportDriver ( )Descrição : Retorna o nome do driver de impressão.

Nenhum Parâmetro. 

Valor de Retorno : sNomeDriver  é o nome do driver de impressão.

Função : ReportFileName

Sintaxe : sNomeQRP = ReportFileName ( )Descrição : Retorna o nome do arquivo do relatório atual.

Nenhum Parâmetro. 

Valor de Retorno : sNomeQRP  é o nome do arquivo do relatório atual.

Função : ReportPortSintaxe : sPorta = ReportPort ( )Descrição : Retorna a porta física conectada a sua impressora.

Page 544: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 544/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Nenhum Parâmetro. 

Valor de Retorno :

 sPorta é o identificador da porta conectada a sua impressora.

Função : StrCaseSintaxe : sSubStr = StrCase ( nNum , sLista )Descrição : Extrai e retorna uma string de uma lista de valores delimitados por vírgulas.

Parâmetros :nNum Number - Um valor numérico positivo incluindo o zero.sLista String - Uma lista de valores string delimitados por vírgulas.

Valor de Retorno : sSubStr  é a string retirada da lista de valores delimitados por vírgulas.

Função : StrCompareSintaxe : nRetorno = StrCompare ( sStr1, sStr2 )Descrição : Compara o conteúdo de duas strings e retorna um valor numérico. A comparaçãoé feita baseando-se nos caracteres ASCII dos conteúdos dos parâmetros.

Parâmetros :

sStr1 String - Um valor string para ser comparado.sStr2 String - Um valor string para ser comparado.

Valor de Retorno :nRetorno é um valor numérico que indica:se sStr1 < sStr2, nRetorno é um valor menor do que zero.se sStr1 = sStr2, nRetorno é zero.se sStr1 > sStr2, nRetorno é um valor maior do que zero.

Função : StrIFF

Sintaxe : nRetorno = StrIFF ( nNumero, sValor1, sValor2, sValor3 )Descrição : Dependendo do valor em nNumero, retorna um dos três valores informados.

Parâmetro : nNumero Number - Um valor numérico.sValor1 Number - O valor que será retornado, no caso de nNumero  ser menor do

que 0.sValor2 Number - O valor que será retornado, no caso de nNumero ser igual a 0.sValor3 Number - O valor que será retornado, no caso de nNumero ser maior do que

0.

Valor de Retorno :

Page 545: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 545/580

Programando com o Centura Team Developer 2000

Página PAGE 582

nRetorno é o valor obtido.

Função : StrLeft

Sintaxe : sRetorno = StrLeft ( sValor, nTamanho )Descrição : Extrai e retorna o número de caracteres informado em nTamanho, de acordo como valor indicado em  sValor . O ponto inicial para a extração é a posição mais à esquerda dastring.

Parâmetros : sValor String - O valor string.nTamanho Number - O número de caracteres a serem extraídos da string em sValor.

Valor de Retorno : sRetorno é a parte extraída da string.

Função : StrLengthSintaxe : nTamanho = StrLength ( sValor )Descrição : Retorna o tamanho de uma string.

Parâmetro : sValor String - O valor string.

Valor de Retorno :

nTamanho é o tamanho da string informada em sValor.

Função : StrLowerSintaxe : sNovoValor = StrLower ( sValor )Descrição : Retorna a string informada em  sValor , tendo todas as suas letras substituídas porsuas equivalentes minúsculas.

Parâmetro : sValor String - O valor string.

Valor de Retorno : sNovoValor  é a string contida em sValor, toda em letras minúsculas.

Função : StrLTrimSintaxe : sNovoValor = StrLTrim ( sValor )Descrição : Retira os espaços em branco e os tabs que existirem entre a posição inicial mais àesquerda da string e a primeira letra ou caractere.

Parâmetro : sValor String - O valor string.

Page 546: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 546/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno : sNovoValor   é a string contida em sValor, sem os caracteres tab e espaços localizados àesquerda.

Função : StrMidSintaxe : sNovoValor = StrMid ( sValor , nInicio , nTamanho )Descrição  : Extrai um pedaço de uma string, baseando-se na posição inicial informada emnInicio e no tamanho da nova string indicado em nTamanho.

Parâmetros : sValor String - O valor string.nInicio Number - A posição inicial da nova string.nTamanho Number - O número de caracteres a serem extraídos.

Valor de Retorno : sNovoValor  é a nova string extraída.

Função : StrPadSintaxe : sNovoValor = StrPad ( sValor , nComprimento )Descrição  : Redimensiona a string informada em sValor, para que esta fique do tamanhoindicado em nComprimento. Se o tamanho original da string for menor do quenComprimento, caracteres brancos serão adicionados à string. No caso oposto, ou seja, se otamanho original da string for maior do que o informado em nComprimento, a string original

será truncada.Parâmetro : sValor String - O valor string.nComprimento Number - O novo tamanho da string.

Valor de Retorno : sNovoValor  é a nova string redimensionada.

Função : StrProper

Sintaxe : sNovoValor = StrProper ( sValor )Descrição : Retorna a string informada em  sValor , tendo todas as suas letras substituídas porsuas equivalentes minúsculas, porém, a letra inicial de cada palavra é colocada em maiúscula.

Parâmetros : sValor String - O valor string.

Valor de Retorno : sNovoValor  é a nova string gerada.

Função : StrRepeat

Page 547: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 547/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Sintaxe : sNovoValor = StrRepeat ( sValor , nNum )Descrição  : Esta função  pega  a string que você informou em  sValor   e a repete umdeterminado número de vezes em nNum.

Parâmetros : sValor String - O valor string.nNum Number - O número de vezes que a string será repetida.

Valor de Retorno : sNovoValor  é a nova string gerada.

Função : StrReplaceSintaxe : sNovaString = StrReplace ( sOriginal , nInicio , nTamanho , sTrocar )Descrição  : Esta função retorna o valor de sOriginal substituído por sTrocar a partir da

 posição informada em nInicio, obedecendo o número de caracteres em nTamanho.

Parâmetros : sOriginal String - A string original.nInicio Number - A posição inicial onde a string sTrocar será inserida.nTamanho Number - O número de caracteres que será substituído na string original.sTrocar String - A string a ser inserida.

Valor de Retorno : sNovaString  é a nova string gerada.

Função : StrRightSintaxe : sRetorno = StrRight ( sValor , nTamanho )Descrição  : Extrai e retorna o número de caracteres informado em nTamanho  do valorcontido em sValor . O ponto inicial para a extração é a posição mais à direita da string.

Parâmetros : sValor String - O valor string.nTamanho Number - O número de caracteres a serem extraídos da string em sValor.

Valor de Retorno : sRetorno é a parte extraída da string.

Função : StrRTrimSintaxe : sNovoValor = StrRTrim ( sValor )Descrição : Retira os espaços em branco e os tabs que existirem entre a posição final mais àdireita da string e o último caractere do conteúdo da variável.

Parâmetro : sValor String - O valor string.

Page 548: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 548/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Valor de Retorno : sNovoValor  é a string contida em sValor, sem os caracteres tab e espaços localizados à direita.

Função : StrScanSintaxe : nPosicao = StrScan ( sString , sLocalizar )Descrição : Esta função procura pela string sLocalizar em sString, e retorna a posição inicialonde esta foi encontrada.

Parâmetros : sString String - O valor string.sLocalizar String - A string que será procurada em sString.

Valor de Retorno :nPosicao  é a posição onde sLocalizar foi encontrada em sString. Se não for encontrada,

nPosicao é -1.

Função : StrSpacesSintaxe : sString = StrSpaces ( nTamanho )Descrição  : Esta função retorna uma string repleta de espaços em branco, do tamanhoespecificado em nTamanho.

Parâmetros : nTamanho Number - O tamanho da string retornada.

Valor de Retorno : sString  é a string gerada.

Função : StrTabColSuppressSintaxe : sRetorno = StrTabColSuppress ( sOrigem )Descrição : Retorna a string sOrigem, excluindo os valores repetidos das colunas.Esta função não apaga os caracteres tab separadores entre cada coluna, nem os caracteresCRLF separando as linhas.

Parâmetro : sOrigem String - A string com múltiplas linhas separadas pelo caractere CRLF, emúltiplas colunas separadas pelo caractere tab.

Valor de Retorno : sRetorno é a string gerada, sem os valores repetidos nas colunas.

Função : StrTabRowSuppressSintaxe : sRetorno = StrTabRowSuppress ( sOrigem )Descrição : Retorna a string sOrigem, excluindo os valores repetidos das linhas.

Page 549: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 549/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Esta função não apaga os caracteres tab separadores entre cada coluna, nem os caracteresCRLF separando as linhas.

Parâmetro : 

sOrigem String - A string com múltiplas linhas separadas pelo caractere CRLF, emúltiplas colunas separadas pelo caractere tab.

Valor de Retorno : sRetorno é a string gerada sem os valores repetidos nas linhas.

Função : StrTabSeparateSintaxe : sRetorno = StrTabSeparate ( sOrigem )Descrição : Retorna a string em sOrigem, colocando um caractere tab entre cada palavra dastring.

Parâmetro : sOrigem String - A string com várias palavras separadas por espaços em branco.

Valor de Retorno : sRetorno é a string gerada com um caractere tab entre cada palavra.

Função : StrToDateSintaxe : dtData = StrToDate ( sStrData )

Descrição : Esta função converte a string em sStrData para uma data.Parâmetro : sStrData String - A data em formato string que será convertida.

Valor de Retorno :dtDate é a data gerada a partir da string em sStrData.

Função : StrToNumberSintaxe : nNum = StrToNumber ( sStrNum )

Descrição : Esta função converte a string em sStrNum para um valor tipo Number.

Parâmetro : sStrNum String - O número em formato string que será convertido.

Valor de Retorno :nNum é o número gerado a partir da string em sStrNum.

Função : StrTranslateSintaxe : sRetorno = StrTranslate ( sValor , sIds , sString )

Page 550: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 550/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Descrição  : Esta função avalia o valor em sValor e, baseado nos identificadores em sIds,retorna a string apropriada presente em sString.

Parâmetros : 

sValor String - O valor que será procurado em sIds.sIds String - Os identificadores.sString String - Os valores separados por vírgulas que serão retornados em

sRetorno.

Valor de Retorno : sRetorno é o valor retornado.

Função : StrTrimSintaxe : sRetorno = StrTrim ( sValor )

Descrição : Esta função retira os espaços em branco do início e do final da string informadaem sValor.

Parâmetro : sValor String - O valor string que terá os espaços em branco do início e do final

retirados.

Valor de Retorno : sRetorno é o valor em sValor sem os espaços.

Função : StrUpperSintaxe : sRetorno = StrUpper ( sValor )Descrição : Esta função converte a string informada em sValor para letras maiúsculas.

Parâmetro : sValor String - O valor string que será convertido em letras maiúsculas.

Valor de Retorno : sRetorno é o valor em sValor em letras maiúsculas.

Função : StrWeekDaySintaxe : nDia = StrWeekDay ( dtData )Descrição : Esta função retorna o dia da semana correspondente à data informada.

Parâmetro : dtData Date - A data que será analisada.

Valor de Retorno :nDia é o dia da semana.

Page 551: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 551/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Função : XTabGetColCountSintaxe : nRetorno = XTabGetColCount ( sCrossTab )Descrição : Esta função retorna o número de colunas existentes no cross tab sCrossTab.

Parâmetro : sCrossTab String - O nome do cross tab cujo número de colunas você deseja contar.

Valor de Retorno :nRetorno é o número de colunas.

Função : XTabGetColHeadingsSintaxe : sRetorno = XTabGetColHeadings ( sCrossTab , nFormula , sFormato )Descrição : Retorna os cabeçalhos das colunas do seu cross tab, baseado no item selecionadoem nFormula. Esta função obtém uma string contendo a lista de valores, separada por tabs,

que é o resultado da formula nFormula. A linha obtida é utilizada para gerar o índice dascolunas presentes no cross tab identificado em sCrossTab.

Parâmetros : sCrossTab String - O nome do cross tab ao qual você deseja aplicar a fórmula

nFormula.nFormula Number - É a categoria das colunas cujos cabeçalhos você deseja obter.

Especifique o número da referida categoria.sFormato String - O formato a ser aplicado ao valor numérico.

Valor de Retorno : sRetorno é o cabeçalho das colunas obtidas.

Função : XTabGetRowCountSintaxe : nRetorno = XTabGetRowCount ( sCrossTab )Descrição : Esta função retorna o número total de linhas presentes no cross tab indicado emsCrossTab.

Parâmetro : sCrossTab String - O nome do cross tab do qual você deseja contar o número de linhas.

Valor de Retorno :nRetorno é o número de linhas do cross tab.

Função : XTabGetRowHeadingsSintaxe : sRetorno = XTabGetRowHeadings ( sCrossTab , nFormula , sFormato )Descrição : Retorna os cabeçalhos das linhas do seu cross tab baseado no item selecionadoem nFormula. Esta função obtém uma string contendo a lista de valores, separada por tabs,que é o resultado da formula nFormula. A linha obtida é utilizada para gerar o índice daslinhas presentes no cross tab identificado em sCrossTab.

Page 552: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 552/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Parâmetros : sCrossTab String - O nome do cross tab ao qual você deseja aplicar a fórmula

nFormula.nFormula Number - É a categoria das linhas cujos cabeçalhos você deseja obter.

Especifique o número da referida categoria.sFormato String - O formato a ser aplicado ao valor numérico.

Valor de Retorno : sRetorno é o cabeçalho das linhas obtidas.

Page 553: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 553/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Page 554: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 554/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice EGuia de referência das classes e funções daBiblioteca Visual Toolchest

Além das funções que o Centura SQLWindows/32 disponibiliza para odesenvolvedor de forma nativa, existem ainda cerca de 200 funções que você

 pode acessar através da biblioteca Visual Toolchest. Essas funções estãoagrupadas em categorias para facilitar a consulta.

Uma série de classes é também adicionada ao ambiente do SQLWindows/32através da Visual Toolchest. Essas classes e alguns exemplos são mostradosneste apêndice.

Page 555: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 555/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Classes disponíveis na Biblioteca Visual Toolchest

As classes da biblioteca Visual Toolchest expandem as funcionalidades das aplicaçõesSQLWindows/32. Diversos avanços visuais são disponibilizados nessas classes.

A seguir são mostradas as classes da Biblioteca Visual Toolchest:

cColorComboBox  cColorListBox 

As classes cColorComboBox e cColorListBox permitem que cada elemento de um combo box ou list box seja mostrado em cores diferentes.

cDirListBox  cDirTreeListBox 

As classes cDirListBox e cDirTreeListBox permitem a navegação através da árvore dosdiretórios, utilizando a interface padrão do Windows.

cDriveComboBox   cDriveListBox 

As classes cDriveComboBox e cDriveListBox mostram todos os drives do sistema, indicandoo tipo do drive com uma figura. Esse objeto funciona de forma similar ao combo boxutilizado na caixa de diálogo padrão do windows para "Abrir Arquivo".

cFontComboBox  cFontListBox 

Page 556: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 556/580

Programando com o Centura Team Developer 2000

Página PAGE 582

As classes cFontComboBox e cfontListBox permitem que cada elemento de um combo boxou list box seja mostrado numa configuração de fonte ( tipo, tamanho e melhoramento defonte ) diferente.

Page 557: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 557/580

Programando com o Centura Team Developer 2000

Página PAGE 582

cFontNameComboBox cFontNameListBox

As classes cFontNameComboBox e cFontNameListBox mostram num combo box ou list boxos nomes e tipos das fontes instaladas. As fontes True Type são identificadas pelo seu própriosímbolo padrão. As fontes padrão da impressora são mostradas com o ícone da impressora. Asdemais fontes não possuem identificadores.

cMeter

A classe cMeter serve para mostrar ao usuário o percentual de conclusão em tarefas longas,deixando-o informado quanto ao estado atual de conclusão de uma determinada tarefa.

cOutlineComboBox cOutlineListBox

As classes cOutlineComboBox e cOutlineListBox provêm funcionalidade de outline aosobjetos combo box e list box, respectivamente.

cPictureComboBox cPictureListBox

As classes cPictureComboBox e cPictureListBox permitem ter uma imagem associada a cadaitem de um combo box ou list box. Essas imagens podem ser posicionadas na mesma linha dotexto, ou em linhas separadas.

cRadioListBox

Page 558: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 558/580

Programando com o Centura Team Developer 2000

Página PAGE 582

A classe cRadioListBox permite que os elementos de um list box tenham aparência ecomportamento similar aos objetos check box e radio button.

Page 559: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 559/580

Programando com o Centura Team Developer 2000

Página PAGE 582

cDesktopListBox

A classe cDesktopListBox permite a navegação através da árvore dos diretórios, utilizando ainterface padrão do Windows a partir da Área de Trabalho.

cSpinField

A classe cSpinField é bastante similar ao comportamento do objeto data field, porém, possuiduas setas que permitem que os valores sejam acrescentados ou diminuídos.

cSplitterWindow e cListView

 Na figura acima podem ser visualizados objetos das classes cDirTreeListBox,cSplitterWindow e cListView. A classe cSplitterWindow é representada visualmente pela

 barra que separa os dois quadros mostrados acima, da mesma forma como é feito no ambientedo SQLWindows/32. A classe cListView, mostrada no quadro direito do exemplo acima,

 possui todas as funcionalidades presentes no Windows Explorer. Não só nomes de arquivos ediretórios podem ser mostrados, mas informações presentes em tabelas de bancos de dados

SQL também podem ser lidas e visualizados numa instância da classe cListView.

cCalendar e cDropDownCalendar

Page 560: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 560/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na figura acima podem ser visualizados objetos das classes cCalendar ecDropDownCalendar, que oferecem uma interface amigável para o usuário informar umadata.

Page 561: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 561/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Funções Visual Toolchest

Para que estas funções possam ser utilizadas na sua aplicação você precisa declarar na seção Libraries do outline do SQLWindows/32 a utilização da biblioteca chamada VT.APL.

Abaixo estão relacionadas as funções da Biblioteca Visual Toolchest agrupadas emcategorias:

Tratamento de Vetores

Nome da função Descrição resumidaVisArrayAppend Adiciona um vetor no final de um outro vetor.VisArrayCopy Copia um vetor para dentro de outro vetor.VisArrayDeleteItem Apaga um item de um vetor.VisArrayFillDateTime Preenche um vetor tipo Date/Time com um valor especificado.VisArrayFillNumber Preenche um vetor tipo Number com um valor especificado.VisArrayFillString Preenche um vetor tipo String com um valor especificado.VisArrayFindDateTime Localiza um valor Date/Time num vetor.VisArrayFindNumber Localiza um valor Number num vetor.VisArrayFindString Localiza um valor String num vetor.VisArrayInsertItem Inclui um item num vetor.VisArraySort Classifica um vetor tanto em ordem ascendente como

decrescente.

Cores e Fontes

Nome da função Descrição resumidaVisFontEnum Obtém os nomes e tipos das fontes.VisFontFree Libera uma fonte que tenha sido carregada na memória através

da função VisFontLoad. VisFontGet Obtém as especificações de uma determinada fonte.VisFontLoad Carrega na memória uma determinada fonte.VisTblSetRowColor Determina a cor do texto de todas as colunas de uma

determinada linha de uma table window.VisMenuInsertFont Inclui um item de menu num menu e o mostra numa

determinada fonte.VisMenuSetFont Mostra um menu item na fonte especificada.

Funções de Depuração

Nome da função Descrição resumidaVisDebugAssert Certifica-se de que uma condição é verdadeira.VisDebugBeginTime Começa a gravar uma operação.VisDebugEndTime Interrompe a gravação do tempo e mostra todos os tempos,

inclusive o tempo total.VisDebugGetFlags Obtém os flags de depuração.

VisDebugSetFlags Define os flags de depuração.

Page 562: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 562/580

Programando com o Centura Team Developer 2000

Página PAGE 582

VisDebugSetLevel Determina o nível de depuração atual.VisDebugSetTime Grava o tempo desde a última chamada das funções

VisDebugSetTime ou VisDebugBeginTime VisDebugString Grava uma string na janela de depuração.

Recursos DOS

Nome da função Descrição resumidaVisDosBuildFullName Constrói o nome com o drive e o path completo, baseado na

localização do executável que está sendo executado.VisDosEnumDirInfo Carrega num vetor as informações de todos os subdiretórios de

um determinado diretório.VisDosEnumDirs Carrega num vetor os nomes de todos os subdiretórios de um

determinado diretório.

Page 563: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 563/580

Programando com o Centura Team Developer 2000

Página PAGE 582

VisDosEnumDrives Carrega num vetor todos os drives, incluindo os drives tipofloppy, winchesters, CD-ROM, rede e RAM.

VisDosEnumFileInfo Carrega num vetor os nomes, tamanhos, datas e atributos detodos os arquivos de um determinado diretório.

VisDosEnumFiles Carrega num vetor os nomes de todos os arquivos de umdiretório.

VisDosEnumNetConnections

Obtém todas as conexões de rede ativas.

VisDosEnumPath Obtém todos os diretórios da variável de ambiente PATH doDOS.

VisDosEnumsShortDirInfo Carrega num vetor as informações de todos os subdiretóriosde um determinado diretório.

VisDosEnumsShortDirs Carrega num vetor todos os nomes longos/curtos dossubdiretórios de um determinado diretório.

VisDosEnumsShortFileInfo Carrega num vetor todos os nomes e demais informações dosarquivos de um determinado diretório.

VisDosEnumsShortFiles Carrega num vetor todos os nomes longos/curtos dosarquivos de um determinado diretório.

VisDosExist Verifica a existência de um arquivo, drive ou diretório.VisDosGetCurDir Obtém o diretório atual de um determinado drive.VisDosGetDriveSize Obtém o espaço disponível num drive.VisDosGetDriveType Obtém o tipo do drive especificado.VisDosGetEnvString Obtém uma variável do ambiente baseado numa palavra

chave.VisDosGetFlags Obtém os status dos flags do DOS.

VisDosGetNetName Obtém o nome da rede de um determinado dispositivo.VisDosGetVersion Obtém a versão do MS-DOS.VisDosGetVolumeLabel Obtém o nome do volume de um determinado drive.VisDosIsParent Obtém o indicador que determina se um diretório contém

subdiretórios.VisDosMakeAllDir Cria todos os diretórios de um path especificado.VisDosMakePath Constrói o path completo dado um drive, um diretório ou

nome de arquivo.VisDosNetConnect Conecta a um dispositivo de rede.VisDosNetDisconnect Cancela uma conexão a um dispositivo de rede.VisDosSetFlags Configura os flags verify, break  ou error mode.VisDosSetVolumeLabel Configura o nome do volume de um dispositivo de disco.VisDosSplitPath Divide a especificação de drive, nome de diretório e nome de

arquivo.

Gerenciamento de arquivos

Nome da função Descrição resumidaVisFileAppend Acrescenta um ou mais arquivos a outro.VisFileClose Fecha um arquivo que foi aberto com a função VisFileOpen. VisFileCopy Copia um ou mais arquivos.

VisFileCreateTemp Cria um arquivo temporário.

Page 564: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 564/580

Programando com o Centura Team Developer 2000

Página PAGE 582

VisFileDelete Apaga um ou mais arquivos.VisFileExpand Copia um arquivo origem para um arquivo destino.VisFileFind Procura por um determinado arquivo e, se encontrá-lo, retorna o

 path completo do mesmo.

VisFileGetAttribute Obtém os valores dos atributos de um determinado arquivo.VisFileGetSize Obtém o tamanho de um determinado arquivo (em bytes).VisFileGetType Obtém o tipo do arquivo.VisFileOpen Cria ou abre um arquivo.VisFileRead Lê um bloco de dados de um arquivo.VisFileReadString Carrega numa string uma linha de texto de um arquivo.VisFileRename Renomeia um ou mais arquivos.VisFileSeek Posiciona, numa determinada posição, dentro de um arquivo.VisFileSetAttribute Configura os atributos de um ou mais arquivos.VisFileSetDateTime Configura os valores data/hora de um ou mais arquivos.

VisFileTell Obtém a posição do ponteiro de um arquivo.VisFileWrite Escreve um bloco de informações num arquivo.VisFileWriteString Escreve uma string num arquivo.Tratamento de List box e combo box

Nome da função Descrição resumidaVisListAddValue Adiciona um item num list box ou combo box ordenado, e

associa o valor especificado ao item.VisListArrayPopulate Carrega os elementos de um vetor num list box.VisListArrayPopulateValue Carrega os elementos de um vetor string e um vetor de

valores num list box.

VisListClearSelection Desmarca todos os itens marcados num list box ou combo box.

VisListDeleteSelected Apaga todos os itens marcados num list box ou combo box.VisListFindString Encontra num list box ou combo box, a primeira ocorrência

de um elemento igual à string especificada.VisListFindValue Localiza o valor associado a um item, baseado num índice.VisListGetDropdownState Obtém a informação se a porção list box de um combo box

está visível.VisListGetFocusIndex Obtém o índice do item que está com o foco ou, no caso de

list box que permite múltipla escolha, o índice do último

item que recebeu o foco.VisListGetVisibleRange Obtém os índices do primeiro e do último elemento visívelnum list box.

VisListInsertValue Inclui um item num list box ou combo box não ordenado, eassocia o valor especificado ao item.

VisListIsMultiSelect Testa um list box para verificar se está configurado paraaceitar múltiplos itens selecionados ao mesmo tempo.

VisListScroll Torna visível um determinado item de um list box ou combo box.

VisListSetDropdownState Mostra ou esconde a porção list box de um combo box.VisListSetFocusIndex Move o foco para um determinado item num list box que

 permite múltipla escolha.

Page 565: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 565/580

Programando com o Centura Team Developer 2000

Página PAGE 582

VisListSetScrollWidth Determina a largura que o list box poderá ser roladohorizontalmente.

Funções de uso genérico

Nome da função Descrição resumidaVisMenuSetText Modifica o texto de um item de menu.VisWinGetText Obtém o texto de um objeto.VisErrorRecovery Mostra uma mensagem de erro e permite que o usuário

libere recursos e tente novamente a operação que causou oerro.

VisGetCopyright Obtém a string de direitos autorais para mostrar numaaplicação que utilize a biblioteca Visual Toolchest.

VisGetKeyState Obtém o estado de uma determinada tecla.VisGetSystemMetrics Obtém a largura e altura de diversos elementos mostrados

 pelo Windows.VisGetVersion Obtém o número da versão da biblioteca Visual Toolchest.VisGetWinFlags Obtém a configuração atual de memória do windows.VisGetWinVersion Obtém o número da versão do Windows.VisListLoadOutline Carrega um outline a partir de um objeto blob (binary large

object) na memória.VisListLoadOutlineFile Carrega um outline a partir de um arquivo ASCII identado 

 por Tabs.VisListSaveOutline Compacta e salva num objeto blob, um outline contido num

list box ou combo box.

VisMenuGetPopupHandle Obtém o handle de um menu popup.VisMenuGetSystemHandle Obtém o handle do menu do sistema de uma janela.VisMenuGetText Obtém o texto de um menu item.VisMenuInsert Insere um menu item num menu.VisMenuIsChecked Verifica se um menu item está marcado.VisMenuIsEnabled Verifica se um menu item está habilitado.VisMenuUncheck Desmarca um menu item.VisNumberChoose Avalia uma expressão numérica.VisStrChoose Avalia uma expressão string.VisStrFind Localiza uma string numa tabela.VisStrFreeTable Libera toda a memória associada a uma tabela string.VisStrLeftTrim Retira os brancos de uma string.VisStrLoadTable Carrega na memória uma tabela gravada em disco.VisWaitCursor Liga/desliga a ampulheta do cursor.VisWinClearAllEditFlags Limpa o flag de edição de cada data field ou multiline field

de um determinado objeto top level.VisWinEnumProps Obtém a lista de propriedades de um determinado objeto.VisWinFreeAccelerator Limpa o atalho de um objeto, liberando a memória associada

ao atalho.VisWinGetFlags Obtém os flags de um determinado objeto.VisWinGetProp Obtém o valor de uma lista de propriedades de um objeto.

VisWinGetStyle Obtém o estilo de um determinado objeto.

Page 566: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 566/580

Programando com o Centura Team Developer 2000

Página PAGE 582

VisWinIsRequiredFieldNull Testa e verifica se um determinado objeto obrigatório estánulo.

VisWinSetMeter Mostra o complemento da medida num data field. Utilizado para medir percentual de conclusão de uma determinada

tarefa.

Funções de mensagens

Nome da função Descrição resumidaVisMessageBox Mostra uma caixa de mensagem com os botões e ícone

determinados pelo programador.VisMessageFreeButton Libera a memória alocada pela função

VisMessageLoadButton.VisMessageLoadButton Torna um botão disponível para ser utilizado numa caixa de

diálogo definida pelo programador.VisMessageSetBkgdColor Determina a cor do background de uma caixa de diálogo

definida pelo programador.VisSendMsgString Envia uma mensagem e passa uma string no parâmetro

lParam.

Funções numéricas

Nome da função Descrição resumidaVisNumberHighByte Converte um determinado número em um valor tipo WORD e

retorna o valor 8 bits high-order .

VisNumberLowByte Converte um determinado número em um valor tipo WORD eretorna o valor 8 bits low-order .VisNumberMakeLong Cria um valor tipo word duplo ( DWORD ) a partir de dois

valores tipo word.

Tratamento de imagens

Nome da função Descrição resumidaVisMenuInsertPicture Insere um menu item num menu e mostra a imagem nele

especificada.VisMenuSetPicture Mostra uma imagem num menu item.

VisPicFree Descarrega uma imagem ( bitmap ou ícone ) da memória.VisPicLoad Carrega uma imagem ( bitmap ou ícone ) para a memória.VisTblSetRowPicture Atribui uma imagem a um flag de uma table window.

Tratamento de strings

Nome da função Descrição resumidaVisStrExpand Expande uma string modelo, inserindo um ou mais elementos de

um vetor.VisStrPad Completa uma string com brancos e retorna o resultado.

VisStrProper Converte uma string, fazendo com que cada palavra inicie com

Page 567: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 567/580

Programando com o Centura Team Developer 2000

Página PAGE 582

letras maiúsculas.VisStrRightTrim Tira os branco à direita de uma string.VisStrScanReverse Pesquisa uma string por uma cadeia de caracteres. A pesquisa é

realizada a partir do último caractere para o primeiro.

VisStrSubstitute Substitui todas as ocorrências de uma string numa outra string.VisStrTrim Tira os brancos iniciais e finais de uma string.

Page 568: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 568/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Recursos para table window

Nome da função Descrição resumidaVisTblAllRows Determina se alguma linha na table window possui

determinados flags.VisTblAutoSizeColumn Ajusta a largura de uma coluna da table window para o melhor

tamanho, de acordo com o seu conteúdo.VisTblClearColumnSelection

Limpa a seleção para todas as colunas de uma table window.

VisTblFindDateTime Localiza um valor data/hora numa coluna..VisTblFindNumber Localiza um valor number numa coluna.VisTblFindString Localiza um valor string numa coluna.VisTblGetCell Obtém o conteúdo de uma célula numa table window.VisTblGetColumnTitle Obtém o conteúdo do título de uma coluna.

Gerenciamento de objetos

Nome da função Descrição resumidaVisWinIsChild Testa se um determinado objeto é filho direto ou indireto de

outro objeto.VisWinIsMaximized Testa se uma determinada janela está maximizada.VisWinIsMinimized Testa se uma determinada janela está minimizada.VisWinIsRestored Testa se uma determinada janela não está maximizada nem

minimizada.VisWinIsWindow Testa se um determinado objeto é um objeto válido.

VisWinLoadAccelerator Obtém a tecla de atalho de um determinado objeto.VisWinMove Move e redimensiona um objeto, baseado nas coordenadas ( em

 pixels ).VisWinRemoveProp Remove a lista de propriedades de um objeto.VisWinSetFlags Define os flags de um determinado objeto.VisWinSetProp Adiciona uma nova entrada na lista de propriedades de um

objeto, ou modifica o valor de uma das suas propriedades.VisWinSetStyle Define o estilo de um objeto.VisWinSetTabOrder Modifica a ordem de tabulação de um objeto.VisWinShow Define o estado de visibilidade de um objeto.

Page 569: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 569/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Apêndice FGuia de Instalação do Centura Team Developerversão 2000

O Centura Team Developer pode ser instalado de diversas maneiras. Neste apêndice,apresentamos a maneira correta de se efetuar esse procedimento, utilizando o CD de instalaçãodo produto. Direcionamos todas as instruções de modo a atender os pré-requisitos necessáriosaos exemplos de aplicações aqui contidos. Por esse motivo, recomendamos que as instruções aseguir sejam seguidas fielmente, dessa forma, garantimos que você terá instalado todos oscomponentes necessários para o adequado acompanhamento dos exemplos do livro.

Page 570: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 570/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Para instalar o Centura Team Developer 2000 no seu computador siga as instruções descritas a seguir :

Inicie o Microsoft Windows.Coloque o CD de instalação do Centura Team Developer 2000 no seu dispositivo de CD-ROM.O Programa de instalação será executado e a janela abaixo será mostrada.

A janela abaixo é mostrada solicitando as suas informações de registro do produto.

Preencha os campos com o seu nome, o nome da empresa, e o código de autorização da sua cópia doCentura Team Developer 2000.

Page 571: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 571/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Informe o local onde você deseja instalar o Centura Team Developer 2000.

Informe o grupo de programas onde o Centura Team Developer 2000 será instalado.

Page 572: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 572/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Na janela abaixo você deve escolher os componentes selecionados conforme ilustrado na figura abaixo.Ao selecionar cada um dos itens você deve clicar no botão Options para especificar os detalhes de cadacomponente instalado.

Page 573: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 573/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Após selecionar o item Development e clicar no botão Options a janela abaixo será mostrada. Nela vocêseleciona se deseja instalar o Centura SQLWindows, o gerador de relatórios Report Builder e os ObjetosPre-construídos, os QuickObjects.Todos estes itens devem ser selecionados.

 Nesta janela você deve selecionar todos os itens se desejar desenvolver aplicações para serem executadasna Web. Para seguir os exemplos do livro você deve selecionar todos estes itens.

Page 574: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 574/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Embutido ao Centura Team Developer 2000 está a versão mais atualizada do banco de dados relacionalda Centura o SQLBase. Você deve selecionar o primeiro e o último elementos para que sejam instaladoso servidor SQLBase e o SQLTalk, uma ferramenta cliente para acesso a qualquer banco de dados.

Quanto à conectividade você deve instalar os dois primeiros itens. Os demais dizem respeito ao acesso a bancos de dados de outros fornecedores e aos provedores OLE DB.

Page 575: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 575/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Você deve selecionar todos os componentes da janela Enterprise Components.

Object Compiler é o responsável pela geração de dlls a partir do Centura SQLWindows. Você só deveinstalar este componente caso possua o MS Visual C++ 5.0 ou superior.

O Team Object Manager é um gerenciador de projetos e equipes de desenvolvimento.

O CDK é utilizado para auxiliar na confecção de componentes personalisados e de assistentes paraauxiliar o desenvolvimento.

O Object Nationalizer fornece uma insterface onde rapidamente uma aplicação feita em SQLWindows possa ser traduzida para outros idiomas.

Page 576: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 576/580

Programando com o Centura Team Developer 2000

Página PAGE 582

 Nesta janela você configura a instalação dos exemplos, uma ótima fonte de conhecimento com diversosexemplos explorando os mais diversos recursos disponíveis no Centura Team Developer 2000.

Caso seja do seu interesse você pode configurar a instalação da instalação da documentação online doCentura Team Developer 2000. A documentação toda é fornecida em formato PDF.

Page 577: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 577/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Configure o tipo de servidor web disponivel em seu ambiente, para que você possa colocar suasaplicações rodando num browser.

 Na janela abaixo informe onde ficam os executáveis no seu servidor web. Este diretório deve serconfigurado de modo a permitir que as aplicações nele presentes possam ser executadas.

Page 578: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 578/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Informe onde ficam as páginas html no seu servidor.

Caso você tenha alguma versão do Centura Team Developer instalada no seu computador a janela abaixo

será mostrada.

Page 579: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 579/580

Programando com o Centura Team Developer 2000

Página PAGE 582

Quando o Centura Team Developer 2000 for instalado as associações aos arquivos fonte do CTD podemser feitas de modo que, o CTD2000 seja o aplicativo padrão para a edição destes arquivos.

O Centura Team Developer 2000 está pronto para ser instalado.Clique no botão Install now para que o processo de instalação seja iniciado.

Page 580: Programando Com o CTD2000

8/15/2019 Programando Com o CTD2000

http://slidepdf.com/reader/full/programando-com-o-ctd2000 580/580

Programando com o Centura Team Developer 2000