Programando Com o CTD2000
-
Upload
talita-salles -
Category
Documents
-
view
682 -
download
75
Transcript of 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
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
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
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
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.
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
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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.
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
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 :
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
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.
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
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.
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 .
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.
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.
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.
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.
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
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
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.
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.
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.
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
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.
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
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.
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.
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
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
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.
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.
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.
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
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.
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
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
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
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 ]
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
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.
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.
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]
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.
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.
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:
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.
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:
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
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:
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.
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.
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:
1
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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
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....
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.
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.
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
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 ?
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 .
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
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.
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
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>
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>
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>
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;
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]
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> )
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 :
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.
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.
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.
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.
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.
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.
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
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’ )
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.
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.
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
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.
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
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.
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
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.
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
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.
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
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.
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 117/580
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.
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
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
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.
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" )
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.
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.
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
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
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
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
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 129/580
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:
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 )
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 )
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.
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
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 :
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.
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.
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 )
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
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 140/580
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
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.
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
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 :
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.
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
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 147/580
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.
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
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.
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.
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.
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.
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:
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.
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:
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.
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.
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.
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:
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.
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.
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:
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:
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.
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.
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.
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
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.
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.
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á.
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:
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.
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 :
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).
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
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 ( )
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.
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:
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.
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.
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:
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:
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.
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.
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
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.
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.
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.
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.
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.
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( ):
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 193/580
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.
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 .
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.
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.
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
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.
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
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.
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.
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.
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:
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.
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.
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:
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.
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:
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 210/580
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 ...
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.
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.
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:
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" )
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
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
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.
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.
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
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.
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.
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.
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
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.
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:
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
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.
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.
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 230/580
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 231/580
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.
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.
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.
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
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.
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
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,
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.
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 240/580
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 241/580
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
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.
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:
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,
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
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
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
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.
4
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
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
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.
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
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 253/580
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.
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.
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.
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.
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.
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:
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
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.
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.
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.
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.
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
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.
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á
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:
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.
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.
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
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.
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.
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.
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.
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
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.
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
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 279/580
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
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.
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.
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
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.
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 285/580
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.
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.
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.
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
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:
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.
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.
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.
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; '
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
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:
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.
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.
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.
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:
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:
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:
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.
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 ( )
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:
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.
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:
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:
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:
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.
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
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.
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
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
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
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.
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.
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.
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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
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.
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.
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 )
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.
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 :
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.
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.
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
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.
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 :
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.
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
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 )
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.
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.
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.
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.
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.
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 :
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 ( )
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.
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.
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.
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.
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.
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 373/580
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.
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 )
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.
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
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 :
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.
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
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 :
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
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.
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.
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 :
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.
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.
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.
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.
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.
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 :
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.
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 )
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 :
8/15/2019 Programando Com o CTD2000
http://slidepdf.com/reader/full/programando-com-o-ctd2000 395/580
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.
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 :
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 :
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.
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.
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.
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.
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:
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.
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.
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.
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.
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
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.
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.
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.
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.
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).
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
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.
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.
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.
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 )
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.
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 )
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 .
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.
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
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,
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 :
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.
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.
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.
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
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
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 :
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.
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.
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
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.
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 .
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 :
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.
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 )
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.
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.
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.
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 ).
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.
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 :
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.
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.
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.
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 )
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.
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.
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.
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 :
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.
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.
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.
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 )
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.
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_*
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.
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.
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.
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.
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
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.
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.
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.
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 :
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.
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 :
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.
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.
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.
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.
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.
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.
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.
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.
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 ).
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.
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.
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.
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 )
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 )
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 :
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.
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
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.
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.
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 :
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.
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.
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.
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.
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.
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 )
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 :
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.
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.
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.
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
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.
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.
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.
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.
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 (
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 :
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.
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.
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.
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
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.
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.
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,
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.
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.
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 :
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.
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.
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.
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 ) .
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.
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.
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.
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.
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).
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 .
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.
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.
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
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.
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
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
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 )
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.
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 .
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 )
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
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.
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.
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 :
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.
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.
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 :
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.
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
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.
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.
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 )
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.
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.
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.
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
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.
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
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.
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
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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