Documente Academic
Documente Profesional
Documente Cultură
Caro Leitor, este livro foi originalmente lançado em junho de 2000. Seu conteúdo
refere-se ao então Centura Team Developer versão 2.0, chamado na época de
Centura Team Developer 2000, daí vem a sigla CTD2000.
Este livro está sendo disponibilizado agora, em maio de 2013, em formato PDF para
livre utilização por qualquer pessoa que tiver necessidade de estudar Centura Team
Developer 2000. A base desta ferramenta de programação está neste livro, portanto
pode ser utilizado como fonte de estudo mesmo para versões mais recentes do Team
Developer.
Bom estudo!
Para
Christiane,
Netinho e
Marcelinha
Página 2
Programando com o Centura Team Developer 2000
Página 3
Programando com o Centura Team Developer 2000
Agradecimentos
São tantas as pessoas que de forma direta ou indireta ajudaram na confecção deste livro, eu não
conseguiria 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 seu
investimento 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 nosso
dia-a-dia de trabalho neste projeto.
Ao pessoal da Centura. Muito obrigado ao Joubert Stape e a Ana Paula, a ajuda de vocês tem
sido 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 os
meus alunos que são realmente a base deste livro. As experiências que tivemos nos
treinamentos serviram de estrutura principal deste trabalho que agora poderá dar-lhes todas as
informações sobre o Centura, num único local.
Meus pais e irmãos: Lairton, Célia, Fábio, Leandro, Érico, André e ao Danilo. Muito
Obrigados.
Meus amigos: Jones Melo, Cristovão, Roberto Galvão, Urbano Chagas pela força que me
transmitiram.
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 foi
modificando-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 todo
várias vezes, pelo apoio e pelo incentivo a cada passo do caminho, desde o ínicio até sua
conclusão.
E principalmente a Deus, por ter dado saúde, condições de aprendizado e essa vontade interior
de transmitir conhecimento às pessoas. Obrigado por me ajudar a conhecer as pessoas certas
nas horas certas e por permitir que tudo isso esteja acontecendo desse jeito.
Music of The Grand Canyon" do Nicholas Gunn e do "Key in G" do Kenny G e na sua fase
final de conclusão o "Na Pressão" do Lenine que retratam a trilha sonora deste livro.
Página 5
Programando com o Centura Team Developer 2000
Página 6
Programando com o Centura Team Developer 2000
Apresentação
Programando com o Centura Team Developer 2000 está dividido em cinco partes:
Uma grande ferramenta presente no Centura Team Developer que auxilia o desenvolvimento
de 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 com
a 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.
Página 7
Programando com o Centura Team Developer 2000
No capítulo 11 é visto a geração dos relatórios com o Report Builder e a sua interação com o
SQLWindows/32. A interface do usuário do Report Builder e a interface com programas
externos é abordada de forma detalhada.
Para encerrar a terceira parte,, o capítulo 14 apresenta o Team Object Manager, que facilita o
gerenciamento de projetos e equipes de desenvolvimento.
Podemos seguramente afirmar que esta parte é a mais atraente de todo o livro, por envolver as
tecnologias mais faladas atualmente.
Esta deverá ser a parte mais utilizada pelo leitor, pois, aqui foram agrupados os capítulos que
servirão de referência ao desenvolvedor, na sua utilização diária. Estão descritas
detalhadamente 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 explicadas
no apêndice C, enquanto as funções disponíveis no Report Builder estão presentes no apêndice
D.
Página 8
Programando com o Centura Team Developer 2000
E por fim, pretendemos, deixar o desenvolvedor familiarizado com o ambiente, pronto para
começar a desenvolver projetos, utilizando a força total do pacote de ferramentas de que o
Centura Team Developer 2000 é composto.
A quem se destina
Pré-requisitos
Página 9
Programando com o Centura Team Developer 2000
A Organização
Notação Explicação
você O desenvolvedor ( programador ). Você que está lendo este livro e
construindo uma aplicação.
usuário A pessoa ( usuário final ) que utilizará o aplicativo que você ( o
desenvolvedor ) está construindo.
aplicação A tela ou conjunto de telas que você está desenvolvendo.
palavras em Negrito será utilizado para destacar os termos próprios do CTD, como
negrito por exemplo:
- nomes dos menus que você deve selecionar - File | New...
- comandos e funções do SQLWindows, quando citados no decorrer
de 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 escritas A representação do código fonte do programa, listagens ou trechos de
assim programas, são sempre mostrados com a fonte alterada para Courier
New tamanho 8.
On SAM_Create
Call SalCenterWindow ( hWndForm )
nomes de arquivos Os nomes dos arquivos citados em letras maiúsculas são arquivos que
escritos em letras devem ser considerados exatamente como está escrito. Por exemplo:
MAIÚSCULAS SQL.INI
QCKDVC.APL
Alt+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.
TRUE Constantes lógicas definidas internamente pelo próprio
FALSE SQLWindows/32.
A constante TRUE possui valor 1 e significa sucesso numa operação.
A constante FALSE possui valor 0 e significa falha em determinada
operaçã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.
Página 10
Programando com o Centura Team Developer 2000
INDICE
Página 11
Programando com o Centura Team Developer 2000
Página 12
Programando com o Centura Team Developer 2000
Capítulo 1
Apresentação do Centura SQLWindows/32
O Ambiente de Desenvolvimento
Quadro direito – Local em que é escrito o programa, o código fonte. O quadro direito
sempre 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 mostrados
depende da pasta selecionada.
Para cada pasta selecionada, um nível de detalhes do item especificado no quadro esquerdo é visualizado.
Utilizando as pastas localizadas no quadro direito do Centura SQLWindows/32, você pode acessar
rapidamente os diversos locais de um programa fonte.
Observe que a figura abaixo mostra o mesmo componente, porém, visto através da pasta
Variables, 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.
A próxima figura mostra a visualização do mesmo objeto, contudo, visto através da pasta
Parameters, que apresenta ao programador apenas os parâmetros que o objeto selecionado
no quadro esquerdo possui. Na imagem abaixo nenhum parâmetro foi definido.
A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pasta
Actions, que apresenta ao programador as ações do objeto selecionado no quadro esquerdo.
Na imagem abaixo nenhuma ação foi codificada para este objeto.
A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pasta
Components, que apresenta ao programador todos os componentes do objeto selecionado
no quadro esquerdo.
A próxima figura mostra a visualização do mesmo objeto, porém, visto através da pasta
Outline, que apresenta ao programador todo o código fonte do objeto selecionado no
quadro esquerdo, o código fonte engloba o conteúdo de todas as outras pastas mostradas no
quadro direito.
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 a
melhorar sua produtividade.
Estas pastas localizadas na parte inferior do quadro direito podem variar de acordo com o
item escolhido no quadro esquerdo. Observe na próxima figura que algumas das pastas
mostradas acima desapareceram para dar lugar a novas pastas relativas ao item escolhido
no quadro esquerdo, que neste caso é o item Application1.
Além das pastas que permitem que sejam visualizadas partes da sua aplicação, contamos
ainda 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 um
maior nível de detalhe na visão de parte do código fonte.
Outline
O Outline é o código fonte propriamente dito. Nele ficam armazenadas as instruções da linguagem SAL (a
linguagem 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. Este
diamante assume duas características, cheio e vazio, ou preto e branco. O diamante cheio (ou preto) indica
que existem linhas de código subordinadas à linha visualizada. Clique duas vezes no diamante cheio para que
as 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 estas
estejam comprimidas. Se linhas já estiverem expandidas, um clique duplo tem efeito contrário, ou seja, faz
com que a seção toda seja comprimida.
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.
Libraries
Seção Libraries.
Nesta seção, são definidos os nomes dos arquivos referentes às bibliotecas que o aplicativo
fará uso. O Centura SQLWindows/32 diferencia o fonte através de cores, para indicar o
fonte 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 as
demais são identificadas pela palavra File Include. Esses dois tipos de bibliotecas são
explicadas abaixo:
Na figura acima, são demonstrados através das linhas de código subordinadas à seção
Libraries e iniciadas pela palavra chave File Include, correspondentes a bibliotecas
SQLWindows 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 ter
extensão *.APP.
Também na figura acima, são representados pelas linhas de código subordinadas à seção
Libraries e iniciadas pela palavra chave Dynalib, correspondentes a bibliotecas
SQLWindows 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 das
Dynalibs se dá no momento da compilação, na carga do programa e na atualização, uma
vez que a Dynalib já está compilada. Isso trás um ganho de performance durante o
desenvolvimento da aplicação.
Global Declarations
Na seção Global Declarations ficam todas as declarações que serão visualizadas por toda a aplicação. As
seçõ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
External Functions
O SQLWindows/32 suporta a utilização de qualquer função definida por outro fornecedor de software. A
definição dessas funções vindas de DLLs, ou de outros programas executáveis, é feita na seção External
Functions. Funções escritas em outras linguagens e disponibilizadas em DLLs devem ser declaradas
conforme o exemplo abaixo, onde a função SWinFindWindow do próprio SQLWindows/32 é definida :
Observe que o valor do item Export Ordinal pode ser sempre 0 (zero). Na seção Returns deve ser definido o
tipo 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
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.
Como padrão, cada Enumeration possui um valor que inicia em 0 (zero), sendo incrementado de 1 (um) a
cada 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 pelo
Centura SQLWindows/32. Ou seja, cursores, figuras tipo bitmap e ícones são incluídos no executável,
facilitando a distribuição do aplicativo.
Variables
Na seção Variables são definidas as variáveis que serão visíveis em toda a aplicação. As
variá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 Centura
Object Compiler.
Named Menus
Named Menus são definições de estruturas de menus que serão posteriormente utilizadas na aplicação. Os
menus definidos na seção Named Menus são visíveis em todo o aplicativo e podem ser usados, a qualquer
momento, 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 visual
existe uma classe correspondente. Basicamente, os tipos das classes disponíveis são:
Applications Actions
Nesta seção são codificadas as ações mais genéricas para a aplicação. Por exemplo, o
início e término da aplicação e o tratamento de erros genéricos.
O Customizer
Através do Outline. Basta clicar uma vez, com o botão esquerdo do mouse, no ícone
localizado à esquerda de cada um dos objetos. O objeto que não dispor esse ícone
não possui características passíveis de alteração pelo Customizer.
Através da Visualização dos Objetos. Estando em Preview Mode, basta clicar duas
vezes 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
O Attribute Inspector
Você precisa decidir se vai utilizar o Customizer ou o Attribute Inspector, pois, os dois não podem ser
utilizados 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.
A Paleta de Controles
Todos os objetos visuais tipo child do Centura SQLWindows/32, os quais estão disponíveis para que o
desenvolvedor 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 no
listbox localizado na parte inferior da Paleta de Controles.
O ícone Controls.
A Paleta de Controles possui três grupos de botões, cada grupo representa um tipo de
objeto 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 nativo
do 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 do
SQLWindows 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 o
Controle ActiveX do Report Builder.
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.
Arraste um controle ActiveX muito utilizado para o grupo dos controles ActiveX na
Paleta de Controles.
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.
3 Quando encontrar a localização ideal, clique uma vez com o botão esquerdo do
mouse. 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.
6 Enquanto um objeto está selecionado, é possível utilizar o mouse para alterar suas
dimensões.
Clique num dos quadrados que envolve o objeto e arraste para o tamanho desejado.
Exclusão de um objeto.
O Assistente de Código
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 e
ter suas dimensões alteradas.
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
2 Observe a figura abaixo, como o item do outline que está selecionado é a seção
Application Actions, o Assistente de Código relaciona os eventos que podem ser
adicionados a essa seção.
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 da
função desejada, que a mesma será localizada na lista das funções. Neste exemplo
utilizaremos 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 nome
da função e observe que a cada letra digitada o Assistente de Código localiza a
funçã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, conforme
mostrado na figura abaixo. Neste momento você pode teclar ENTER para que a
função seja inserida no outline.
Isso facilita a escrita do programa, pois, você já sabe (sem que seja necessário
consultar a documentação online) que tipos de variáveis/objetos devem ser
utilizados.
10 Clique duas vezes no nome “Window Handle” que indica o tipo de dado do
próximo parâmetro da função SalCreateWindow.
O Database Explorer
Database Explorer.
ActiveX Explorer
Para que você possa analisar o conteúdo dos servidores ActiveX (*.dll, *.exe, *.olb, *.ocx e *.tlb), instalados
em 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 de
uma 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.
Obs : O ActiveX Explorer gera uma APL para o servidor Activex escolhido pelo
programador. Se o programador escolher na primeira janela do ActiveX Explorer uma
APL (previamente gerada), ao invés de escolher um servidor, o ActiveX Explorer
automaticamente lê a APL escolhida, localiza o servidor ActiveX correspondente e carrega
as informações deste.
Barras de ferramentas
As barras de ferramentas do SQLWindows são mostradas abaixo. As ações dos seus botões
são sempre encontradas em algum item de menu.
As barras de ferramentas podem ser personalizadas com relação ao seu conteúdo, tamanho
e localização.
Explorando os menus
O Menu File
Menu Descrição
New... Inicia uma nova aplicação do Centura SQLWindows/32. É aberta a
Página PAGE 582
Programando com o Centura Team Developer 2000
O Menu Edit
Nome Descrição
Undo, Cut, Copy, Paste e De acordo com suas funções padrão do Windows.
Delete
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ém
comentadas. 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 One Expande o outline um nível a partir do nível selecionado.
Level Você também pode expandir um nível, clicando duas
vezes 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, clicando
duas vezes num diamante cheio que já esteja expandido.
Outline | Expand All Expande o outline inteiro. Isso pode demandar tempo.
Levels
Outline | Collapse Outline Comprime o outline inteiro. Apenas os objetos top level
estarão visíveis.
Outline | Promote Promove o item selecionado um nível, na hierarquia do
outline.
O Menu Project
Nome Descrição
Check 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álogo
durante o processo de compilação.
Next Error Visualiza o próximo erro de compilação, quando a
aplicação é compilada e mais de um erro é detectado.
Previous Error Visualiza o erro de compilação anterior, quando a
aplicação é compilada e mais de um erro é detectado.
Execute Executa a aplicação atual. Se a aplicação não estiver
compilada o SQLWindows/32 automaticamente compila
a aplicação. Se durante a compilação, nenhum erro for
detectado a aplicação é executada.
Register Server Instala no registro do Window o servidor COM que
estiver 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 um
executável normal, uma dynalib, uma biblioteca,
configuara as opções para uso do Object Compiler para a
geração de uma dll, indica o tipo de servidor COM
(Local, In-Proc ou MTS) a ser gerado.
O Menu Component
Nome Descrição
New Mostra um menu onde você pode escolher um
componente a ser adicionado a sua aplicação. Os itens do
novo menu que aparecerá dependem de qual item está
selecionado no outline. Por exemplo, se o item Classes
estiver selecionado no quadro esquerdo do
SQLWindows/32, este menu de contexto mostrará os
nomes de todas as classes possíveis de serem incluídas à
aplicação neste momento.
Wizards ... Ativa os Assistentes do SQLWindows/32. Os assistentes
aqui disponibilizados dependem da forma como o
Centura 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álogo
normalmente é utilizada para configurar as propriedades
do objeto, propriedades estas que serão utilizadas em
tempo 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 interface
grá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 no
outline numa cor diferente do restante do código. A
qualquer momento essa biblioteca destacada pode ser
acionada numa nova instância do SQLWindows/32, basta
clicar com o botão direito do mouse numa parte do código
da biblioteca, e escolher o item Go To Item no menu de
contexto.
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 outline
numa cor diferente do restante do código. Para saber a
que 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
Página PAGE 582
Programando com o Centura Team Developer 2000
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 vez
incluídas, não é possível desfazer essa ação. Todo o
código passa a ser uma única aplicação.
Large Icons Seleciona automaticamente a tab Components, localizada
na parte inferior do quadro direito do SQLWindows/32, e
mostra os componentes no formato de ícones grandes.
Small Icons Seleciona automaticamente a tab Components, localizada
na parte inferior do quadro direito do SQLWindows/32, e
mostra os componentes no formato de ícones pequenos.
List Seleciona automaticamente a tab Components, localizada
na parte inferior do quadro direito do SQLWindows/32, e
mostra os componentes no formato de lista.
Details Seleciona automaticamente a tab Components, localizada
na parte inferior do quadro direito do SQLWindows/32, e
mostra os componentes em detalhes.
O Menu Layout
Nome Descrição
Preview 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 e
observar 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 e
nos multiline fields, textos demonstrando os dados nos
objetos. Isso é muito útil para que você saiba o tamanho
necessário para cada objeto.
Show Design Scroll Bars Mostra as barras de rolagem em tempo de design, nas
laterais dos objetos form window e table window.
Show Hidden Windows Faz com que os objetos configurados como invisíveis
O Menu Debug
Nome Descrição
Go 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ção
da aplicação.
Step Into Executa a próxima linha de comando e retorna o controle
ao SQLWindows/32. Se o comando for uma função, a
primeira linha desta função é selecionada, e você pode
continuar acompanhando passo-a-passo a execução da
função. No caso de funções do próprio SQLWindows/32,
e funções externas, o procedimento é semelhante ao
descrito no item Step Over.
Step Over Executa a próxima linha de comando e retorna o controle
ao SQLWindows/32. Se o comando for uma função, o
SQLWindows/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 ser
acionado este item a linha deixará de ser um breakpoint, e
se a linha não for um breakpoint passará a ser. Quando o
SQLWindows/32 está executando a aplicação, ele pára a
execução entrando em modo de depuração assim que
encontrar uma linha marcada como breakpoint.
Breakpoints | Clear All Desmarca todas as linhas do outline que estiverem
marcadas 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 a
execução em modo rápido.
Playback Permite que você depure um servidor COM da mesma
forma que uma aplicação normal.
Playback rewind Permite que você depure um servidor COM da mesma
forma que uma aplicação normal.
O Menu Database
Nome Descrição
Open 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 Database
Explorer.
Query Comandos para a criação de uma nova consulta ou
abertura 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 configurar
as ferramentas mostradas no menu Tools. Você pode
personalizar a barra de menu Tools adicionando itens de
menu.
ToolBars... Permite que você escolha quais barras de ferramentas do
SQLWindows estarão visíveis ou não. Você pode também
criar suas próprias barras de ferramentas personalizando
os botões de cada uma. Por exemplo, você pode montar
uma barra de ferramentas nova pessoal, com os comandos
do SQLWindows mais utilizados por você.
Preferences... Ativa a janela de Propriedades do Centura
SQLWindows/32, onde é possível configurar o path
default, o intervalo de tempo utilizado no Debug Slow
Animate, os valores para o Grid, os tipos e cores das
fontes utilizadas no SQLWindows/32 para representar
comentários no programa fonte e itens incluídos,
configura o assistente de código, customizer e attribute
inspector.
Output Visualiza a janela de Output, onde são mostrados os erros
e avisos ocorridos na compilação.
Coding Assistant Visualiza o Assistente de Código.
Attribute Inspector Visualiza o Inspetor dos Atributos.
Capítulo 2
A Linguagem SAL
Neste capítulo apresentamos a linguagem de programação e todos os componentes utilizados
no 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 da
linguagem SQLWindows.
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 em
linguagem SAL é composto de comandos e funções SAL e de comandos SQL.
O programa fonte
APL – Tipo de arquivo que identifica Bibliotecas, utilizado para armazenar objetos, classes
e 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 visualizada
atravé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 e
também através de um editor de textos padrão TXT, embora não seja recomendada
qualquer alteração no fonte, mediante uma interface diferente da disponibilizada no
SQLWindows/32.
APD - Tipo de arquivo que identifica Aplicações compiladas em Dynalibs. Dynalibs são
utilizadas para o compartilhamento de funções, janelas e suas funções, e objetos
child. Este formato é proprietário, sua utilização é reservada a aplicações
desenvolvidas 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.
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 e
Select Case. O fluxo de execução do programa é passado para o bloco de comandos
imediatamente seguinte.
Call
If Else Else If
O comando If é usado para executar uma operação dependendo de alguma condição. Ele possui a seguinte
sintaxe :
...........
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, ao
ser avaliada uma expressão, e esta retornar um valor 0 (zero), o Centura SQLWindows/32 interpreta como
FALSE. Qualquer valor diferente de zero é interpretado como um valor TRUE. Observe o próximo exemplo:
Set nValor = 3
If nValor
[ este código é executado, pois 3 é diferente de FALSE ]
If nValor = TRUE
[ este código não é executado, pois 3 é diferente de TRUE ]
Obs.: Podem ser feitas avaliações de variáveis sem a utilização de operadores, como no
exemplo 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 retornem
outros tipos de dados, o entendimento do código ficará comprometido, dificultando a sua
leitura e depuração.
Return
O comando Return pode ser utilizado para finalizar o processamento de uma função ou
mensagem 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
O tipo de dado retornado pela expressão avaliada pelo Select Case deve ser numérico
inteiro. 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 ou
uma expressão numérica inteira. Quando for necessário avaliar expressões de algum tipo
de dado diferente de número inteiro, deve ser utilizado o comando If ... Else. O Centura
SQLWindows/32 avalia a expressão inteira e localiza o primeiro Case que satisfaça a
condição da expressão. Quando encontra, executa o código subordinado ao Case
encontrado e continua a procurar por mais algum Case que satisfaça a condição. O código
subordinado à cláusula Default é executado quando o SQLWindows/32 não encontra
nenhum Case que satisfaça a condição. A cláusula Default não é obrigatória, mas quando
utilizada 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 a
execução de todo o bloco do comando Case. Se um Break for omitido num bloco Case, o
Centura irá continuar executando o conteúdo de todos os outros Cases que satisfaçam a
condição, até o fim.
Set
O comando Set é usado para associar um valor a algum objeto ou variável. O valor
associado pode ser um valor ou uma expressão :
Alguns exemplos :
Set sNome = “José”
Set nValor = nValor1 * nValor2
Set sCidadeEstado = sCidade || “ – “ || sEstado
While e Loop
Loop [ nome_loop ]
...
Break [ nome_loop ]
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 e
termina quando o Centura encontrar um comando Break. Caso o Centura não encontre um
comando 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 Condicao
Break LoopExterno
Loop LoopInterno
.........
If Condicao
Break LoopInterno
Else If Condicao
Break LoopExterno
Operadores Matemáticos
O Centura suporta os operadores matemáticos que são padrão entre a maioria das linguagens, conforme a
tabela abaixo :
Operado Descrição
r
+ Adição
- Subtração
* Multiplicação
/ Divisão
= Igualdade
!= Não igual a
> Maior que
< Menor que
>= Maior que ou
Igual a
<= Menor que ou
Igual a
** Exponenciação
AND AND lógico
OR 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ões
numé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 Acesso
Randômico ( RAM ) que será reservado para isso. O Centura SQLWindows/32 suporta os
tipos de dados definidos SQL de acordo com o padrão ANSI 92. Isso permite a
compatibilidade com uma variedade de outros produtos, incluindo servidores de bancos de
dados e outras ferramentas de desenvolvimento.
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 local
geralmente desaparece quando o objeto que a criou é fechado. Isso também libera a
memó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 apenas
no form onde foi definida ), mas há dois pontos fracos. O primeiro é que a memória ocupada pela variável
não é liberada, mesmo se a variável não estiver sendo utilizada, enquanto a aplicação estiver sendo
executada. O segundo é bem mais grave, uma variável global pode ser acessada de qualquer local da
aplicação e ter seu valor alterado sem controle.
Tipos de Dados
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. No
có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 Variables
Boolean: bOk
Date/Time: dtDataAtual
File Handle: fhConfig
Long String: lsObs
Number: nCodigo
Sql Handle: hSqlConexao
Session Handle: shSessao
String: sDescricao
Window Handle: hWndObjeto
Quando você define uma variável, como mostrado logo acima, mesmo que a variável ainda
não tenha sido utilizada nenhuma vez, ela já possui um valor, o valor default que é iniciado
pelo próprio SQLWindows.
Veremos como trabalhar com as variáveis do SQLWindows nos exemplos presentes nos
capítulos onde são mostrados exemplos de programação.
Variáveis do Sistema
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 e
dos 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ória
disponível.
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 10
elementos, entre 0 e 9.
O segundo vetor declarado, anMeses, é um vetor que poderá armazenar qualquer valor
numé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
Enumerations são constantes numéricas que são utilizadas em servidores COM para conter
listas de valores. Normalmente o primeiro item da lista define o valor inicial e os demais
itens 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ção
subordinada a seção Global Declarations.
Declaração de Constantes.
As Funções
O Centura SQLWindos32 dispõe de um conjunto de objetos básicos que são normalmente suficientes para a
implementação das soluções necessárias aos desenvolvedores no seu dia-a-dia. Esses objetos são todos
apresentados 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 :
Os Windows Objects são todos os elementos gráficos que podem enviar e receber
mensagens. Na realidade, são os objetos que interferem no fluxo da aplicação. Esses têm
alguma função lógica no programa, ou seja, possuem algum código associado a eles. No
Centura SQLWindows/32, esses objetos dispõem de uma identificação única na aplicação,
a qual damos o nome de handles.
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.
MDI Window
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, o
mdi controla várias outras janelas abertas, podendo distribuir mensagens entre essas
janelas. Quando um mdi é encerrado, automaticamente todas as suas janelas filhas são
encerradas também. Objetos tipo mdi são geralmente utilizados para servirem de “menu
principal” das aplicações que requerem muitas janelas abertas simultaneamente.
Propriedade Descrição
MDI 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.
Accessories Indica se os acessórios do mdi estarão visíveis. Os acessórios são
Enabled a 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.
Automatically Indica se o mdi será criado automaticamente quando a aplicação
Create for 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 a
aplicaçã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.
Form Window
Um objeto top level form window geralmente é criado como filho de algum mdi, podendo
trocar informações com outros forms.
Obs : Quando um form window é criado como filho de um mdi, a sua barra de mensagens
não é visualizada no form window, mas sim no mdi. Esse é um comportamento padrão do
Windows, não requerendo nenhum esforço de programação por parte do desenvolvedor.
Propriedade Descrição
Form 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 Indica se os acessórios estarão visíveis. Os acessórios são a barra de
Enabled ferramentas e a barra de mensagem.
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 ser
minimizados, 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, o
comportamento da barra de status não é similar ao comportamento encontrado no form
window. A sua barra de status é visualizada na parte inferior do próprio objeto. Esse
também é um comportamento padrão do Windows, não requerendo nenhum esforço de
programação do desenvolvedor.
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.
Propriedade Descrição
Dialog 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.
Accessories Indica se os acessórios estarão visíveis. Os acessórios são a barra de
Enabled 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 Indica a localização da barra de ferramentas.
Position
Status Bar Indica se a barra de mensagens estará visível.
Visible
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 recursos
da 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 outros
recursos da aplicação atual, porém, poderá utilizar outras aplicações
do sistema operacional, como um editor de textos e planilhas.
Já o tipo System Modal indica que o usuário não poderá utilizar
nenhum 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.
Background Indica a cor utilizada no corpo do form window.
Color
Text Color A cor do texto.
Font Name O nome da fonte utilizada.
Font Size O tamanho da fonte.
Font Melhoramentos da fonte.
Enhancement
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.
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.
Accessories Indica se os acessórios estarão visíveis. Os acessórios são a barra de
Enabled 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 Indica a localização da barra de ferramentas.
Position
Status Bar Indica se a barra de mensagens estará visível.
Visible
Automatically Indica se a table window será criada automaticamente quando a
Create aplicaçã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ção
estiver 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
Propriedade Descrição
Background 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.
Font Melhoramentos da fonte.
Enhancement
3 Clique na posição onde você deseja colocar o Background Text na sua aplicação.
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. Este
objeto não possui Message Actions.
Propriedade Descrição
Group 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
Frame – Utilizado para fazer molduras. 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.
Propriedade Descrição
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.
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.
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.
Propriedade Descrição
Visible 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.
Data Field – É um dos objetos que podem ser utilizados para a digitação e visualização de
informações na tela. Um datafield pode receber informações tipo Number, Date/Time,
String e Long String.
Propriedade Descrição
Data 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 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.
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.
Font Melhoramentos da fonte.
Enhancement
Propriedade Descrição
Multiline 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.
Font Melhoramentos da fonte.
Enhancement
Propriedade Descrição
Child 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
Column – Cada coluna do banco de dados é mostrada numa table window num objeto
Column. Pode ser personalizada pelo usuário em tempo de execução, tendo sua largura
alterada. Pode mostrar informações tipo string, date/time, number e long string.
Propriedade Descrição
Column 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 valores
em ordem alfabética crescente.
Vertical Scroll Quando o tipo da célula é Multiline, indica se a barra de rolagem
estará 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 na
célula.
Allow Text Quando o tipo da célula é Drop Down List, indica se o usuário
Editing 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.
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.
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.
Picture Indica a cor que será substituída pela cor de fundo do objeto. Essa
Transparent característica funciona apenas no caso das imagens tipo bitmap.
Color
Keyboard O atalho que ativa o objeto.
Accelerator
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 O melhoramento da fonte do texto utilizada no objeto.
Enhancement
Radio Button – São normalmente agrupados em um Group Box e utilizados para que o usuário escolha uma
opção única, quando não é permitido múltipla escolha.
Propriedade Descrição
Object 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.
Font O melhoramento da fonte do texto utilizada no objeto.
Enhancement
Check Box – Diferentemente dos Radio Buttons, os Check Boxes permitem múltiplas
escolhas.
Propriedade Descrição
Object 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
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.
Picture Indica a cor que será substituída pela cor de fundo do objeto. Essa
Transparent característica funciona apenas no caso das imagens tipo bitmap.
Color
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 O melhoramento da fonte do texto utilizada no objeto.
Enhancement
List Box – Normalmente os List Box são utilizados para mostrar uma lista de dados que
geralmente vem do banco de dados. Permite também a seleção de vários elementos da lista.
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.
Indica se será permitido ao usuário escolher mais de um elemento
Multiple Selection
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.
Font O melhoramento da fonte do texto utilizada no objeto.
Enhancement
Combo Box – Normalmente os Combo Box são utilizados para mostrar uma lista de dados
que geralmente vem do banco de dados. Difere do ListBox no visual, pois ocupa o espaço
de um datafield e permite apenas a seleção de um elemento.
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.
Página PAGE 582
Programando com o Centura Team Developer 2000
Propriedade Descrição
Object 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.
Transparent Indica a cor que será substituída pela cor de fundo do objeto. Essa
Color caracterí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 do
objeto 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.
Custom Control – É utilizado para que objetos de terceiros possam ser usados no Centura.
Propriedade Descrição
Object 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 É o nome da classe do objeto definido na DLL. Este nome é
Class Name 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 o
foco 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 tecla
Tab.
Tile to Parent Indica se o objeto irá ocupar todo o espaço do objeto pai.
MS Windows Identifica um estilo para o objeto. Essa informação é específica do
Style objeto, consulte o seu manual.
MS Windows Identifica um estilo estendido para o objeto. Essa informação é
Extended Style 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.
Font O melhoramento da fonte do texto utilizada no objeto.
Enhancement
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 do
SQLWindows/32, porém, não estão na paleta de controles e não podem receber
mensagens. Os menus podem ser colocados na aplicação diretamente no outline, através do
Assistente de Código, ou utilizando-se o Editor de Menus. Apenas os objetos mdi, form
window 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
Popup menu
Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da sua
aplicação.
Propriedade Descrição
Menu 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 habilitado
ou desabilitado, essa condição será avaliada sempre que a barra de
menus for desenhada pela aplicação. O valor da condição é
avaliado e se retornar TRUE o popup menu é habilitado, se
retornar FALSE o mesmo aparece desabilitado na barra de menus.
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 popup
menu.
Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da sua
aplicação.
Propriedade Descrição
Menu Item Este é o nome que aparece na barra de menus quando a aplicação
está sendo executada.
Keyboard Accelerator Uma combinação de teclas que é utilizada como atalho para
acionar um menu. A combinação de teclas é mostrada no menu à
direita do nome do menu item.
Menu Separator
Um menu separator é uma linha horizontal colocada entre menus items, utilizada para
separar visualmente um grupo de menus relacionados. Sua função é apenas estética, não
influenciando em nada na lógica da aplicação.
Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da sua
aplicação.
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 da
aplicação.
Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da sua
aplicação.
Menu column
Um menu column é utilizado para agrupar itens de menu em colunas verticais a partir do
local onde é posicionado. Sua função é apenas estética, não influenciando em nada na
lógica da aplicação.
Você pode utilizar o Coding Assistant para definir os menus diretamente no outline da sua
aplicação.
Named menus
Através de um named menu é possível compartilhar uma definição de menu popup por
toda a aplicação. Esse compartilhamento de menus pode ser feito através de sua utilização
na seção Named Menu de qualquer objeto top level table window, form window ou mdi da
aplicação.
Para definir um named menu que poderá ser compartilhado por toda a aplicação, defina-o
na seção chamada Named Menus do Global Declarations. Os named menus definidos num
form 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 sua
aplicação. Observe na figura abaixo a definição e a utilização de um named menu num
form window.
Propriedade Descrição
Menu Este é o nome que você deverá utilizar quando quiser utilizar o
named menu na aplicação.
Menu 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 habilitado
ou desabilitado, essa condição será avaliada sempre que a barra de
menus for desenhada pela aplicação. O valor da condição é
avaliado e se retornar TRUE o menu é habilitado, se retornar
FALSE o mesmo aparece desabilitado na barra de menus.
Windows menu
Windows menu é um tipo especial de popup menu que mostra os nomes de todas as janelas
que 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 qualquer
esforço de programação.
O Editor de menus
O SQLWindows/32 possui um editor de menus que você pode utilizar para auxiliá-lo na
definição de menus. O Editor de Menus possui uma interface gráfica amigável que aplica
no outline todas as configurações feitas.
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 mdi
onde você deseja criar o menu.
No menu de contexto que irá aparecer acione o menu Menu Editor....
O Editor de Menus.
Onde :
Esse código, quando executado, comporta-se conforme mostrado na figura que se segue.
Capítulo 3
O acesso ao SQLBase
O Centura SQLBase
Alguns comandos básicos
SELECT , 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 SQLBase
Tabela de Funções do Centura SQLBase
Usando o Centura SQLBase através do CTD
Quando utilizar SqlPrepare / SqlExecute ou SqlPrepareAndExecute ?
O Centura SQLBase
As plataformas SQLBase hoje disponíveis são: NetWare 3.x e 4.x, MS Windows 3.1 e
Windows for Workgroups 3.11 (16-bits), Windows NT e Windows 95 (32-bits).
As configurações atualmente existentes para o SQLBase vão desde o SQLBase para Smartcard, utilizado em
smart cards num único processador (chip de memória), passando pelo SQLBase Lite, embutido em
aplicações de larga comercialização e baixo custo. Há ainda as tradicionais versões do protuto: a versão
SQLBase Desktop mono-usuário, e as versões multi-usuário do SQLBase Server para 5, 10, 25, 50 e usuários
ilimitados.
O Centura SQLBase possui uma série de comandos que podem ser utilizados pelo desenvolvedor e pelo
administrador das bases de dados. Mostraremos agora os principais comandos a serem utilizados no
desenvolvimento de aplicações com o CTD. Os comandos para administração do servidor, e das bases de
dados, 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 mostrados
em detalhes abaixo :
SELECT
Este comando encontra, recupera e mostra dados. Ele especifica as seguintes informações :
Os comandos SELECT são recursivos; eles podem ser aninhados dentro do SELECT
principal.
Sintaxe :
Argumentos :
Exemplos :
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 na
tabela base.
Página PAGE 582
Programando com o Centura Team Developer 2000
Você deve possuir privilégio INSERT na tabela para executar este comando.
Se o banco de dados possui integridade referencial definida, as regras de integridade
devem ser seguidas, para que se possa incluir dados em uma tabela pai, contendo uma
chave primária, ou em uma tabela dependente, contendo uma chave estrangeira.
Sintaxe :
Argumentos :
Exemplos :
UPDATE
Este comando atualiza valores em uma ou mais colunas de uma tabela ou visão, baseado
em condições de procura específicas.
Uma mensagem de erro é retornada se as regras de integridade dos dados forem violadas
por um comando UPDATE.
Sintaxe :
UPDATE <nome_da_tabela>
<nome_da_visao> [ <nome_relacionado> ]
SET <nome_da_coluna> = <expressao>
NULL
[WHERE <condicao_de_pesquisa> ]
Argumentos :
Exemplos :
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.
<nome_da_visao> [<nome_relacionado>]
[ WHERE <condicao_de_pesquisa> ]
[ CURRENT OF <nome_cursor> ]
Argumentos :
Exemplos :
ALTER TABLE
Sintaxe :
DROP <nome_da_coluna>
ADD <nome_da_coluna> <tipo_de_dado> [( tamanho)]
[NOT NULL]
[NOT NULL WITH
DEFAULT]
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 WITH
DEFAULT]
Argumentos :
Exemplos :
COMMIT
Este comando efetiva todas as alterações realizadas no banco de dados desde o último COMMIT ou
ROLLBACK, 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 :
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 ou
CLUSTERED 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, deve
criar um índice único baseado nas colunas da chave primária.
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áusula
WHERE.
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]
Argumentos :
Exemplos :
CREATE TABLE
Este comando cria uma tabela com colunas específicas-somente poderá ser definido um máximo de 253
colunas 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 as
mesmas 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 :
REFERENCES <nome_da_tabela_pai>
[ ON DELETE
[ RESTRICT]
[ CASCADE]
[ SET NULL]]] )
Argumentos :
Exemplos :
Página PAGE 582
Programando com o Centura Team Developer 2000
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 na
cláusula FROM do comando SELECT, e as colunas da visão não são derivadas de funções ou expressões
aritméticas.
Para criar uma visão, você deve possuir privilégio de SELECT nas colunas das tabelas que
compõem a visão.
Sintaxe :
Argumentos :
Exemplos :
CREATE VIEW
DEPT_SAL (DEPT, TOTSAL)
AS SELECT DEPTNO, SUM(SALARY)
FROM EMP, EMPSAL
WHERE EMP.EMPNO = EMPSAL.EMPNO
GROUP BY DEPTNO;
DROP INDEX
Este comando remove do banco de dados o índice especificado. Já os comandos pré-compilados, que
referenciam índices apagados, não são automaticamente deletados.
Um índice só pode ser apagado por seu criador ou por um usuário com autoridade
SYSADM ou DBA.
Sintaxe :
Argumentos :
Exemplo :
DROP TABLE
Este comando remove do banco de dados a tabela especificada. Os comandos pré-compilados que
referenciam tabelas apagadas não são automaticamente deletados. Já as triggers definidas para as tabelas são
apagadas.
Em um banco de dados com integridade referencial definida, ao apagar a tabela você está apagando a sua
chave primária, bem como as chaves estrangeiras em outras tabelas que façam referência à tabela pai. O
comando DROP TABLE apaga todas as “constraints” nas quais a tabela apagada era pai ou dependente.
Uma tabela só pode ser apagada por seu criador ou por um usuário com autoridade
SYSADM ou DBA.
Sintaxe :
Argumentos :
Exemplo :
DROP VIEW
Este comando remove do banco de dados a visão especificada. Já os comandos pré-compilados que
referenciam 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 :
Argumentos :
Exemplo :
ROLLBACK
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.
Sintaxe :
ROLLBACK
Exemplos :
COMMIT;
<SQL Command…>
<SQL Command…>
<SQL Command…>
ROLLBACK ;
Tabela dos comandos do SQLBase
Nome Descrição
ALTER 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 EXTERNAL Altera a definição de uma função externa.
FUNCTION
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 Torna as mensagens de erro específicas para uma
(mensagens de erro) determinada violação de integridade referencial.
ALTER TABLE Adiciona ou apaga chaves primárias e estrangeiras.
(integridade referencial)
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 do
sistema.
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 EXTERNAL Cria uma função externa.
FUNCTION
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.
Página PAGE 582
Programando com o Centura Team Developer 2000
Nome Descrição
AVG 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
Para que você possa utilizar um banco de dados é necessário estabelecer uma conexão
entre 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
chamada SqlDatabase, assim como o nome do usuário e a senha devem estar nas variáveis
SqlUser e SqlPassword, respectivamente.
Para saber se a conexão foi bem sucedida, verifique o valor retornado pela função
SqlConnect.
Sendo a conexão realizada com sucesso, você terá um handle sql conectado ao banco de
dados. Podemos chamar também este handle sql de cursor, este termo é também bastante
utilizado 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 de
dados é realizada.
Observe abaixo um código padrão, mostrando uma típica conexão sendo feita :
Obs :
Se você executar as funções SqlImmediate ou SqlExists antes de executar SqlConnect, a
aplicação será automaticamente conectada ao banco de dados.
Após a conexão ser realizada com sucesso, você pode utilizar os comandos sql para consultar, incluir, alterar
ou excluir informações da base de dados conectada. Os comandos devem ser enviados ao servidor de banco
de 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 ao
servidor é 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 :
O propósito desta fase é identificar as variáveis da aplicação que recebem os dados através
do comando sql utilizado na fase anterior. Estas variáveis são conhecidas no CTD pelo
termo variáveis INTO.
Observe abaixo um código padrão, mostrando uma utilização das variáveis INTO :
Obs :
Você não pode deixar de utilizar os dois pontos “:” precedendo o nome de cada variável citada na
cláusula INTO do comando sql. O compilador do CTD não faz esse tipo de verificação, e o erro
será 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 de
variá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 o
comando sql seja executado. Geralmente são valores utilizados em codições. Você deve utilizar a função
SqlExecute no CTD para realizar esta função.
Observe abaixo um código padrão, mostrando uma utilização das variáveis BIND :
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 de
verificaçã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ão
enviadas ao servidor para que o comando sql seja executado corretamente, exercendo influência
no resultado do comando. As variáveis INTO são enviadas para a aplicação pelo servidor com os
dados recuperados.
Recuperar os dados
Até este momento, o fluxo de informações tem sido sempre da aplicação para o servidor. Nenhum dado
retornou do servidor até agora. O único modo de se obter informações vindas do banco de dados é fazendo
uso do comando select e, então, recuperando o resultado deste comando. Os passos anteriores são
responsá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 e
executado anteriormente, faz-se necessário o uso das funções SqlFetchPrevious, SqlFetchRow e
SqlFetchNext.
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. Estas
executam internamente as funções SqlPrepare, SqlExecute e SqlFetchNext. As funções SalTblPopulate e
SalListPopulate carregam o result set obtido por um comando select em objetos do tipo table window, e em
list box (ou combo box), respectivamente. Nestes casos, a navegação pelo result set não é feita através do uso
da funções SqlFetch*.
Obs :
A navegação no result set é feita na máquina cliente e não na servidora. Por esse motivo, alguns
cuidados devem ser observados para a obtenção de resultados satisfatórios, como por exemplo o
espaço em disco disponível na máquina cliente, pois, arquivos temporários são gerados. Estes
arquivos 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 arquivos
temporá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 as
edições feitas no banco de dados, ou então, use o comando rollback para descartar
qualquer 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ão
destruídas, sendo necessário compilar novamente os comandos.
Para executar um comando commit você pode utilizar a função SqlCommit. No caso do
comando rollback, você pode fazer uso da função SqlPrepareAndExecute( hSql ,
“ROLLBACK” ).
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 a
função SqlConnect é destruído, liberando recursos de memória da estação cliente e do servidor.
Na maioria dos casos, não há diferença entre utilizar as funções SqlPrepare e SqlExecute
com relação a utilização da função SqlPrepareAndExecute. Porém, é importante observar
dois detalhes:
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ção
da rede e do servidor do banco de dados. Isso, já pode ser bastante significante.
Set nIndice = 1
While 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ódigo
equivalente ao mostrado acima, porém, mais eficiente.
Set nIndice = 1
Call SqlPrepare(hSql,’INSERT INTO tab_a ( col1 ) VALUES (
:nIndice ) ‘ )
While nIndice < 500
Call SqlExecute( hSql )
Set nIndice = nIndice + 1
Call SqlPrepareAndExecute( hSql, ‘ COMMIT ’ )
Observe que a compilação do comando está fora do laço, ou seja, o comando é preparado
apenas 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 for
executado pelo servidor, o valor de nIndice será utilizado.
Capítulo 4
Programaçã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 a
eventos. Portanto, é de suma importância ao desenvolvedor estar devidamente familiarizado
com os conceitos que orientam o desenvolvimento de aplicações baseadas em eventos.
Introdução
O Microsoft Windows é um ambiente orientado a eventos. Todos os objetos de uma aplicação MS Windows
sã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.
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 determinado
resultado, clicando nos mesmos objetos, porém, numa outra seqüência, os resultados
podem ser completamente diferentes.
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 pelas
aplicações. Por exemplo, quando uma aplicação é encerrada, um evento é gerado, resultando no recebimento
de uma mensagem pela janela principal.
Mensagens
Um evento gera uma mensagem e, se o objeto estiver preparado para esta mensagem, uma
ação será executada em resposta a mensagem enviada.
Objetos
Um objeto é qualquer elemento visual ou não visual presente numa aplicação. Todos os objetos no Centura
SQLWIndows32 possuem uma seção a ele correspondente no outline. No SQLWindows32 existem dois tipos
de 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 precisa
estar preparado para receber essa mensagem e executar as ações devidas.
Pushbutton: pb1
Message Actions
On SAM_Click
! Ações
O comando On SAM_Click informa ao objeto que execute uma ação, quando receber a
mensagem cujo número corresponda à constante SAM_Click.
Obs :
Você pode fazer uso das funções SalGetFirstChild e SalGetNextChild para acessar os
objetos ativos e passivos numa aplicação.
Um evento faz com que uma mensagem seja enviada a um objeto. Se esse objeto captar a
mensagem através do comando On, todo o bloco de ação subordinado é executado até o
fim, 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 mensagem
antes que qualquer objeto visual seja criado. Um objeto push button não pode receber essa
mensagem, assim como não faz sentido a aplicação receber a mensagem SAM_Click.
Três funções podem ser utilizadas para o envio de mensagens entre objetos:
SalSendMsgToChildren – Envia uma mensagem para cada um dos objetos child, a qual
deve ser executada imediatamente.
Informações adicionais
Fazendo parte de todo esse recurso de mensagens do sistema operacional, existem duas
variáveis do MS Windows que podem ser utilizadas para transmissão de parâmetros. São
elas:
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
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
problemas que você terá de resolver, no dia-a-dia das empresas são bem mais complexos
do que este exemplo; entretanto, adequado para ilustrar as teorias apresentadas até então.
4- Coloque nele dois push button chamados, pbOK e pbLIMPAR, incluindo os seus
devidos títulos.
7- O código do pbLIMPAR.
No evento SAM_Click, envie a mensagem CEM_Mensagem a todos os objetos filho
do form window, passando FALSE no parâmetro wParam.
Message Actions
On CEM_Mensagem
If wParam
Set MyValue = 'Olá'
Else
Set MyValue = ''
Data Field: df3
Message Actions
On CEM_Mensagem
If wParam
Set MyValue = 'Olá'
Else
Set MyValue = ''
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 exCap04_01.app.
Capítulo 5
Programando com o Centura SQLWindows
Neste capítulo desenvolveremos algumas aplicações. Várias telas de manutenção, consulta e
um album de fotografias são montadas e explicadas em detalhes.
Nestes exemplos, é demonstrado o uso das técnicas mais comuns utilizadas na resolução de
problemas comerciais típicos, encontrados nas empresas.
O Login do Sistema
Esta é a janela responsável pela segurança do sistema. Só podem ter acesso ao sistema os
usuários autorizados, que tenham conhecimento da senha e de um determinado nome de
usuá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 ao
sistema 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 estas
informações, o sistema não pode ser utilizado. Caso o usuário não digite corretamente uma
senha e um nome de usuário válidos, o sistema emitirá uma mensagem de erro. A janela de
login permanece ativa até que o usuário informe, corretamente, um usuário e senha e clique
no botão Ok, ou que desista e clique no botão Cancelar.
Depurando
O Menu Principal.
O Menu Principal é a janela de onde todas as funções do sistema são acionadas, é onde
todos os menus estão definidos. Usaremos uma janela tipo MDI Window que é a mais
apropriada para esta função, pois, possui a Interface de Múltiplos Documentos ( Multiple
Document Interface ) 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, todos
os menus devem ser disponibilizados para o usuário. Assim que o usuário escolher uma
função num dos menus, a janela correspondente deve ser acionada.
Menu Actions
Call SalCreateWindow( frmFaturas , hWndMDI )
Menu Separator
Menu Item: Sair
Status Text: Sair do sistema.
Menu Actions
Call SalSendMsg( hWndMDI , SAM_Close , wParam ,lParam )
Tool Bar
Contents
Functions
Window Parameters
Window Variables
Message Actions
On SAM_Create
If NOT SalModalDialog( dlgLogin , hWndMDI , hSql )
Call SalQuit( )
Depurando
Esta tela de manutenção realiza as funções de consultar, imprimir, incluir, alterar e excluir
informaçõ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 comandos
Select, Insert, Update e Delete.
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 uma
consulta. Caso saiba o código da empresa a ser consultada, basta digitar este código no
campo “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 de
ferramentas, 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 último
registro, é só clicar no botão com o símbolo “>|” ( pbULTIMO ). Dessa forma, fica bastante
fácil a navegação através de todos os registros da tabela. Nesse momento, o usuário pode
alterar 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 os
campos 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 uma
consulta, 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 dados
que estiverem sendo mostrados no momento. O relatório é impresso sempre com todas as
empresas existentes no cadastro.
Window Parameters
Window Variables
String: sWhere
String: sSqlSelect
String: sSqlInsert
String: sSqlUpdate
String: sSqlDelete
!
Sql Handle: hSqlEmpresa
Number: nTotalLinhas
!
String: address
String: city
Number: company_id
String: company_name
String: url
String: country
String: phone
String: state
Message Actions
On SAM_Create
Set nTotalLinhas = 0
Set 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 = :frmEmpresa.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 COMPANY
ORDER BY COMPANY_ID " )
On SAM_ReportFetchInit
Return SqlExecute( hSqlEmpresa )
On SAM_ReportFetchNext
Return SqlFetchNext( hSqlEmpresa , lParam )
Depurando
habilitado, significa que o usuário teve condições de digitar alguma informação neste
objeto e , então , acionar o botão de gravação. Quando isso acontece, deve ser realizada
uma inclusão. A alteração sempre é realizada após uma pesquisa, e, como está
codificado no pbPROCURAR, assim que uma pesquisa é realizada, o objeto
dfCOMPANY_ID é desabilitado. A função SqlPrepareAndExecute prepara e executa os
comandos Insert ou Update ( dependendo do caso ) para os dados que estão nos data
fields. A função SqlCommit encerra a transação. Logo em seguida, é enviado ao botão
pbLIMPAR o evento SAM_Click, simulando um click com o mouse no objeto, para que
os campos da janela sejam reiniciados.
O push button pbEXCLUIR só pode ser utilizado após uma consulta, pois, só é possível
excluir uma empresa que já encontra-se cadastrada no banco de dados. Por isso, a
crítica feita é saber se o objeto dfCOMPANY_ID está habilitado, se não estiver,
significa que foi realizada uma consulta, podendo então ser excluída alguma empresa.
Mesmo após essa crítica, ainda é solicitada a confirmação do usuário. Logo em
seguida, é enviado ao botão pbLIMPAR o evento SAM_Click, para que os campos da
janela sejam reiniciados.
O push button pbPROCURAR é o responsável por buscar os dados no banco de dados e
mostrá-los nos data fields. Para isso, é feita uma crítica, com o intuito de saber se o
usuário informou o código de alguma empresa ou se o usuário quer consultar todas as
empresas, iniciando a navegação até encontrar a desejada. Essa crítica é feita com o
auxílio da função SalIsNull. Observe que o comando where é montado apenas se foi
informado alguma empresa. A função SqlPrepareAndExecute executa o comando
montado, e a função SqlFetchNext traz a primeira linha retornada no comando select
executado, mostrando os dados nos data fields. Se SqlFetchNext retornar FALSE,
significa que nenhuma linha foi encontrada com a condição especificada, então, a
variável nTotalLinhas é zerada. A função SqlGetResultSetCount obtém o número total
de linhas retornados pelo select executado, para controle da navegação dos registros.
Então, a função SalDisableWindow desabilita o objeto dfCOMPANY_ID. Isso é muito
importante para o restante da aplicação, pois, é baseado neste status do
dfCOMPANY_ID que os push buttons pbGRAVAR e pbEXCLUIR são ou não
executados.
No message actions do push button pbIMPRIMIR está o código responsável por ativar
o preview de uma listagem do cadastro de empresas.
O push button pbCANCELAR envia uma mensagem de SAM_Close para o form, para
que este form window seja encerrado, e então o controle da aplicação passe para o
mdiPrincipal.
Observe o evento SAM_ReportStart no Message Actions do frmEmpresa. Este evento é
enviado para a aplicação pelo Report Builder e é capturado quando o relatório está
pronto para ser formatado, ao ser iniciado. Neste momento, o comando select
responsável por capturar os dados da tabela de empresas é preparado. Quando o evento
SAM_ReportFetchInit é capturado pela aplicação, o comando sql foi preparado no
evento anterior é executado. Todas as linhas do relatório são transportadas do banco de
dados ao relatório no evento SAM_ReportFetchNext. Se a aplicação retornar FALSE,
no evento SAM_ReportFetchInit ou no SAM_ReportFetchNext , o relatório é encerrado.
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.
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”.
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 do
status 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 e
atributos.
O comportamento desta tela é parecido com a tela de Empresas, porém, não existe a
consulta, já que os dados são mostrados todos na table window. Um outro recurso
interessante que é demonstrado é a utilização da coluna Empresa ( colCOMPANY_NAME
), que foi programada e tem o comportamento similar ao objeto combo box.
Named Menus
Menu
Tool Bar
Contents
Pushbutton: pbNOVALINHA
Message Actions
On SAM_Click
Call fNovaLinha( )
Pushbutton: pbATUALIZAR
Message Actions
On SAM_Click
Call 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 SET
CONTACT.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
WHERE
CONTACT.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: pbIMPRIMIR
Message Actions
On SAM_Click
Call SalShowWindow( colCOMPANY_ID )
Call SalReportTableView( hWndForm , hWndNULL , "contatos.qrp", lParam )
Call SalHideWindow( colCOMPANY_ID )
Pushbutton: pbCANCELAR
Message Actions
On SAM_Click
Call SalSendMsg( hWndForm , SAM_Close , 0, 0 )
Contents
Column: colCOMPANY_ID
Column: colCONTACT_ID
Title: Código Contato
Maximum Data Length: 18
Column: colCONT_FIRST_NAME
Title: Primeiro Nome
Maximum Data Length: 18
Column: colCONT_LAST_NAME
Title: Último Nome
Maximum Data Length: 18
Column: colCOMPANY_NAME
Title: Empresa
Maximum Data Length: 30
Cell Options
Cell Type? Drop Down List
List Values
Message Actions
On SAM_Create
Call SalListPopulate( hWndItem , hSql , "SELECT COMPANY_NAME FROM COMPANY " )
On SAM_AnyEdit
Call SqlPrepareAndExecute( hSql , " SELECT COMPANY_ID FROM COMPANY
INTO :frmContatos.colCOMPANY_ID WHERE COMPANY_NAME = :MyValue " )
Call SqlFetchNext( hSql , lParam )
Página PAGE 582
Programando com o Centura Team Developer 2000
Column: colCONT_EMAIL
Title: e-mail
Maximum Data Length: 64
Column: colCONT_TITLE
Title: Cargo
Maximum Data Length: 18
Column: colCONT_PHONE
Title: Telefone
Maximum Data Length: 18
Column: colCONT_FAX
Title: Num Fax
Maximum Data Length: 18
Functions
Function: fNovaLinha
Description:
Returns
Parameters
Static Variables
Local variables
Actions
Call SalTblSetFocusCell( hWndForm,SalTblInsertRow( hWndForm,TBL_MaxRow),colCONTACT_ID, -1, -1)
Function: fPopulate
Description:
Returns
Parameters
Static Variables
Local 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 , COMPANY
WHERE
CONTACT.COMPANY_ID = COMPANY.COMPANY_ID ", TBL_FillAll )
Window Parameters
Window Variables
Sql Handle: hSqlContatos
Message Actions
On SAM_Create
Call SqlConnect( hSqlContatos )
Call fPopulate( )
On SAM_RowHeaderDoubleClick
Call SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, TRUE )
On SAM_RowHeaderClick
Call SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, FALSE )
Depurando
Observe a única variável definida na seção Window Variables deste form. Apenas uma
variá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 da
tabela do banco de dados para a table window.
Observe o código da função fPopulate, definida na seção Functions do top-level table
window frmContatos. A função SalTblPopulate executa o comando select e carrega os
dados retornados na table window.
Uma outra função de usuário é utilizada, a qual encontra-se definida na mesma seção
Functions 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 o
usuá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 para
ser 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ção
SalTblSetRowFlags.
Na seção Contents estão definidas as colunas desta table window. Observe que para
cada coluna foi configurado um tamanho máximo limitando que sejam digitadas
informaçõ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 do
attribute inspector. Observe o seu Message Actions. No evento SAM_Create, através
da função SalListPopulate, o Centura carrega para a coluna os nomes das empresas da
table COMPANY. O evento SAM_AnyEdit é utilizado para capturar o momento em
que o usuário escolhe uma das empresas na lista. Neste momento, é recuperado da
tabela o código da empresa escolhida, e este é armazenado na coluna
colCOMPANY_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 evento
SAM_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 as
funções SalTblDoInserts, SalTblDoUpdates e SalTblDoDeletes, que procuram na table
window 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 o
suficiente 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.
Página PAGE 582
Programando com o Centura Team Developer 2000
No exemplo que se segue demonstramos vários recursos do SQLWindows/32 numa aplicação bastante
simples e curiosa, um Álbum de fotografias. Neste álbum, as fotografias são armazenadas numa base de
dados 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 form
window. Na figura abaixo, pode ser observada a 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 imagem
correspondente é mostrada logo abaixo, no objeto picture.
A qualquer momento podem ser acrescentadas novas categorias às já existentes. Essa função é acionada
atravé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 :
A janela de inclusão de categorias é extremamente simples, possui um list box, onde são
apresentados 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.
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 o
CTD.
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 os
diretó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 tipo
de imagem escolhido no combo box ‘Tipo de Imagem’. Quando o usuário clica no nome de um arquivo, a
imagem 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.
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 :
4 – No outline, clique na seção ‘Libraries’ com o botão direito do mouse, fazendo com que o menu de
contexto 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 ser
adicionadas 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.
Pushbutton: pbINCLUIR_IMG
Message Actions
On SAM_Click
Call SalModalDialog( dlgINCLUIR_IMAGENS , hWndForm , nIdCategoria )
Call SalSendMsg( lbIMAGENS, CEM_Populate, wParam , lParam )
Contents
Picture: picIMAGEM
Fit: Size for Best Fit
Tile To Parent? Yes
Functions
Window Parameters
Window Variables
String: sItemEscolhido
Number: nIdCategoria
String: sImagem
Long String: lsIMAGEM
Sql Handle: hSql
Message Actions
On SAM_Create
Set SqlDatabase = 'ISLAND'
Call SqlConnect( hSql )
On SAM_Close
Call SqlDisconnect( hSql )
Depurando
Depurando
Neste dialog box é utilizada uma função definida pelo usuário, chamada
fIncluiCategoria. A definição desta função está na seção Functions do dialog box
dlgINCLUIR_CATEGORIAS. Esta função executa basicamente três comandos : O
primeiro comando select verifica se a categoria que o usuário digitou já existe
cadastrada no banco de dados, se existir, mostra uma mensagem ao usuário (categoria
já cadastrada) e não processa o restante do código da função. O segundo comando
obtém o valor máximo armazenado na coluna ID_CATEGORIA e acrescenta um a este
número, que será utilizado na gravação da nova categoria. Dessa forma, cada categoria
possui um número diferente, sequencial e em ordem crescente. O terceiro comando
inclui a categoria digitada pelo usuário, com o código obtido no comando anterior, na
tabela IMG_CATEGORIAS.
Observe que, o código do botão pbOK faz uma crítica ao valor retornado pela função
fIncluiCategoria. Se a função retornar FALSE, significa que a inclusão não foi
realizada 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 mesma
mensagem é 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 do
dlgINCLUIR_CATEGORIAS, a última função utilizada, SalEndDialog, usa a variável
lParam no seu último parâmetro. Ess procedimento faz que a janela principal da
aplicação, o frmAlbum, tome conhecimento do momento em que a inclusão da
categoria foi bem sucedida, para então carregar novamente os dados no list box
lbCATEGORIAS.
Obtenha maiores informações a respeito da utilização das funções do SQLWindows/32
consultando o Apêndice F - Guia de Referência das Funções SAL.
Call fCarregaArquivos( )
Functions
Function: fCarregaArquivos
Local variables
String: sFiltro
String: asArquivos [*]
Actions
Call SalListClear( lbARQUIVOS )
Set sFiltro = lbDIR.GetSelectedDir( ) || fGetTipoArquivo ( )
Call VisDosEnumFiles( sFiltro , FA_Standard , asArquivos )
Call fCopiaVetorParaLista( asArquivos , lbARQUIVOS )
Function: fGetTipoArquivo
Returns
String:
Actions
If cmbTIPO = "Windows ( *.bmp )"
Return "\\*.bmp"
If cmbTIPO = "Imagens Gif ( *.gif )"
Return "\\*.gif"
If cmbTIPO = "Internet ( *.jpg )"
Return "\\*.jpg"
Function: fIncluir
Local variables
Long String: lsIMAGEM
String: sNomeArq
String: 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 Parameters
Number: pnIdCategoria
Window Variables
String: sCategoria
String: sDrive
Sql Handle: hSql
Message Actions
On SAM_Create
Call 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 Window
Parameters, chamado pnIdCategoria. Este parâmetro indica a categoria onde as
imagens 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. As
instruções para este evento encontran-se na classe. Apenas o código do SAM_Click foi
definido na instância, e este obtém a letra do drive escolhido ( através da função
GetSelectedDrive ) enviando a mensagem CEM_Populate para o lbDIR, que mostrará
os diretórios do drive selecionado.
O objeto lbDIR também pertence a uma classe especial, chamada cDirListBox. Nesta
estão codificados os procedimentos para que este objeto comporte-se de forma similar
ao list box de diretórios do Windows. Isso é feito para tornar a utilização do objeto
familiar 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ão
utilizadas algumas funções da biblioteca Visual Toolchest, entre elas a função
VisDosEnumFiles, que obtém os nomes dos arquivos, de acordo com o filtro
especificado na variável sFiltro. A função fCopiaVetorParaLista é definida pelo
programador, e seu código ( conforme listado abaixo ) está presente na seção Internal
Functions 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 no
objeto 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. A
função SalPicGetString copia a imagem mostrada no objeto picture para a variável
lsIMAGEM, que é gravada no banco de dados.
Para obter maiores informações a respeito da utilização das funções do
SQLWindows/32, consulte o Apêndice F - Guia de Referência das Funções SAL.
Function: fCopiaVetorParaLista
Description: 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 variables
Number: nNumElementos
Number: nNumItem
Actions
Call SalArrayGetUpperBound( pasVetor , 1, nNumElementos )
While nNumItem <= nNumElementos
Call SalListAdd( phWndLista , pasVetor [ nNumItem ] )
Set nNumItem = nNumItem + 1
Para que você possa depurar sua aplicação é necessário que a mesma esteja sendo
executada a partir do Centura SQLWindows/32. Não é possível depurar uma aplicação
sendo executada a partir de um executável.
Mesmo no Centura SQLWindows/32, existem algumas situações onde o depurador não
atua. São elas :
Funções externas – Estas funções são, geralmente, definidas em arquivos tipo DLL e
EXE, 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, a
execução do programa poderá ser acompanhada passo-a-passo, assim como os valores dos objetos, variáveis
etc, 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 como
breakpoint. Então, a linha marcada terá sua cor alterada de modo a ser destacada visualmente das demais
linhas do programa. Estando com uma linha marcada, ative ou desative um breakpoint de uma das seguintes
maneiras :
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ção
feita na janela de configurações de preferências. O default do Centura SQLWindows/32 é mostrar os
breakpoints na cor vermelha. Você pode alterar este default acionando o menu Tools / Preferences, na área
de configurações chamada Outline.
Quando o fluxo de execução do programa atingir a linha marcada com o breakpoint, a execução do programa
será interrompida e a janela da aplicação será substituída pela janela do Centura SQLWindows/32, entáo, o
outline é 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 :
Continue – Use esta ferramenta para fazer com que o programa continue a ser
executado normalmente, ou seja, sair do modo de depuração. Porém, se o fluxo de
execução do programa encontrar outro breakpoint, o depurador é ativado
novamente.
Break – Use esta ferramenta para fazer com que o fluxo de execução do programa
seja 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 a
execução, passo-a-passo, no seu message actions.
Step over – Use esta ferramenta quando a linha a ser executada possuir uma função
cujo código você não deseja depurar. O depurador executa a função, porém, não
mostra 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ção
que esta chamar) houver alguma marca de breakpoint, o depurador pára a execução
nessa linha.
Variables – Use esta ferramenta para visualizar numa janela os valores de algumas
variáveis selecionadas previamente. Através desta janela, é possível também
adicionar 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 de
execução do programa, os objetos, eventos executados nestes objetos e funções
chamadas. Esta janela mostra todas estas informações na sequência em que são
chamadas, ajudando muito na depuração do código.
Messages – Use esta ferramenta para visualizar numa janela todos os eventos que a
aplicação está executando, até mesmo os eventos do sistema operacional. Esta
ferramenta é 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 e
wParam.
Expressions – Use esta ferramenta para visualizar uma janela que permite obter o
valor de expressões e variáveis, mesmo estas não estando relacionadas ao fluxo
atual do programa.
Capítulo 6
Utilizando os QuickObjects
Um dos recursos mais poderosos disponíveis no Centura Team Developer são os
QuickObjects. Utilizando-os você poderá desenvolver rapidamente aplicações, sem a
necessidade de codificação em SAL ( Scalable Application Language, a linguagem de
programação do SQLWindows/32 ), no entanto, deve conhecer a maneira como o negócio da
sua aplicação funciona.
O Centura Team Developer dispõe de uma arquitetura complexa e poderosa de objetos pré-
construídos, inteligentes e expansíveis. Os QuickObjects são construídos segundo os conceitos
da teoria de Orientação a Objetos, obedecendo suas regras e sua hierarquia.
Neste capítulo, você irá trabalhar com os QuickObjects que acompanham o SQLWindows/32.
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 a
uma 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 o
SQLWindows/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 a
conectividade do SQLWindows/32 )
Os QuickObjects para sistemas de e-mail são representados numa aplicação SQLWindows/32 pela classe
cQuickEMail, 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 o
estado dos Commanders e o que será mostrado nos Visualizers.
Visualizers
Os QuickObjects Visualizers são utilizados para mostrar e manipular os dados providos pelos QuickObjects
Data Sources, estando sempre ligados a estes.
Os QuickObjects Visualizers são associados aos QuickObjects Data Sources no momento em que o
desenvolvedor está ‘desenhando’ a tela, em tempo de design, através da Paleta de Controles. Os Visualizers
podem ser personalizados pelo Customizer.
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:
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 os
filhos. Quando associado a um Data Source tipo Detail, marca para exclusão apenas os registros
selecionados no objeto filho.
Discard – Desconsidera todas as edições feitas nos dados contidos no Data Source ao qual o
QuickObject Commander está associado, carregando novamente os dados da fonte de dados. Similar ao
comando 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.
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, eles
apenas 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 ao
QuickObject Data Source, onde o comando First será então executado. Toda a interface entre a aplicação e o
Página PAGE 582
Programando com o Centura Team Developer 2000
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ção
Ao 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 Visualizers
sejam criados antes, não será possível relacioná-los a um QuickObjects Data Sources.
Por exemplo, um QuickComboBox recebe, em tempo de design, a informação de qual comando sql deve ser
executado para que as informações, em tempo de execução da aplicação, sejam mostradas ao usuário
corretamente. 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, em
tempo de desenvolvimento, cria as colunas, na seção Contents da table window, equivalentes ao comando sql
necessá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 entraremos
em detalhes sobre esse assunto agora. O CDK é estudado no Capítulo 10 – Criando seus próprios
QuickObjects.
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 e
seus valores. Uma propriedade é basicamente composta de dois elementos: um nome e um valor. Cada um
dos 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, e
todas as demais que são mostradas num Customizer de um objeto do SQLWindows/32, são propriedades
naturais do objeto. A Nomeação de Propriedades consiste na definição de propriedades adicionais. Por
exemplo, esse mesmo data field poderia conter uma propriedade nomeada pelo desenvolvedor chamada
TextoExplicativo, utilizada para que, em tempo de execução, quando o mouse estivesse por cima do objeto, o
valor da propriedade TextoExplicativo fosse mostrado na barra de status do form.
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 é instalada
conforme 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 a
tabela INVOICE será a tabela filha, também chamada tabela Detail. Essa aplicação será capaz de realizar a
navegação através de todos os registros da tabela COMPANY, sendo que, sempre serão mostrados os
registros da tabela INVOICE relacionados à empresa que estiver com o foco. Ou seja, para cada empresa
escolhida, serão apresentadas as invoices pertencentes a essa empresa. Além da navegação, será possível
também realizarmos alterações de informações, inclusões e exclusões. A aplicação será capaz de realizar
todas 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 os
QuickObjects 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-se
todos os Assistentes do SQLWindows/32. Essa caixa de diálogo recebe o nome de Wizards, e pode ser
acionada através do botão chamado Wizards, situado na barra de ferramentas do SQLWindows/32. Ou
através do menu Component | Wizards.
A janela Wizards.
O Assistente do QuickForm precisa agora conectar-se ao banco de dados. Efetue a conexão através da janela
abaixo, 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.
O próximo passo agora é escolher os nomes das tabelas que serão os Data Sources da aplicação. Escolha
inicialmente a tabela COMPANY. Quando você escolhe uma tabela, o seu nome e os seus campos são
mostrados no quadro do lado direito. Isso pode ser feito de uma das seguintes formas:
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 os
nomes de todas as colunas que a compõem. Ao lado do nome de cada coluna existe um ícone amarelo. A
aplicaçã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.
Você deve agora escolher a tabela detail, ou seja, a tabela INVOICE. Siga os mesmos procedimentos
utilizados na escolha da tabela COMPANY, selecionando a tabela INVOICE e deixando visíveis todas as
suas colunas. Conforme a figura abaixo :
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 ao
mostrado na figura abaixo:
Observe que o Centura SQLWindows/32, automaticamente, posiciona a aplicação gerada na Tab chamada
Layout. Isso faz com que a janela da aplicação seja vista. Dessa forma, nesta aplicação, podemos facilmente
observar os três tipos de QuickObjects de que falamos no início deste capítulo. Os pushbuttons são os
Commanders ( First, Prev, Next, Last, Retrieve, New, Delete, Apply e Discard ), os data fields são os
Visualizers ( Company Id, Company Name, Corporate Url e Phone ) e a child table window é o QuickObject
Data 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 facilitar
futuras referências.
Com a aplicação em execução, clique nos botões Last, Prev, Next e First da barra de ferramentas para
navegar 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.
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.
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.
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.
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.
Neste momento, serão mostrados na paleta de controles os nomes das classes de child table. Clique uma vez
na 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 as
informações para login na base de dados. Informe os valores: ISLAND, SYSADM e SYSADM para
Database, 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 na
aplicação. Escolha então a tabela desejada, clicando duas vezes no nome da tabela chamada
INVOICE_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.
Os pushbuttons dessa janela serão habilitados neste momento, clique no pushbutton chamado Sort, e informe
a coluna chamada ITEM_NO. Clique então no botão Ok.
De volta à janela principal das propriedades da classe cQuickTable, clique no pushbutton Apply para que o
QuickObject 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 Data
Source, 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:
Clique com o botão direito do mouse na child table window tblINVOICE1, que é a tabela
correspondente ao Data Source para a tabela INVOICE.
Ao aparecer o menu de contexto, conforme a figura abaixo, clique na opção chamada Quick Table.
Assim, você tem acesso à janela de configuração das propriedades do cQuickTable, onde o pushbutton Links
deve ser pressionado.
Isso fará com que você tenha acesso à janela de configuração dos links, mostrada na figura abaixo, onde os
Data 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 child
table tblINVOICE_ITEM3, que foi adicionada à aplicação recentemente. Clique no pushbutton New.
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.
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 ser
apresentados de outra forma, visualmente, através de outro objeto. Esse é um ótimo exemplo para conhecer a
funcionalidade de um outro QuickObject, o QuickRadioGroup.
Acione a paleta de controles do SQLWindows/32 e selecione o controle Radio Button. Ao fazer isso serão
mostradas na paleta as classes de radio button disponíveis. Escolha a classe cQuickRadioGroup. O Centura
identifica que essa corresponde a uma classe de QuickObjects e, imediatamente, a paleta de controles passa a
mostrar também os nomes dos Data Sources disponíveis. Selecione o Data Source chamado
tblINVOICE_ITEM3 e a coluna COLOR, conforme mostrado na figura abaixo:
Paleta de controles.
Esse QuickObject fará uma consulta ao banco de dados pela coluna COLOR, utilizando a cláusula
DISTINCT no comando select, obtendo assim os valores existentes na coluna escolhida. Para cada valor
retornado, este QuickObject cria um radio button na aplicação, fazendo com que a mesma fique assim:
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 escrever
nenhuma linha de código SAL.
Você tem pronta uma aplicação que trabalha com quatro tabelas relacionadas entre si, completamente
funcional, 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 no
Capítulo 7 – Explorando os QuickObjects, e aprender a construir seus QuickObjects no Capítulo 10 –
Criando seus próprios QuickObjects.
Capítulo 7
Explorando os QuickObjects
Dando prosseguimento ao Capítulo 7, onde foram apresentados os conceitos básicos dos
QuickObjects do SQLWindows/32, apresentaremos neste capítulo mais alguns
QuickObjects, que auxiliarão o programador a construir aplicações avançadas. Serão
abordados 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 aqui
demonstrados.
Usando os QuickTabs
Para incluí-las, localize a seção Libraries do outline e informe os nomes das bibliotecas
clicando com o botão direito do mouse na palavra Libraries, no outline, e escolhendo as
duas bibliotecas, conforme ilustrado abaixo :
Dessa forma, inclua ao seu programa as duas bibliotecas. No final dessa operação, a seção Libraries do seu
outline deve estar assim :
Agora, adicione em sua aplicação o form window que irá conter os demais objetos. O form
window utilizado deve ser da classe cQuickTabsForm. Proceda da seguinte forma:
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 Data
Source 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
Você precisa adicionar mais uma Tab ao seu form window. Clique com o botão direito do
mouse numa área do form window, até que o menu de contexto abaixo seja mostrado :
Inclua mais três linhas na table window desta janela, clicando no botão New.
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ês
Tabs, cada uma com os nomes digitados.
Clique na Tab chamada Invoice e adicione uma child table da classe cQuickTable. Através
da janela de configuração das propriedades da classe cQuickTable, relacione esse Data
Source à tabela INVOICE.
Selecione as seguintes colunas da tabela INVOICE:
AMOUNT_PAID
COMPANY_ID
DATE_PAID
INVOICE_DATE
INVOICE_NO
Através do pushbutton Sort, configure para que a classificação dos pedidos seja pela coluna INVOICE_NO.
Você pode executar a aplicação agora e verificar que, os pedidos mostrados na Tab Invoice
estão sempre relacionados à Empresa escolhida na Tab Empresa. Desta vez, é possível
visualizar mais informações na tela, de forma bem mais confortável, pois, as informações
estão organizadas nas Tabs.
As Propriedades do QuickTabs
A caixa de diálogo das propriedades do QuickTabs possui as seguintes Tabs, que são
descritas abaixo:
Tabs – Associa um Tab Label a uma determinada Tab Name. Tab Label é o nome que
aparecerá 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 pela
aplicação. Ao informar uma fonte específica, tenha certeza de que a fonte especificada
estará disponível no seu sistema. Você pode também definir que as fontes utilizadas serão
as mesmas da janela pai, para isso, marque o radio button chamado User Parent’s Font.
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 a
distâ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 das
Tabs será acima ou abaixo, assim como a aparência ( seguindo o padrão Windows3.1 ou
Windows95 ).
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 seja
acionada pela primeira vez.
As Mensagens do QuickTabs
O QuickTabs possui uma série de mensagens que podem ser interceptadas pelo
programador, que são:
Tab foi selecionada pelo usuário. Verifique o valor da variável wParam para saber o
número da Tab escolhida pelo usuário.
Você pode também, ao invés de capturar essas mensagens, utilizar as funções late bound
equivalentes a cada uma das mensagens. São elas:
Utilizando o QuickGraph
Assim como os demais QuickObjects, o QuickGraph não necessita de nenhuma programação, porém, possui
uma rica gama de funções que podem ser utilizadas através do SQLWindows/32, que tornam os gráficos
extremamente flexíveis quando utilizados via programação. O QuickGraph é uma classe do
SQLWindows/32, podendo ser modificada e expandida com facilidade.
Pré-requisitos
Utilizando o QuickHTML
Com o QuickHTML é possível, facilmente, construir uma aplicação para navegação pela
Internet, ou seja, um Web Browser, com todas as funcionalidades de navegação
encontradas no Microsoft Internet Explorer.
Construir um simples web browser é extremamente fácil, não sendo necessário escrever
nem uma linha de código SAL.
Observe a figura abaixo, onde um web browser contruído com o QuickHTML está sendo
utilizado para navegar pela Internet.
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 Team
Developer 2000.
Na aplicação, você precisa incluir na seção Libraries, a biblioteca onde o QuickHTML está
definido. Inclua a biblioteca chamada qckwax.apl.
Tudo deve funcionar perfeitamente, exceto os dois objetos que foram colocados na barra
de ferramentas, pois, ainda não escrevemos código para eles.
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
Funções do QuickHTML :
Capítulo 8
Programação Orientada a Objetos com o
SQLWindows/32
Este capítulo descreve as características do SQLWindows no suporte a Orientação a
Objetos. São mostradas as classes e objetos, herança, encapsulamento, polimorfismo e
a implementação de todos estes conceitos no SQLWindows.
Classes
Os métodos podem ser internos e externos, ou privados e públicos. Um método interno não
requer interação com outros objetos, são métodos acionados pelo próprio objeto. Um
mé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:
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 a
mensagem 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ção
específica seja realizada, normalmente, o valor de algum atributo é obtido.
Uma Instância refere-se a um determinado objeto que pode ser desenhado numa tela, no
caso 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 de
instâ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ísticas
definidas na classe.
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:
Classe Base
É a classe da qual uma determinada classe é derivada. A classe derivada herda da sua
classe base todas as definições dos dados e do seu comportamento.
Uma classe base é expandida em classes mais especializadas, e estas são derivadas da
classe 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. Pode
acrescentar seus próprios dados e comportamentos, e pode também redefinir os dados e
comportamentos herdados das classes base.
A herança permite que uma classe utilize e expanda todas as propriedades, operações (os
métodos) e mensagens a outras classes.
Quando uma classe é criada derivada de uma classe base, dá-se o nome de Herança
Simples. E quando a classe deriva de mais de uma classe base, chamamos de Herança
Múltipla.
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 requisitar
dados 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 ao
desenvolvedor conhecer as definições internas do objeto. Então, são criados métodos para
atribuir e obter os valores dos atributos e um objeto, escondendo a complexidade interna
necessária para manter os valores dos seus atributos.
Polimorfismo
É basicamente o fato de objetos da mesma classe (ou não) responderem de forma diferente
a mesma mensagem.
Classe cCalculadora
Mé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 : cCalculadora
Métodos
Imprimir ( ) imprime o resultado das últimas dez operações realizadas.
Copiar ( ) copia os últimos dez resultados para a área de transferência.
Comportamento
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ções
descritas 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:
A definição da classe
A variável isMsgDica será utilizada para mostrar ao usuário um texto identificando a sua
função. Cada instância da classe cpbDica precisa atribuir à variável isMsgDica a
mensagem que será mostrada ao usuário, a sua mensagem específica.
Observe que o método MostrarMsgDica( ), que foi definido na classe, utiliza o mesmo
código para todas as instâncias, porém, os valores são diferentes, pois, a variável de
instância isMsgDica foi inicializada em cada instância com seus devidos valores. Isso faz
com que o resultado também seja diferente.
Sobreposição de código
Essa modificação no código faz com que o pb1 continue funcionando conforme as
instruções descritas na classe base. Já o objeto pb2, que teve o código referente ao evento
SAM_Click modificado, não executará o código padrão definido na classe. Esse exemplo
demonstra 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 assistente
do 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 a
ser gerada.
Assistente de Classes.
Conforme a figura acima, escolha no list box com os tipos de classes a classe de
Pushbutton, em seguida clicando no pushbutton Next.
Na próxima janela do Assistente de Classes você deve selecionar a classe que será a classe
base da classe gerada.
Conforme a figura acima, escolha a classe cpbDica, que foi previamente criada.
Clique no pushbutton Add para que a classe base seja efetivamente escolhida.
Na próxima janela do Assistente de Classes você poderá confirmar o que será gerado na
sua aplicação. Clicando no pushbutton Finish, o Assistente de Classes irá criar a classe no
local apropriado do Outline, que ficará conforme mostrado na figura abaixo:
Functional Class
A classe functional é um objeto não visual que pode ser utilizado para representar objetos
intangíveis. Por exemplo, um processo de controle de estoque não pode ser representado
visualmente, porém, o processo possui um padrão definido. Classes funcionais também
podem ser utilizadas como Classes Abstratas Base, para objetos tangíveis.
Uma classe tipo General Window possui todas as funcionalidades encontradas numa classe
tipo 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 a
funcionalidade das mensagens, das funções e variáveis entre todos os demais tipos de
classes. Classes do tipo General Window só podem ser utilizadas como classe abstrata.
Classes Window
Classes tipo custom control são utilizadas para permitir que DLLs e controles do Visual
Basic possam ser utilizados no SQLWindows/32. Através de classes custom control o
programador pode expandir a funcionalidade de um controle, ou empacotar a
funcionalidade 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.
Nome da classe
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 pode
ter como classe base uma classe de pushbutton.
Classes tipo functional só podem ter como classe base uma ou mais classes do tipo
functional.
Classes tipo general window só podem ter como classe base uma ou mais classes do tipo
functional e general window class.
Classes de objetos top level e child só podem ter como classe base uma ou mais classes do
mesmo 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 os
membros da classe. Isso significa que existe apenas um único local alocado para
armazenamento desse tipo de variável para todos os membros da classe. Esse tipo de
variá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 demais
membros 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, diferente
das 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 mesmos
atributos.
Functions
Funções (métodos) que poderão ser utilizadas pelos membros da classe. São similares às
funções utilizadas no restante da aplicação, exceto pelo fato de que os métodos aqui
declarados 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 de
objetos passivos (como line, background e frames). Todo o processamento global de
mensagens deve ser codificado nesta seção. A única forma de compartilhamento de
mensagens entre objetos visuais de tipos diferentes é através do message actions da classe
general window.
Capítulo 9
Ampliando 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 de
código fonte, talvez o mais interessante dos recursos disponíveis no
SQLWindows/32.
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++.
Utilização e benefícios
Utilizando os objetos providos pela biblioteca CDK você pode desenvolver uma série de
ferramentas que aumentarão sua produtividade em diversas tarefas repetitivas, tarefas que,
se realizadas manualmente, podem demorar muito tempo para ficarem prontas, além de
não haver garantia de padronizacão e de qualidade.
Expandir e aumentar o seu ambiente de trabalho, criando você mesmo seus utilitários
para ajudá-lo no processo de desenvolvimento.
Interfaces
Interface Outline
Utilize a interface Outline para criar programas que leiam e que gerem aplicações
SQLWindows/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ção
SQLWindows/32 quando estes encontram-se em tempo de execução, pode ser utilizada por
uma 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, sem
utilizar nenhum comando de depuração do SQLWindows/32, ou seja, sem alteração no
có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 no
SQLWindows/32. Você pode criar ferramentas que executem tarefas, como selecionar uma
linha na visão Outline. A interface Notification atua sobre a interface do SQLWindows/32
com o programador.
Ferramentas do CDK
O CDK possui algumas ferramentas para o SQLWindows/32 que são instaladas junto com
o produto no subdiretório cdk\samples, são elas:
Wizard Wizard
Instala o seu assistente junto aos assistentes do SQLWindows/32.
Property Editor
Mostra as propriedades de um objeto, permitindo que sejam alteradas.
Mass Customizer
Lista 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.
O modo de funcionamento
i
Informação:
Os capítulos 9 e 10 dão todas as informações necessárias para realizar essas
quatro tarefas citadas acima, sendo de suma importância que você compreenda
o funcionamento dos QuickObjects, que foi explicado no capítulo 6, e as
classes estudadas no capítulo 8.
Através do QuickObject Editor, você relaciona uma classe a um aplicativo que irá
configurar suas propriedades.
A seguir, serão enumeradas as instruções que você deve seguir para relacionar uma classe
ao aplicativo que irá configurar as suas propriedades.
2- Crie uma nova classe de data fields, chamada cMeuDataField, na seção de classes
do outline.
Dê um nome a esse data field, utilize o nome dfTEXTO para facilitar futuras
referências.
Você pode fazer download dos arquivos fonte presentes no livro diretamente a
partir do site http://www.centuraexplorer.com.br/livro_ctd2000/.
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.
13- Abaixo você pode observar a janela de configuração das propriedades que foi
chamada conforme configurado no QuickObject Editor.
O QuickObject Editor
Observe abaixo o que significa cada objeto presente na tela do QuickObject Editor:
1 No list box Classes são mostrados os nomes de todas as classes visuais da aplicação.
Você só pode configurar as classes definidas na aplicação atual. Classes
pertencentes a outras bibliotecas são mostradas em letras azuis, porém, não podem
ser alteradas. As classes que você pode configurar são mostradas em letras pretas.
3 Você deve escolher um dos nomes mostrados no combo box Dialog Name, onde são
mostrados os nomes dos dialog boxes presentes na aplicação que você informou no
campo Application Name. O dialog box que você escolher será ativado, quando
solicitado pelo programador, para configurar as propriedades das instâncias da
classe selecionada no list box Classes.
5 No campo Palette Bitmap você pode especificar o path completo da figura que será
utilizada como ícone da classe, que será mostrado na paleta de controles.
6 No campo CommandText você deve informar o texto do novo item que será
adicionado no customizer do objeto. Através desse item de menu, o programador
poderá acionar a janela de configurações das propriedades do objeto.
7 Se você quiser que os objetos tipo data source sejam mostrados na paleta de
controles, selecione o check box identificado na figura acima com o número 7.
Para salvar as configurações feitas para uma classe, e poder configurar outras
classes, clique no botão Apply. Clicando no botão OK as configurações feitas são
gravadas, e o QuickObject Editor é encerrado. O botão Clear limpa as configurações
para a classe que estiver selecionada. Para sair do QuickObject Editor, sem gravar as
configurações feitas, clique no botão Cancel.
A seguir, serão enumeradas as instruções que deverão ser seguidas para adicionar um ícone
na barra de ferramentas do SQLWindows/32. Neste exemplo, o ícone executará a mesma
aplicação do exemplo anteiror.
3- Para adicionar uma nova ferramenta você deve clicar no botão Add.
10- Observe que foi adicionado ao menu Tools o item que você acabou de adicionar.
12- Marque o check box Tools para que a barra de ferramentas apareça.
A janela Tools
Observe abaixo o que significa cada objeto presente na tela de configurações do menu
Tools.
1 O objeto mostrado no campo Tools é um list view, onde são mostrados os ícones e
os 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, basta
clicar uma vez sobre seu ícone ou nome, fazer as alterações desejadas e então clicar
no botão OK para gravar as configurações.
3 Ao marcar o check box Ask to save outline, o SQLWindows/32 sempre irá perguntar
se você deseja salvar a aplicação antes de executar o aplicativo configurado.
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 que
seja associado ao aplicativo que você está configurando. Esse ícone é mostrado na
barra de ferramentas Tools.
1 O botão identificado pelo número dez aciona um menu mostrando as macros que
0 você pode informar no campo Parameters.
Call CDK_App.CloseApp ( )
Call SalWaitCursor( FALSE )
A linha 8 inicializa o objeto oAcao, que será utilizado para escrever o código
referente ao conteúdo do evento SAM_Create.
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
forma. Este assunto será estudado detalhadamente no Capítulo 11 - Criando seus próprios
QuickObjects.
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óprio
SQLWindows/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 no
SQLWindows/32 o Assistente dos Wizards, uma aplicação que é instalada junto com o
CDK, chamada Wizard Wizard.
3- A aplicação Wizard Wizard precisa ser executada, isso pode ser feito de uma das
maneiras mostradas abaixo:
Uma vez que o Wizard Wizard encontra-se instalado, você pode instalar seus próprios
Wizards. 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.
5- Nesta janela você deve informar o nome do aplicativo e o seu ícone. Após ser
instalado, o seu aplicativo será identificado na janela Wizards pelo nome que você
digitar no campo Title.
Página PAGE 582
Programando com o Centura Team Developer 2000
7- Conforme a figura abaixo, digite o nome do dialog box que será executado quando
o seu aplicativo, que será transformado em assistente, for ativado. Informe aqui o
nome da janela principal do seu assistente, digitando "dlgConfigProp".
Capítulo 10
Criando seus próprios QuickObjects
No capítulo 6 foi mostrado como desenvolver aplicações com os QuickObjects que
acompanham o Centura Team Developer. Foram construídas rapidamente algumas
aplicações sem a necessidade de programação em SQLWindows/32. Agora mostraremos
como 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 conceitos
apresentados 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 da
tecnologia dos QuickObjects.
Introdução
Vamos relembrar alguns conceitos sobre os QuickObjects que precisam estar bem claros
neste 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 alguns
comportamentos para o objeto, quando este estiver sendo executado.
Uma classe pode ser configurada via programação através de escrita de código SAL
diretamente no message actions do objeto instanciado, dessa forma configuramos os
comportamentos e atributos. Através do customizer configura-se as características do
objeto. Nesse ponto, os QuickObjects entram em ação, oferecendo uma maneira
amigável e produtiva para a configuração das propriedades do objeto, podendo vir a
substituir totalmente os outros dois modos citados anteriormente.
O relacionamento entre uma classe e a aplicação que irá configurar suas propriedades,
é feito através do QuickObject Editor.
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. Estas
informaçõ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 Application
Actions e é mostrado abaixo:
On SAM_AppStartup
Call CDK_App.InitializeFramework()
Call CDK_App.DisplayModalWindow()
On SAM_AppExit
Call CDK_App.CloseApp()
Call CDK_App.CloseFrameWork()
!
Lembre-se:
As propriedades definidas pelo programador são armazenadas no interior do
objeto, 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 da
sua própria aplicação configuradora.
A função SetStrProperty deve ser utilizada para gravar os valores das propriedades
definidas 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, convertendo
tipos diferentes ao gravá-las dentro do objeto ( SetStrProperty ), e ao
recuperá-las ( GetStrProperty ).
Exemplo 1
Trabalhando 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, quando
o usuário posicionar o mouse por cima do objeto.
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 seja
mostrada na barra de status do form window. A mensagem é configurada através
do método DefineMsgBarraStatus que foi definido na classe de pushbutton
cpbDica.
A utilização dessa função não será mais necessária, pois, criaremos uma interface
amigável para configurar esta propriedade.
Libraries
File Include: CDK.apl
A mensagem que será mostrada na barra de status do form será mostrada no data
field chamado dfTEXTO, permitindo assim, que o programador configure a
mensagem de forma mais amigável. Para gravar as alterações basta clicar no botão
Ok. 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ê precisa
escrever as seguintes instruções no seu message actions:
Neste caso, a função SalEndDialog simula a operação salvar e fechar, pois, encerra
o dialog box, retornando ao objeto origem, no outline do SQLWindows/32.
12- O código do botão Cancelar é simples, pois encerra a aplicação, sem salvar as
alterações que porventura tenham sido realizadas.
13- Você precisa gerar o executável desta aplicação, para poder relacionar a classe
cpbDica ao dlgConfigPropriedades.
15- A janela abaixo é mostradada no caso da geração do executável ser bem sucedida.
16- Caso ocorra algum problema, algo parecido a janela abaixo é mostrado:
O erro pode não ser o mesmo mostrado na figura acima, mas você deve corrigir o
problema e executar novamente as instruções a partir do item 14.
Agora você precisa relacionar a classe cpbDica, que está definida no programa exQO2.app,
ao executável exQO2Prop.exe através do QuickObject Editor. Para fazer isso, siga as
instruções abaixo:
4 - Agora que a classe está configurada, você pode testar a utilização do seu
QuickObject.
6 - Ative o menu de contexto do objeto clicando sobre o mesmo com o botão direito
do mouse, para então acionar opção chamada "Propriedades".
7 - Na janela de propriedades, digite o texto que você deseja que seja mostrado
quando o mouse passar por cima do objeto.
8 - Execute a aplicação.
Você pode utilizar quantas propriedades forem necessárias para resolver as necessidades
da sua aplicação, nesse exemplo, utilizamos apenas uma como efeito didático.
Exemplo 2
Populando uma table window
Neste exemplo mostraremos como fazer um assistente que gera uma aplicação
SQLWindows/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 programador
desejar.
Este assistente que criaremos a seguir irá gerar o código necessário para que a aplicação
funcione, o programador não precisará escrever nenhuma linha de programação. Observe
abaixo o código fonte necessário para que a janela acima funcione. Este código foi gerado
pelo assistente que criaremos a seguir:
6- Observe abaixo os nomes dado aos dos objetos, é importante que este padrão seja
seguido para facilitar as explicações a seguir.
Isso faz com que os nomes de todas as tabelas do banco de dados sejam
carregados no combo box.
14 - Isso tudo é a preparação para a função fGeraCodigo, que gera o código fonte, seu
código é mostrado abaixo:
Function: fGeraCodigo
Local variables
Number: nNumColunas
Number: nColuna
cdkBaseTable: oTable
cdkColumn: oColuna
cdkActionBlock: oAcao
cdkMessageAction: oMsgAction
cdkContainer: oForm
Actions
1 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 = 0
5 While nNumColunas > nColuna
6 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 ) " )
são utilizadas para a escrita propriamente dita do código fonte. Essas linhas são
inseridas 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.
Capítulo 11
Imprimindo relatórios com o Report Builder
Este capítulo procura apresentar os conceitos de funcionamento do Report Builder e do
SQLWindows na impressão de relatórios. O mecanismo de comunicação entre o Report
Builder e o SQLWindows são apresentados de forma simples sempre seguida de um
exemplo.
Você define o layout desejado para o seu relatório no Report Builder e salva este layout
como um arquivo apropriado, com extensão "QRP", que pode ser utilizado no
SQLWindows como parâmetro nas funções SalReport* para identificar o relatório a ser
executado pela aplicação.
O programador possui total controle sobre o envio dos dados da aplicação para o Report
Builder. 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 ser
instalado no ambiente do cliente junto com a aplicação. Junto a essa chamada que inicia o
relatório são passados vários parâmetros partindo da aplicação para o Report Builder. Um
desses 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 exemplo
certificar-se da existência do arquivo de layout informado. Existindo alguma anormalidade
a 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 pelo
qual o Report Builder avisa a aplicação que tudo está OK é enviando a mensagem
SAM_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 mensagem
na aplicação caso queira configurar alguns parâmetros, variáveis ou executar algumas
tarefas 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 pela
aplicação, o Report Builder apenas recebe estas informações, formata de acordo com a
definição do layout e envia para a impressora.
informações a serem impressas. Você deve, neste momento, iniciar o envio do conteúdo a
ser impresso.
De acordo com as definições feitas no layout quanto aos grupos de quebras o Report
Builder 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óprio
Report Builder se encarrega de imprimir o rodapé, saltar uma página, imprimir o cabeçalho
e continuar a impressão normalmente do relatório.
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 Report
Builder entenda que o relatório deve ser encerrado basta que, assim que a aplicação receber
a 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 seja
definido, a página final de resumo do relatório. Assim que o Report Builder termina esse
trabalho a mensagem SAM_ReportFinish é enviada à aplicação.
Este é todo o ciclo de comunicação entre a aplicação e o Report Builder necessário para
imprimir qualquer tipo de relatório.
Existe uma alternativa muito prática e que pode ser utilizada na grande maioria dos
relatórios necessitados pelas empresas. Consiste em carregar numa child table window
todos os dados a serem enviados para o Report Builder, na ordem de classificação em que
devem ser impressos. Simplesmente fazendo-se uma chamada à função
SalReportTablePrint() ou SalReportTableView() o processo de enviar os dados para o
Report Builder é feito de forma automática, sem que seja necessário interceptar as
mensagens SAM_ReportStart, SAM_ReportFetchInit, SAM_ReportFetchNext e
SAM_ReportFinish na aplicação. Esta é uma forma muito utilizada pois a mensagem
SAM_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, para
em seguida mostrar alguns exemplos de como enviar dados e receber informações do
Report 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.
No quadro esquerdo estão as definições dos itens, das variáveis, fórmulas, totais e das
quebras de grupos. Basta acionar o menu de contexto clicando com o botão direito do
mouse para ter acesso às telas de configurações de cada item, permitindo que itens sejam
incluídos, alterados e excluídos rapidamente.
No quadro direito está localizado o layout propriamente dito. Onde devem ser colocados os
itens a serem impressos. Existem áreas distintas para que seja configurado o conteúdo do
Report 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 impressos
são colocados. Todas as configurações quanto a posição, formatação de fonte, cores e
melhoramento de fonte deve ser definida neste momento pois o relatório será impresso
conforme as definições feitas neste local.
A figura abaixo ilustra o item chamado PHONE, que está posicionado no Detail Block,
Página PAGE 582
Programando com o Centura Team Developer 2000
tendo sua fonte configurada através do combo box situado na barra de ferramentas do
Report Builder.
Caso seja necessário realizar configurações mais profundas num determinado item, basta
ativar o menu de contexto do objeto clicando sobre ele com o botão direito do mouse e
acionando 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 ser
realizadas numa única janela. Conforme ilustrado na figura abaixo:
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ão
adicionados na estrutura das seções no quadro direito, uma chamada Header do grupo e
Página PAGE 582
Programando com o Centura Team Developer 2000
outra Footer. Através dessa estrutura toda a implementação aos grupos de quebra e seus
respectivos sub-totais é habilitada.
As fórmulas
Você pode inserir fórmulas em qualquer local do relatório, no quadro esquerdo você define
a fórmula e posteriormente a arrasta posicionando-a no quadro direito. Opcionalmente
você pode inserir um objeto do tipo campo (Field) e clicar no botão chamado Editor,
localizado na barra de ferramentas do Report Builder.
Dessa forma você terá acesso à janela do Editor de Formulas do Report Builder, onde
fórmulas complexas podem ser definidas mesclando-se os itens de dados definidos e as
funções nativas do Report Builder.
Consulte o Apêndice D - Guia das Funções do Report Builder para obter informações
detalhadas 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.
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
Página PAGE 582
Programando com o Centura Team Developer 2000
complexos exigem esforço manual do desenvolvedor, que precisará criar cada item no
quadro esquerdo e posicioná-lo no seu devido lugar no quadro direito.
Mostraremos agora como o Report Builder pode nos ajudar na montagem de um layout
simples 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 layout
realmente 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 Query
apareç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 vistos
anteriormente nos capítulos iniciais deste livro.
3 Conforme a figura anterior, você pode escolher algumas colunas de uma ou mais
É importante lembrar que a query só fica armazenada no arquivo de layout caso este seja
salvo 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 com
estes formatos.
Arquivos do tipo CQT devem ser utilizados apenas pelo usuário final, no caso deste
usuário ter acesso a um banco de dados para poder definir seus próprios layouts e
imprimir seus próprios relatórios de forma automática no Report Builder.
Após ter configurado todo o layout do seu relatório você deve exportá-lo para o formato
QRP. Faça isso através do botão da barra de ferramentas chamado Export Template.
O layout pode continuar existindo e você deve salvá-lo como .CQT pois provavelmente
será necessário futuramente inserir ou excluir colunas no layout do relatório. Com o
Página PAGE 582
Programando com o Centura Team Developer 2000
arquivo salvo em formato .CQT você poderá sempre que desejar gerar arquivos QRP,
bastando para isso exportá-los.
Uma vez definido o layout no Report Builder o próximo passo para que a aplicação de
impressão de relatórios seja concluída é codificar o programa em SQLWindows para
enviar os dados para o relatório. Mostraremos como fazer isso abaixo:
Pushbutton: pbIMPRIME_EMPRESAS
Message Actions
On SAM_Click
Call SalReportView( hWndForm, hWndNULL, sQRP, sINPUTS, sBINDS, nErro)
Consulte o Apêndice A - Guia de referência das Funções SAL para obter detalhes do
funcionamento da função SalReportView(), assim como seus parâmetros.
4 Quando o Report Builder avisar que foi inicializado corretamente execute o comando
SQL que irá recuperar as informações do banco de dados a serem impressas.
On SAM_ReportFetchInit
Página PAGE 582
Programando com o Centura Team Developer 2000
6 A linha de código abaixo ilustra o envio de uma data armazenada no data field
dfData_Emissao para ser impressa no Page Header do relatório. Observe que no layout
do relatório deve existir uma variável definida do mesmo tipo de dado do data field
utilizado.
On SAM_ReportNotify
If lParam = RPT_BeforePageHeader
Call SalReportSetDateTimeVar( hRelatorio, "dtDATA", dfData_Emissao )
É importante observar os tipos de dados envolvidos nas variáveis utilizadas. Isso pode
economizar um tempo considerável no desenvolvimento da aplicação, pois o Report
Builder não permite a troca de informações através de variáveis/objetos com tipos de dados
diferentes.
Procuramos mostrar neste capítulo uma introdução quanto a utilização do Report Builder e
impressã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.
Capítulo 12
Distribuição do produto final
Este capítulo mostra ao leitor as três formas de distribuição de aplicações construídas com o
SQLWindows/32. São explicados os seus conceitos, limitações, forma de implementação e
utilização de cada uma das tecnologias apresentadas, bem como dicas de utilização.
É extremamente importante que a instalação do Centura Team Developer tenha sido realizada
conforme instruções presentes no Apêndice F - Guia de Instalação do Centura Team
Developer 2000 . Serão utilizados exemplos utilizando o Object Compiler que para funcionar
corretamente, necessita que o MS Visual C++ tenha sido instalado.
Apresentação
Uma vez pronta a sua aplicação, é necessário gerar o módulo que será distribuído aos seus usuários. No
SQLWindows/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 outras
aplicações em tempo de execução, é um tipo de arquivo intermediário entre uma APL e uma DLL. Assim
como 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 as
interfaces aos recursos como forms, table windows, funções e variáveis. Assim como uma DLL, o seu
conteúdo só é carregado para a memória quando o aplicativo solicitar algum recurso que pertence a uma
determinada 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. Observe
abaixo, 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.
Desenvolvimento modular
Você pode separar sua aplicação em módulos distintos (dynalibs), onde cada módulo
dedica-se a realizar uma determinada tarefa.
Economia de recursos
Você 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.
Compilação rápida
As dynalibs não são compiladas a cada vez que a aplicação é, isso reduz drasticamente
o tempo de abertura dos programas e também da compilação.
i
Informação:
No desenvolvimento de grandes aplicativos, é provável que alguns limites
internos do SQLWindows/32 sejam atingidos. Por exemplo a tabela de
símbolos, o espaço para as strings, o número de objetos entre outros. Cada
dynalib possui seus próprios recursos e são independentes do restante da
aplicação. Isso pode ajudar a evitar alguns limites impostos pelo
SQLWindows/32.
Limitações
Os recursos mostrados abaixo, não podem ser exportados através da utilização de dynalib:
Implementando Dynalib
Para a geração de uma dynalib o primeiro passo é identificar quais os itens que serão
exportados, identificá-los e compilar a biblioteca ativando a geração da dynalib.
Após indicar quais elementos da aplicação serão compartilhados você precisa compilar a
dynalib para que possa utilizar em outras aplicações. Ative o menu Project | Build
Settings... para ter acesso à janela Build Settings, onde é feita a configuração do
SQLWindows/32 para que seja gerada a dynalib.
Para criar a dynalib acione o menu Project | Build: exDynalib.apd, quando a janela
chamada Build Information aparecer, clique no botão OK.
i
Informaçã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 ou
enviada para demonstração, sem que seja necessário enviar uma versão
completa para o cliente.
Utilizando a dynalib
Observe na figura abaixo que a dynalib exDynalib.apd foi incluída na aplicação e que a
função fObtem_DynalibVersao ( ) aparece no outline da aplicação. O código fonte da
função não é visualizado. Assim como o programador não faz a menor idéia de que a
constante Dynalib_Versao existe.
i
Importante:
Normalmente as dynalibs continuam compatíveis mesmo após uma
atualização do Centura Team Developer, fique atento ao arquivo release notes
que acompanha cada nova versão, neste arquivo é informado se existe a
necessidade de recompilar as dynalibs. Isso só deve ocorrer quando as versões
forem “binariamente incompatíveis”.
Executáveis
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.
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 Team
Developer 2000.
utilitário make
compilador C
linker
As bibliotecas
Os arquivos include.
Além desses componentes, o Object Compiler precisa encontrar algumas bibliotecas que
são encontradas nos diretórios CENTURA\LIB e CENTURA\INC.
Existem algumas partes de uma aplicação SQLWindows/32 que, quando compiladas pelo
Object Compiler, são transformadas em dll. Mas é preciso saber que partes da sua
aplicação podem ser compiladas pois, por enquanto, não é possível compilar toda a
aplicação SQLWindows/32. Com o Object Compiler a performance da aplicação pode ser
melhorada 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ção
SQLWindows/32:
Funções internas
Funções das classes tipo Functional
Funções e mensagens das classes tipo General Window
O Object Compiler não será capaz de gerar a biblioteca dll caso o código fonte possua uma
das seguintes características:
Página PAGE 582
Programando com o Centura Team Developer 2000
i
Dica :
Declare sempre o tipo de dado de retorno da função que você deseja compilar.
Como vimos anteriormente, para indicar que um elemento da sua aplicação será exportado
em uma dynalib utiliza-se por convenção a palavra chave __exported, para a utilização do
Object Compiler existem algumas convenções.
i
Importante :
Não coloque um espaço e dois underscores após um sinal de exclamação em
seus comentários.
__native
Podemos informar ao Object Compiler que utilize um determinado tipo de dado para
variáveis numéricas. Utilize uma das seguintes convenções ao lado da declaração da
variável:
__byte
__char
__double
__float
__word
__int
__long
__dword
__number ( o padrão )
i
Dicas :
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.
Mostraremos agora como utilizar o Object Compiler, ou seja, como gerar dlls com o
Centura SQLWindows/32. Lembre-se que a instalação do produto deve ter sido realizada
conforme 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 a
compilação seja bem sucedida. Nos exemplos mostrados abaixo foi utilizado o MS Visual
C++ 5.0.
7 - O nome da dll que será gerada pode ser configurado na mesma tela, na tab Object
Compiler.
Se você desejar, pode alterar as configurações que o Object Compiler utilizará para
a 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 alguma
configuração, clique no botão Settings para ter acesso à janela Build Settings. Se
estiver tudo correto clique no botão OK para que a geração da dll tenha início.
10 Você pode abrir o arquivo exCap13_01.APC e verificar o que foi feito pelo Objetc
- Compiler.
11 Para utilizar a biblioteca exCap13_01.DLL que foi gerada pelo Object Compiler
- você 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ções
feitas em Centura SQLWindows/32. Você precisa conhecer bem as três formas para
utilizar seus recursos de forma correta. Observe algumas sugestões:
Utilize o executável para colocar a parte principal do seu aplicativo, a parte que
serve apenas ao aplicativo, não sendo compartilhada com outras aplicações. Por
exemplo os menus, funções e objetos particulares ao aplicativo.
Utilize a dynalib para compartilhar janelas top level e funções que devem ser
compartilhadas entre diversas aplicações. Por exemplo as janelas genéricas como
de login, tabelas e funções genéricas.
Crie suas dlls para distribuir funções otimizadas de alta performance. Como vimos
anteriormente as funções internas, funções definidas nas classes tipo funcional e
general podem ser também compartilhadas através de dlls.
Capítulo 13
Traduzindo aplicações com o Object Nationalizer
Este capítulo apresenta o Object Nationalizer, sua filosofia, benefícios e o
modo como você pode utilizá-lo. Essa é uma ferramenta muito importante
e útil, pois, a grosso modo, permite que sejam alterados os executáveis e
dynalibs quanto ao idioma e quanto aos recursos visuais, para que a
aplicação se adapte aos usuários.
Objetivo
Por exemplo, após a tradução, o tamanho de um componente pode não ser adequado para
comportar o texto traduzido. As dimensões dos componentes da aplicação podem ser
alteradas para se adaptarem às traduções feitas.
O Object Nationalizer pode ser utilizado para extrair, visualizar e editar esses recursos
diretamente 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 a
aparê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 no
funcionamento do objeto. Esses atributos são os recursos possíveis de serem alterados pelo
Object Nationalizer.
Existem duas figuras importantes que precisam ser bem compreendidas no trabalho com o
Object Nationalizer, são elas:
Naturalmente que essas duas pessoas podem ser a mesma, dependendo do modo como a
empresa 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á
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álogo
Build Settings, quando for gerar o executável ou a dynalib.
É interessante salvar a tradução num arquivo de recursos ( *.apr ), para que possa ser
reutilizada quando estiver disponível uma nova versão da aplicação. Por exemplo, suponha
que 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á ser
feita novamente desde o início para cada um dos idiomas. Basta aplicar o arquivo de
recursos, 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 do
aplicativo, incorporados com a nova versão.
Todos os recursos que ainda existirem na nova versão do aplicativo já estarão traduzidos
quando o arquivo de recursos for aplicado, sendo necessário apenas traduzir os novos
recursos.
Uma vez feita essa tradução adicional, o arquivo de recursos é então atualizado para que
seja utilizado novamente junto a próxima atualização do aplicativo.
Conforme o exemplo citado acima, foram salvos diversos arquivos de recursos, cada um
contendo as traduções para um determinado idioma. Em tempo de execução, a aplicação
decide 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 diversos
idiomas 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 de
recursos. Essa decisão pode ser feita tomando-se por base o idioma configurado no
Windows, ou até mesmo com a interação do usuário.
Para que o próprio aplicativo decida o idioma a ser aplicado, dois procedimentos devem
ser tomados:
Página PAGE 582
Programando com o Centura Team Developer 2000
Onde :
sArquivoDeRecursos é o nome do arquivo de recursos que será lido e aplicado pelo
SQLWindows/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 para
uso futuro. Utilize zero nesse parâmetro.
bOk é TRUE se a função for executada com sucesso e FALSE se algum erro ocorrer.
Observe abaixo um exemplo de código que o programador pode escrever para que a
aplicação decida em tempo de execução o idioma a ser utilizado.
Você pode distribuir um único executável, para uma determinada linguagem, e diversos
arquivos de recursos, um para cada idioma. Pode ainda distribuir os executáveis de acordo
com 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 o
idioma 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.
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 Developer
2000.
Você pode iniciar o Object Nationalizer clicando no botão Iniciar do seu Windows, e
selecionando os menus Programas | Centura | Team Developer 2000 | Object
Nationalizer 2000.
Você pode editar os recursos da aplicação de duas formas: traduzindo o texto da aplicação
diretamente ou modificando os recursos graficamente. Mostraremos abaixo como utilizar
as duas formas.
O Object Nationalizer dispõe de um editor que você pode utilizar para editar os elementos
da sua aplicação. Dessa forma, o restante da aplicação permanece inalterado. O editor
permite que rapidamente você realize as edições dos textos da aplicação traduzindo-os para
o idioma desejado.
3. Você pode clicar tanto na coluna Translated Text como no quadro chamado Translated
Text para realizar a tradução do texto.
4. Repita os procedimentos descritos nos itens 2 e 3 até terminar de traduzir toda a
aplicação.
Observe a figura abaixo onde o texto foi traduzido. Neste caso, "Incluir Imagens" foi
traduzido para "Add Images", em inglês. O texto traduzido aparece no quadro e na coluna
chamados Translated Text, enquanto que o texto original aparece no quadro Original Text.
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 Change
To. 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 original
numa ú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 essa
ação. Portanto, se você não tiver certeza de que deseja realmente modificar todos os
valores, fique alternando entre os botões Change e Find Next, para controlar as operações
de mudança uma de cada vez.
Você pode utilizar o Object Nationalizer para visualizar e modificar uma aplicação
graficamente. Visualizando o objeto da sua aplicação você pode traduzir o texto visível e
alterar seus atributos visualmente, como faz no SQLWindows/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 grade
utilizada 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, da
mesma forma que você edita as propriedades do objeto no SQLWindows/32.
Quando você traduz o texto, o mesmo pode ficar com um tamanho maior do que o
disponibilizado anteriormente. A qualquer momento você pode também redimensionar os
objetos, exatamente da mesma maneira que faz no SQLWindows/32.
Assim que terminar sua tradução, você deve salvar seu trabalho de uma das seguintes
formas:
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. Traduzindo
graficamente sua aplicação, você poderá também alterar as dimensões e posições dos
objetos. Quando for necessário realizar traduções em massa, utilize o Editor do Object
Nationalizer para realizar mais rapidamente essa tarefa.
Conforme se pode observar nos exemplos mostrados até então, apenas objetos visuais
foram traduzidos. Você precisará utilizar o Editor do Object Nationalizer para traduzir as
constantes 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, na
seção Constants | User. As constantes presentes na seção Constants | System não podem
ser traduzidas.
Capítulo 14
Gerenciamento de equipes com o Team Object
Manager
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 de
desenvolvimento dos diversos projetos. Este capítulo procura ilustrar os pontos principais
da utilização do Team Object Manager para que o desenvolvedor que está iniciando a
utilizaçã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 sim
apresentar uma visão geral da ferramenta.
Apresentação
Antes de utilizar o Team Object Manager você precisa criar o repositório onde as
informações sobre os projetos ficarão armazenadas. Você deve acionar o Repository Setup
Wizard para realizar essa tarefa.
Toda a operação do Team Object Manager ( TOM ) é baseada num, repositório onde estão
localizadas 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.
As Equipes
Os membros da equipe podem ser visualizados conforme a figura abaixo, os nomes e seus
direitos. Qualquer alteração que se fizer necessária em algum usuário pode ser feita nesta
tela. Clicando-se com o botão direito do mouse no nome de um usuário fará com que um
menu específico de usuários apareça com todas as opções de configuração possíveis para o
usuário escolhido.
Os Projetos
Os projetos são criados no TOM através da janela do Assistente de Criação de Projeto, que
é mostrada na figura abaixo. Neste assistente são configurados os parâmetros para que o
TOM crie o projeto desejado. Basicamente o TOM precisa de um código do projeto e do
nome.
Página PAGE 582
Programando com o Centura Team Developer 2000
É neste momento que uma das decisões mais importantes da criação do projeto deve ser
tomada ; O tipo de armazenamento dos componentes do projeto. O TOM pode armazenar
tudo referente ao projeto num repositório (num banco de dados SQL). Mas pode também
armazenar 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. Neste
diretó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 neste
momento.
O próximo passo é incluir no projeto os seus componentes. Para isso o TOM oferece uma
interface 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 mais
importante da utilização do TOM a ser assimilado neste momento. O mecanismo de
Check-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 recente
da aplicação requerida. Esta operação é registrada pelo TOM e todas as informações
referentes a esta tarefa ficam no TOM armazenadas. Basicamente são : O nome do
desenvolvedor 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
Página PAGE 582
Programando com o Centura Team Developer 2000
componente foi extraído) e a data e hora da operação. A esta operação dá-se o nome de
Check-Out, pois um integrante da equipe extraiu um componente do projeto, para
manutenção.
Obs:
Estando um programa em Check-Out, não é possível que nenhum outro desenvolvedor
realize Check-Out novamente. A menos que esta operação esteja habilitada no TOM e que
os integrantes da equipe tenham consciência dos danos que esse tipo de comportamento
pode causar se utilizado de forma incorreta.
Em determinadas ocasiões o programa em Check-Out pode não ter sido modificado. Neste
caso a operação correta não é o Check-In, mas sim o Unlock.
Relatórios Gerenciais
O TOM possui também uma série de relatórios que podem e devem ser utilizados para um
melhor gerenciamento dos projetos.
Este recurso e muitos outros que compõem o TOM devem ser analisados atentamente e
delicadamente pelos desenvolvedores quando houver oportunidade.
Capítulo 15
Desenvolvimento de componentes COM no SQLWindows
Este capítulo mostra como desenvolver componentes COM e COM+ que rodam no
MTS ( Microsoft Transaction Server). Com estes componentes você poderá
desenvolver aplicações, em SQLWindows, utilizando os conceitos e beneficiando-se
do desenvolvimento de aplicações em três ou mais camadas.
O MTS
O Microsoft Transaction Server é um ambiente de gerenciamento de objetos COM que oferece uma
infraestrutura para manter aplicações distribuídas sendo executadas por toda a rede.
O MTS faz parte do MS Windows NT 4.0. Neste capítulo todos os exemplos mostrados estão ilustrando o
uso num servidor MS Windows 2000 Advanced Server, versão em inglês. Observe que, no Windows 2000, o
MTS não é encontrado com esta nomenclatura; existe o Component Services, que é a evolução do MTS
presente no Windows NT 4.0.
Nosso foco é mostrar ao leitor como desenvolver componentes com a linguagem SQLWindows, portanto,
não nos prenderemos em descrever os conceitos de COM/DCOM, COM+ e as regras do MTS e do
Component Services. Existem dezenas de livros publicados a este respeito, além da própria internet que é
uma fonte de informação quase que inesgotável.
Através dos recursos disponíveis no Centura Team Developer 2000 é possível a construção de componentes
COM e COM+ que rodem tanto no MTS como no Component Services.
Para acompanhar os exemplos mostrados neste capítulo, você precisará ter instalado o CTD2000 numa
máquina com o MS Windows 2000. É importante saber que os exemplos utilizados são exclusivos do
CTD2000, nenhuma outra versão do Centura Team Developer oferece suporte a componentes COM.
O Component Services
Faz parte do Windows 2000 o Component Services que permite a você configurar e administrar componentes
COM e aplicações COM+. Além de executar tarefas administrativas como configurações, instalações de
aplicações no sistema e configuração e monitoramento dos serviços usados pelas suas aplicações.
A figura abaixo mostra a janela principal do MS Component Services. Observe no quadro direito as
aplicações que estão instaladas. As aplicações que estão rodando são identificadas pelo ícone em movimento.
Na figura acima a aplicação System Application está em execução, você pode perceber isso visualmente, pois
o ícone movimenta-se.
No Component Services temos as aplicações que servem basicamente para agrupar componentes que fazem
parte de uma mesma aplicação.
Este capítulo mostra como construir uma aplicação com o CTD2000, que será instalada no Component
Services.
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 que
realizam algum tipo de acesso aos dados. Essa é a única parte da aplicação que pode ter acesso ao banco de
dados, 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 de
espera de alguma operação em tela, vinda do usuário. Um objeto-dado deve liberar o banco de dados o mais
rá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 comandos
SQL, mantemos nosso foco na geração do componente COM. É bem provável que você jamais tenha uma
aplicação dispondo de apenas uma operação de inclusão, porém, a arquitetura do COM ficará bem clara neste
exemplo de fácil entendimento.
Objeto-negócio
A camada intermediária, ou a segunda camada, chamaremos de objeto-negócio, pois é nela que se concentra
toda a lógica e inteligência da aplicação. Nessa camada não deve, jamais, existir comandos SQL. Deve
funcionar 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 vinda
da tela, nunca deve esperar pelo usuário. Um objeto-negócio deve instanciar um objeto-dado, utilizá-lo e
liberá-lo logo em seguida.
No exemplo deste capítulo, construiremos um objeto-negócio que instanciará o objeto-dado para fazer uma
inclusão numa tabela do banco de dados.
3 Na janela Wizards, selecione o assistente de criação de classes COM, conforme mostrado na figura
acima.
Na figura acima você informa ao Assistente de Classes COM que a classe a ser gerada deverá ser
executada no MTS.
5 Na próxima janela do Assistente de Classes COM você precisa digitar o nome da classe a ser gerada e o
nome da interface.
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.
6 A figura abaixo ilustra a janela onde você poderá montar a estrutura das interfaces, definindo seus
mé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. Esse
método terá alguns parâmetros, como mostrado na próxima figura.
8 Neste exemplo estamos definindo dois parâmetros, psCodigo e psNome, mas você pode definir quantos
desejar. Sempre lembrando que os tipos de dados permitidos são os quatro tipos básicos: Number,
Date/Time, String e Boolean.
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óprio
outline do SQLWindows. O Assistente de Classes COM auxilia apenas a criação dos componentes, não
Página PAGE 582
Programando com o Centura Team Developer 2000
a sua manutenção.
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, mas
isso 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 site
http://www.centuraexplorer.com.br/livro_ctd2000/. Este exemplo chama-se exCap23_01.apl.
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_odEmpresa
Interface: IC_odEmpresa
7 Observe na figura que se segue o método odInsere(), da interface IC_odEmpresa, com seus parâmetros
definidos.
Numa aplicação real, é neste momento que devem ser incluídos os demais métodos da interface. Nesse
nosso exemplo utilizaremos apenas um método.
Se estiver tudo correto, clique no botão Finish. Lembre-se de que o Assistente de Classes COM não
suporta alterações numa classe depois que ela já está pronta, devendo ser utilizado apenas para
construçã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 isso
será 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 site
http://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.
Página PAGE 582
Programando com o Centura Team Developer 2000
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 no
objeto-dado.
Function: odInsere
Description:
Attributes
Returns
Boolean:
Parameters
String: psCodigo
String: psNome
Static Variables
Local variables
Session Handle: hSession
String: sParametros
Sql 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
Else
Call SalMessageBox( "Não foi possível criar comando." ,
"COM Server Objeto-Dado" , MB_Ok )
Else
Call 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 dos
desenvolvedores 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; '
Nesse caso, estamos utilizando o próprio SQLBase que acompanha o produto e que está presente no CD
anexo 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.
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.
Selecione o radio button MTS COM Server (DLL) para que o componente seja gerado corretamente.
Selecione o radio button Single Threaded Apartment e clique uma vez no botão New, para que uma nova
chave GUID seja gerada para o componente.
Logo após clique no botão OK.
4 Através do menu Project | Register Server o componente é registrado no registro do Windows, na chave
de registro adequada. Você não precisa entender disso neste momento, necessita apenas saber que o
servidor 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ão
compilar e registrar novamente o componente.
Concluímos mais uma etapa. O componente objeto-dado está pronto. Tudo o que é necessário fazer no
CTD2000 para que um componente seja executado no Component Services foi feito. Precisamos agora criar
o componente-negócio.
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.
Os componentes são mostrados em ordem alfabética, então basta digitar no interior do list box as letras "ex"
(minúsculas).
5 O ActiveX Explorer lê as informações colhidas da type library que foi registrada na etapa anterior e mostra
as 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 de
contexto, assim como mostrado na figura abaixo:
Selecione os itens Show CoClasses e Show Interfaces para que as mesmas sejam mostradas no ActiveX
Explorer.
6 Neste menu de contexto, clique no item chamado Generate Options para que a próxima janela seja mostrada.
Selecione o terceiro radio button para que o código seja gerado com as funções para todas as referências a
classes utilizadas.
7 Observe que, ao clicar numa interface, seus itens são mostrados no quadro direito do ActiveX Explorer. No
caso 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 seja
importado.
9 Essa importação significa que o ActiveX Explorer irá gerar uma biblioteca com o mesmo nome da type
library, com extensão “.APL”.
Nesta biblioteca são geradas várias classes que fazem referencia à type library. Uma classe em especial
merece nossa atenção, a classe COM Proxy, pois é ela que deverá ser utilizada pelo nosso componente.
10 Após importado, o código gerado é mostrado na seção Classes em letras azuis, conforme ilustrado na figura
abaixo:
Function: Insere
Description:
Attributes
Returns
Boolean:
Parameters
String: psCodigo
String: psNome
Static Variables
Local variables
ComProxyVar: oEmpresa
Class: exCap23_02_C_odEmpresa
Boolean: bRetorno
Actions
If 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 o
utilizará.
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 do
usuário final.
Neste ponto precisa ser desenvolvida uma aplicação que servirá de interface visual para a digitação e inclusão
da 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.
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.
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 programa
funcione.
É necessário instanciar um objeto da classe COM Proxy Class referente ao objeto objeto-negócio.
A definição do objeto oNegEmpresa se faz necessária para que possamos ter acesso ao objeto-negócio e
aos 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: pbInsere
Message Actions
On SAM_Click
Call SalWaitCursor ( TRUE )
If oNegEmpresa.Create ( )
Call oNegEmpresa.Insere( dfCodigo, dfNome, bRetorno )
Call oNegEmpresa.Release ( )
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 Centura
Team Developer 2000. Você sempre deve utilizar o método Create() assim como, ao encerra a
utilizaçã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 de
dados 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 estaremos
reaproveitando código algum !
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 exCap23_03.apl.
Agora estamos com toda a parte de codificação dos nossos componentes pronta, resta apenas instalar e
configurar os componentes no Component Services (MTS).
Mostraremos agora como criar uma aplicação no Component Services e acrescentar os nossos componentes a
essa aplicação. Para isso é necessário que você tenha disponível no seu Windows o Microsoft Component
Services, 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 MS
Windows 2000.
2 Conforme mostrado na figura abaixo, clique com o botão direito no item COM+ Applications para ter
acesso 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:
4 Clique no botão que indica uma nova aplicação vazia, é o segundo botão, conforme ilustrado na figura
abaixo:
6 Nesta janela você configura as propriedades de permissões de usuário. Para efeito de exemplo, deixe o
item default marcado, assim como ilustrado na figura abaixo:
As instruções abaixo ilustram todo o processo de instalação dos dois componentes que foram criados neste
capí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 quadro
esquerdo do Component Services, conforme ilustrado na figura abaixo:
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 Install
new component(s), conforme exemplificado na figura abaixo:
3 Nesta janela você deve escolher as DLLs dos componentes gerados no CTD2000. Navegue até o
diretório onde as DLLs foram geradas e escolha as duas, de uma só vez, seguindo a ilustração abaixo:
4 Neste momento o Assistente de Instalação de Componentes COM identificará as interfaces contidas nos
componentes selecionados e mostrará a seguinte janela:
Agora, basta clicar no botão Next para que os componentes sejam instalados no Component Services.
Os componentes foram adicionados ao Component Services e isso pode ser confirmado na imagem mostrada
abaixo:
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.
Um componente possui uma série de propriedades, mas neste momento configuraremos as propriedades que
dizem respeito à Transação.
Quanto às transações, você pode configurar seus componentes das seguintes formas:
1 Clique com o botão direito do mouse no componente objeto-dado e acione o menu Properties.
Neste momento os objetos estão devidamente configurados, você pode executar a aplicação cliente
SQLWindows e ver o resultado, simplesmente verificando a linha inserida na tabela, conforme o comando
insert 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 as
informações supridas aqui, pois por enquanto essa não é a nossa proposta. Você precisa aprofundar-se mais
Página PAGE 582
Programando com o Centura Team Developer 2000
no estudo de construção de aplicações distribuídas, caso isso torne-se uma realidade na sua empresa, o que
fatalmente ocorrerá.
Neste capítulo procuramos fornecer as informações básicas para que você consiga iniciar o processo de
desenvolvimento de aplicações distribuídas com o CTD2000.
Capítulo 16
Desenvolvendo Aplicações SQLWindows para a
Web
Apresentação
O Centura Team Developer 2000 possui algumas extensões para a web que permitem aos
desenvolvedores 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 utilizados
no desenvolvimento das aplicações no próprio ambiente do SQLWindows. Aplicações
Web são construídas no mesmo ambiente das aplicações tradicionais Windows, o único
diferencial 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 de
testes e depuração, no ambiente windows.
Dois módulos distintos compoem as extensões para web da Centura (CWE), o módulo
servidor 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ções
Web. 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 respectivas
aplicações escritas em Centura SQLWindows. Estas aplicações são executadas no servidor
de aplicações Web, onde deve estar instalado o módulo servidor do CWE.
No interior de cada executável estão os forms ou dialogs que devem ser executados
conforme solicitação do usuário. A execução da aplicação em si é feita na própria máquina
servidora que, no momento em que desenharia as telas para que o usuário pudesse vê-las
renderizam esta tela no browser do solicitante em formato html. Ou seja, uma montagem
de página html é feita dinamicamente no momento em que cada tela seria mostrada pela
aplicação windows. Isso indica que, alguns recursos comuns em aplicações tradicionais
windows 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 MDI
com menus para ativar cada uma das janelas da aplicação, não pode ter janelas de
visualizaçã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 no
aplicativo web por limitação da própria plataforma web.
OBS:
O Centura Team Developer 2000 deve ser instalado conforme instruções presentes no
Apêndice F - Guia de instalação do Centura Team Developer 2000 para que as extensões
do Centura para a web sejam instaladas e configuradas corretamente.
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 servidor
WindowsNT ou Windows2000 como um serviço e configurar sua inicialização para
automática sempre que o servidor foi iniciado.
O Desenvolvimento em SQLWindows
O desenvolvimento das aplicações cujo destino é rodar na web devem fazer uso dos
componentes específicos para web, os QuickObjects para Web. Através destes
componentes o desenvolvimento de aplicações para a web é extremamente simplificado.
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.
os QuickObjects padrão para Web são os componentes que servem de base para
qualquer 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 suas
classes 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 simultaneamente
na 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 form
window da classe cWebMgrForm.
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 apenas
algumas poucas janelas, do que trabalhar com poucos executáveis grandes.
Objetos Web
A partir deste momento, todos os objetos que você utilizar para montar sua aplicação web
devem 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 na
aplicaçã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 algumas
regras básicas para que a aplicação funcione corretamente. Além das regras básicas de
design de telas, que mudam consideravelmente, temos também que tomar cuidado no
desenvolvimento 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 o
desenvolvimento é para a web. Podendo inclusive ser utilizada a mesma classe de regras de
negócio nas aplicações web e windows.
Assim como no caso da mensagem SAM_AnyEdit, que não tem efeito quando em
aplicaçõ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 custom
controls. 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 exemplo
SAM_DrapAndDrop, WM_MouseMove, SAM_DropDown.
Estes são apenas alguns dos cuidados que devemos tomar no desenvolvimento de
aplicações para web.
Apêndice A
Guia de referência das funções SAL
O 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.
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.
Funções ActiveX
SalActiveXAutoErrorMode
SalActiveXClose
SalActiveXCreate
SalActiveXCreateFromData
SalActiveXCreateFromFile
SalActiveXDelete
SalActiveXDoVerb
SalActiveXGetActiveObject
SalActiveXGetData
SalActiveXGetObject
SalActiveXInsertObjectDialog
SalActiveXOLEType
Tratamento de vetores
SalArrayAvg
SalArrayDimCount
SalArrayGetLowerBound
SalArrayGetUpperBound
SalArrayIsEmpty
SalArrayMax
SalArrayMin
SalArraySetUpperBound
SalArraySum
Tratamento de datas
SalDateConstruct
Página PAGE 582
Programando com o Centura Team Developer 2000
SalDateCurrent
SalDateDay
SalDateHour
SalDateMinute
SalDateMonth
SalDateMonthBegin
SalDateQuarter
SalDateQuarterBegin
SalDateSecond
SalDateToStr
SalDateWeekBegin
SalDateWeekday
SalDateYear
SalDateYearBegin
Funções DDE
SalDDEAddAtom
SalDDEAlloc
SalDDEDeleteAtom
SalDDEExtract
SalDDEExtractCmd
SalDDEExtractDataText
SalDDEExtractOptions
SalDDEFindAtom
SalDDEFree
SalDDEGetAtomName
SalDDEGetExecuteString
SalDDEPost
SalDDERequest
SalDDESend
SalDDESendAll
SalDDESendExecute
SalDDESendToClient
SalDDESetCmd
SalDDESetDataText
SalDDESetOptions
SalDDEStartServer
SalDDEStartSession
SalDDEStopServer
SalDDEStopSession
Funções de depuração
SalCompileAndEvaluate
SalContextBreak
SalContextCurrent
Funções de edição
SalEditCanCopyTo
SalEditCanCut
SalEditCanPaste
SalEditCanPasteFrom
SalEditCanUndo
SalEditClear
SalEditCopy
SalEditCopyString
SalEditCopyTo
SalEditCut
SalEditPaste
SalEditPasteFrom
SalEditPasteString
SalEditUndo
Gerenciamento de arquivos
SalFileClose
SalFileCopy
SalFileCreateDirectory
SalFileGetC
SalFileGetChar
SalFileGetCurrentDirectory
SalFileGetDateTime
SalFileGetDrive
SalFileGetStr
SalFileOpen
SalFileOpenExt
SalFilePutC
SalFilePutChar
SalFilePutStr
SalFileRead
SalFileRemoveDirectory
SalFileSeek
SalFileSetCurrentDirectory
SalFileSetDateTime
SalFileSetDrive
SalFileTell
SalFileWrite
Formatação e validação
SalFmtFieldToStr
SalFmtFormatDateTime
SalFmtFormatNumber
SalFmtGetFormat
SalFmtGetInputMask
SalFmtGetPicture
SalFmtIsValidField
SalFmtIsValidInputMask
SalFmtIsValidPicture
SalFmtKeepMask
SalFmtSetFormat
SalFmtSetInputMask
SalFmtSetPicture
SalFmtStrToField
SalFmtUnmaskInput
SalFmtValidateField
SalIsNull
SalIsValidDateTime
SalIsValidDecimal
SalIsValidInteger
SalIsValidNumber
SalStrIsValidCurrency
SalStrIsValidDateTime
SalStrIsValidNumber
SalValidateSet
SalListQueryFile
SalListQueryMultiCount
SalListQuerySelection
SalListQueryState
SalListQueryText
SalListQueryTextX
SalListQueryTextLength
SalListRedraw
SalListSelectString
SalListSetMultiSelect
SalListSetSelect
SalListSetTabs
SalGetVersion
SalIdleKick
SalIdleRegisterWindow
SalIdleUnregisterWindow
SalLoadApp
SalLoadAppAndWait
SalMapEnterToTab
SalMessageBeep
SalMessageBox
SalQuit
SalSetProfileString
SalTimerKill
SalTimerSet
SalTrackPopupMenu
SalUseRegistry
SalWaitCursor
SalWinHelp
SalYieldEnable
SalYieldQueryState
SalYieldStartMessages
SalYieldStopMessages
Manuseio de números
SalNumberAbs
SalNumberArcCos
SalNumberArcSin
SalNumberArcTan
SalNumberArcTan2
SalNumberCos
SalNumberCosH
SalNumberExponent
SalNumberHigh
SalNumberHypot
SalNumberLog
SalNumberLogBase10
SalNumberLow
SalNumberMax
SalNumberMin
SalNumberMod
SalNumberPi
SalNumberPower
SalNumberRandInit
SalNumberRandom
SalNumberRound
SalNumberSin
SalNumberSinH
SalNumberSqrt
SalNumberTan
SalNumberTanH
SalNumberToChar
SalNumberToHString
SalNumberToStr
SalNumberToStrX
SalNumberToWindowHandle
SalNumberTruncate
Tratamento de imagens
SalPicClear
SalPicGetDescription
SalPicGetImage
SalPicGetString
SalPicSet
SalPicSetFile
SalPicSetFit
SalPicSetImage
SalPicSetHandle
SalPicSetString
Funções de impressão
SalPrtExtractRect
SalPrtGetDefault
SalPrtGetParmNum
SalPrtPrintForm
SalPrtSetDefault
SalPrtSetParmDefaults
SalPrtSetParmNum
SalPrtSetup
SalReportTableView
SalReportView
Funções SQL
SqlClearImmediate
SqlClose
SqlCommit
SqlConnect
SqlContextClear
SqlContextSet
SqlContextSetToForm
SqlDirectoryByName
SqlDisconnect
SqlDropStoredCmd
SqlError
SqlErrorText
SqlExecute
SqlExecutionPlan
SqlExists
SqlExtractArgs
SqlFetchNext
SqlFetchPrevious
SqlFetchRow
SqlGetError
SqlGetErrorPosition
SqlGetErrorText
SqlGetErrorTextX
SqlGetModifiedRows
SqlGetParameter
SqlGetParameterAll
SqlGetResultSetCount
SqlGetRollbackFlag
SqlImmediate
SqlImmediateContext
SqlOpen
SqlPLSQLCommand
SqlPrepare
SqlPrepareAndExecute
SqlRetrieve
SqlSetInMessage
SqlSetIsolationLevel
SqlSetLockTimeout
SqlSetLongBindDatatype
SqlSetOutMessage
SqlSetParameter
SqlSetParameterAll
SqlSetResultSet
SqlStore
SqlVarSetup
Tratamento de strings
SalStrCompress
SalStrFirstC
SalStrGetBufferLength
SalStrLeft
SalStrLeftX
SalStrLength
SalStrLop
SalStrLower
SalStrLowerX
SalStrMid
SalStrMidX
SalStrProper
SalStrProperX
SalStrRepeat
SalStrRepeatX
SalStrReplace
SalStrReplaceX
SalStrRight
SalStrRightX
SalStrScan
SalStrSetBufferLength
SalStrToDate
SalStrTokenize
SalStrToNumber
SalStrTrim
SalStrTrimX
SalStrUncompress
SalStrUpper
SalStrUpperX
SalTblDeleteRow
SalTblDeleteSelected
SalTblDestroyColumns
SalTblDoDeletes
SalTblDoInserts
SalTblDoUpdates
SalTblFetchRow
SalTblFindNextRow
SalTblFindPrevRow
SalTblGetColumnText
SalTblGetColumnTitle
SalTblGetColumnWindow
SalTblInsertRow
SalTblKillEdit
SalTblKillFocus
SalObjectsFromPoint
SalTblPasteRows
SalTblPopulate
SalTblQueryColumnFlags
SalTblQueryColumnID
SalTblQueryColumnPos
SalTblQueryColumnWidth
SalTblQueryContext
SalTblQueryFocus
SalTblQueryLockedColumns
SalTblQueryRowFlags
SalTblQueryRowHeader
SalTblQueryScroll
SalTblQuerySplitWindow
SalTblQueryTableFlags
SalTblQueryVisibleRange
SalTblReset
SalTblScroll
SalTblSetCellTextColor
SalTblSetColumnFlags
SalTblSetColumnPos
SalTblSetColumnText
SalTblSetColumnTitle
SalTblSetColumnWidth
SalTblSetContext
SalTblSetFlagsAnyRows
SalTblSetFocusCell
SalTblSetFocusRow
SalTblSetLockedColumns
SalTblSetRange
SalTblSetRow
SalTblSetRowFlags
SalTblSetTableFlags
SalTblSortRows
Gerenciamento de janelas
SalAppDisable
SalAppEnable
SalAppFind
SalBringWindowToTop
SalCenterWindow
SalCreateWindow
SalCreateWindowEx
SalContextMenuSetPopup
SalDestroyWindow
SalDisableWindow
SalDisableWindowAndLabel
SalEnableWindow
SalEnableWindowAndLabel
SalFindWindow
SalFormGetParmNum
SalGetDefButton
SalGetFirstChild
SalGetFocus
SalGetNextChild
SalGetType
SalGetWindowLabelText
SalGetWindowLoc
SalGetWindowSize
SalGetWindowState
SalGetWindowText
SalHideWindow
SalHideWindowAndLabel
SalInvalidateWindow
SalIsButtonChecked
SalIsWindowEnabled
SalIsWindowVisible
SalMoveWindow
SalParentWindow
SalQueryFieldEdit
SalSetDefButton
SalSetFieldEdit
SalSetFocus
SalSetWindowLabelText
SalSetWindowLoc
SalSetWindowSize
SalSetWindowText
SalShowWindow
SalShowWindowAndLabel
SalStatusGetText
SalStatusSetText
SalStatusSetVisible
SalTBarSetVisible
SalUpdateWindow
SalWindowClassName
SalWindowGetProperty
SalWindowHandleToNumber
SalWindowIsDerivedFromClass
Função : SalAbort
Sintaxe : bOk = SalAbort ( nCodigo )
Descrição : Cancela o processamento atual do menu actions, message actions, ou do
application 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 : SalActiveXAutoErrorMode
Sintaxe : 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 : SalActiveXClose
Sintaxe : 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 dados
antes de encerrar a conexão.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalActiveXCreate
Sintaxe : 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.
Função : SalActiveXCreateFromData
Sintaxe : 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 : SalActiveXCreateFromFile
Sintaxe : 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 : SalActiveXDelete
Sintaxe : bOk = SalActiveXDelete ( hWndControle )
Descrição : Apaga uma instância de um objeto ActiveX.
Parâmetro :
hWndControl Window Handle - O handle do objeto que será apagado.
e
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalActiveXDoVerb
Sintaxe : bOk = SalActiveXDoVerb ( hWndControle , nVerbo , bTam )
Descrição : Abre um objeto para uma operação. Cada objeto possui seu próprio conjunto de
verbos.
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:
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalActiveXGetActiveObject
Sintaxe : 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 da
classe. 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 : SalActiveXGetData
Sintaxe : 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 de
execuçã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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalActiveXGetObject
Sintaxe : 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 : SalActiveXInsertObjectDialog
Sintaxe : 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 estar
corretamente registrado no sistema operacional. O programa de instalação do aplicativo
precisa ter realizado adequadamente o seu registro.
Parâmetro :
hWndControl Window Handle - O handle do objeto onde o controle ActiveX será criado.
e
Valor de Retorno :
bOk é TRUE se a função conseguiu incluir o objeto sem erros. É FALSE se algum objeto foi
selecionado, mas não foi incluído corretamente. Quando o usuário, na janela de inclusão de
objetos ActiveX, clica no botão Cancel, bOk é -1.
Função : SalActiveXOLEType
Sintaxe : nRetorno = SalActiveXOLEType ( hWndControle )
Descrição : Obtém o status de um objeto ActiveX.
Parâmetro :
hWndControl Window Handle - O handle do objeto.
e
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.
Função : SalAppDisable
Sintaxe : bOk = SalAppDisable ( )
Descrição : Desabilita a entrada de dados de todas as aplicações que estiverem sendo
executadas. Utilize as funções SalAppDisable e SalAppEnable quando você estiver
executando várias aplicações e quiser controlar 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 : SalAppEnable
Sintaxe : bOk = SalAppEnable ( )
Descrição : Habilita a entrada de dados de todas as aplicações que estiverem sendo
executadas e que foram desabilitadas pela função SalAppDisable. Utilize as funções
SalAppDisable e SalAppEnable quando você estiver executando várias aplicações e quiser
controlar 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 : SalAppFind
Sintaxe : hWnd = SalAppFind ( sNomeAplic , bAtiva)
Descrição : Encontra a janela top-level da aplicação que você especificou e retorna o handle
da janela. SalAppFind procura primeiro por instâncias de aplicações Centura e depois por
instâ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ê pode
usar 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 : SalArrayAvg
Sintaxe : nMedia = SalArrayAvg ( nArray )
Descrição : Retorna o valor da média de todos os valores do vetor.
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 : SalArrayDimCount
Sintaxe : 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 : SalArrayGetLowerBound
Sintaxe : nOk = SalArrayGetLowerBound ( aArray , nDim , nIndice )
Descrição : Retorna o menor índice de um vetor.
Parâmetros :
aArray Array – O nome do vetor
nDim 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 : SalArrayGetUpperBound
Sintaxe : bOk = SalArrayGetUpperBound ( aArray , nDim , nIndice )
Descrição : Retorna o maior índice de um vetor.
Parâmetros :
aArray Array – O nome do vetor
nDim 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.
Função : SalArrayIsEmpty
Sintaxe : 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 : SalArrayMax
Sintaxe : 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 : SalArrayMin
Sintaxe : 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 : SalArraySetUpperBound
Sintaxe : 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.
Função : SalArraySum
Sintaxe : 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 : SalBringWindowToTop
Sintaxe : 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 : SalClearField
Sintaxe : 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.
Função : SalColorFromRGB
Sintaxe : 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 das
cores 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 sido
definida, a função SalColorGet retornará COLOR_None.
Função : SalColorGetSysColor
Sintaxe : nCor = SalColorGetSysColor ( nIndiceCor )
Descrição : Obtém uma cor do sistema.
Parâmetro :
nIndiceCor Number – É a cor de uma parte do objeto, é representada pelas seguintes
constantes do Centura : COLOR_SysWindow, COLOR_SysWindowFrame
e COLOR_SysWindowText.
Valor de Retorno :
nCor é a cor retornada, ela pode ser uma das cores já pré-definidas pelo Centura, estas cores
são definidas nas constantes COLOR_*.
Função : SalColorSet
Sintaxe : bOk = SalColorSet ( hWndObj , nIndiceCor , nCor )
Descrição : Define a cor de um objeto.
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ê pode
utilizar uma das constantes do Centura para identificar a parte do objeto que
terá sua cor alterada. As constantes podem ser:
COLOR_IndexCellText,
COLOR_IndexTransparent,
COLOR_IndexWindow e
COLOR_IndexWindowText.
nCor Number – É a cor a ser atribuída ao objeto. Pode ser uma cor definida pelo
usuário ou pode ser uma das cores já pré-definidas pelo Centura numa das
constantes 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 : SalColorToRGB
Sintaxe : 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 as
constantes 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 : SalCompileAndEvaluate
Sintaxe : 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 utilizados
como 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 nome
desta.
Parâmetros :
sExp String – A expressão a ser avaliada.
nErro Receive Number – O número do erro, se for retornado algum.
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 um
valor date/time.
hWndRet Receive Window Handle – Este parâmetro terá algum valor se sExp retornar
um handle.
bErro Boolean – Se este parâmetro for TRUE, o Centura não mostrará nenhuma
mensagem caso ocorra algum erro. Especifique TRUE caso a aplicação faça
o seu próprio tratamento de erro. Especifique FALSE para que o Centura
mostre 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ções
SalContextBreak ou SalContextCurrent.
Valor de Retorno :
Se a função for executada com sucesso, nTipo irá conter um valor que pode ser uma das
seguintes constantes : EVAL_Date, EVAL_Handle, EVAL_If, EVAL_Number, EVAL_Set,
EVAL_String e EVAL_Template.
Função : SalContextBreak
Sintaxe : sContexto = SalContextBreak ( )
Descrição : Recupera o contexto do comando break mais recentemente executado. Utilize
esta função com SalCompileAndEvaluate.
Nenhum Parâmetro.
Função : SalContextCurrent
Sintaxe : sContexto = SalContextCurrent ( )
Descrição : Recupera o contexto de execução atual. Utilize esta função com
SalCompileAndEvaluate.
Nenhum Parâmetro.
Função : SalContextMenuSetPopup
Sintaxe : 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 mensagem
SAM_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
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 ou
uma 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 : SalCreateWindow
Sintaxe : 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 ou
fechada.
Você pode também passar um número variável de parâmetros para a janela que está sendo
criada 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 ou
também pode ser uma variável cujo seu conteúdo é o nome da jenela a ser criada. Neste caso
SalCreateWindow 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 : SalCreateWindowEx
Sintaxe : 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 outro
dialog 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.
Você pode também passar um número variável de parâmetros para a janela que está sendo
criada 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 ou
também pode ser uma variável cujo seu conteúdo é o nome da jenela a ser criada. Neste caso
SalCreateWindowEx 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 : SalCursorClear
Sintaxe : 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 : SalCursorSet
Sintaxe : 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
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalCursorSetFile
Sintaxe : 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 : SalCursorSetString
Sintaxe : 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.
Função : SalDateConstruct
Sintaxe : 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.
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 : SalDateCurrent
Sintaxe : 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 : SalDateDay
Sintaxe : 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 uma
data válida.
Função : SalDateHour
Sintaxe : nHora = SalDateHour ( dtData )
Descrição : Retorna a hora de um valor date/time, retorna –1 se a data for inválida.
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 uma
data válida.
Função : SalDateMinute
Sintaxe : 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 uma
data válida.
Função : SalDateMonth
Sintaxe : 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 uma
data válida.
Função : SalDateMonthBegin
Sintaxe : dtDataInicial = SalDateMonthBegin ( dtData )
Descrição : Retorna a data inicial do mês da data passada como parâmetro. Por exemplo, se
dtData 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 uma
data válida.
Função : SalDateQuarter
Sintaxe : nQuarter = SalDateQuarter ( dtData )
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 : SalDateQuarterBegin
Sintaxe : 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.
Função : SalDateSecond
Sintaxe : 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ão
corresponder a uma data válida.
Função : SalDateToStr
Sintaxe : 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 : SalDateWeekBegin
Sintaxe : 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 data
inválida, dtInicioSemana será igual a DATETIME_Null.
Função : SalDateWeekday
Sintaxe : nDiaSemana = SalDateWeekday ( dtData )
Descrição : Retorna o dia da semana em um valor entre 0 e 6. Retorna –1 se o valor em
dtData for inválido ou DATETIME_Null.
Parâmetro :
dtData Date/Time – A data a ser analisada.
Valor de Retorno :
Função : SalDateYear
Sintaxe : 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 : SalDateYearBegin
Sintaxe : dtInicioAno = SalDateYearBegin ( dtData )
Descrição : Retorna a data do primeiro dia do ano. Retorna –1 se a data informada for
inválida.
Parâmetro :
dtData Date/Time – O valor da data.
Valor de Retorno :
dtInicioAno corresponde à data do primeiro dia do ano.
Função : SalDDEAddAtom
Sintaxe : nAtomo = SalDDEAddAtom ( sStr )
Descrição : Adiciona uma string à tabela global de átomos, criando um novo átomo para
identificar 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 string
em sStr já existir, nAtomo é o valor do átomo existente. Em caso de erro, nAtomo é zero.
Função : SalDDEAlloc
Sintaxe : 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.
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 : SalDDEDeleteAtom
Sintaxe : nContador = SalDDEDeleteAtom ( nAtomo )
Descrição : Diminui o contador de átomos. Se o contador atingir zero, o átomo e a string
associada 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ção
falhar.
Função : SalDDEExtract
Sintaxe : 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.
hWndRemete Receive Window Handle – O window handle de quem enviou a mensagem.
nte
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 : SalDDEExtractCmd
Sintaxe : bOk = SalDDEExtractCmd ( nComando , sComando , nTamanho )
Descrição : Extrai o comando representado pelo valor da variável lParam numa mensagem
WM_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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalDDEExtractDataText
Sintaxe : bOk = SalDDEExtractDataText ( nData , nStatus , sDado , nTamanho )
Descrição : Extrai o valor contido na variável lParam numa mensagem WM_DDE_Data ou
WM_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 : SalDDEExtractOptions
Sintaxe : SalDDEExtractOptions ( 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.
hWndRemete Receive Window Handle – O window handle de quem enviou a mensagem.
nte
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 na
tabela.
Função : SalDDEFree
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 a
função falhar.
Função : SalDDEGetAtomName
Sintaxe : nTamAtomo = SalDDEGetAtomName ( nAtomo , sNomeDoAtomo , nTamanho )
Descrição : Obtém a string associada a um átomo.
Parâmetros :
nAtomo Number – O número do átomo.
sNomeDoAto Receive String – A string associada ao átomo.
mo
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 se
a função falhar.
Função : SalDDEGetExecuteString
Sintaxe : sComando = SalDDEGetExecuteString ( nlParam )
Descrição : Uma aplicação servidora utiliza esta função para obter o comando enviado pelo
cliente. 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 : SalDDEPost
Sintaxe : nRetorno = SalDDEPost ( hWndObj , nMensagem , hWndRemetente , nllParam ,
nhlParam )
Descrição : Envia todas as mensagens WM_DDE_*, com exceção das mensagens
WM_DDE_Initiate e WM_DDE_Ack.
A função SalDDEPost coloca uma mensagem na filha de mensagens do objeto, permitindo
que este processe as mensagens que já estiverem na fila. A função SalDDEPost retorna sem
esperar pelo processamento da mensagem no objeto que a recebeu.
Parâmetros :
hWndObj Window Handle – O handle do objeto que recebe a mensagem.
nMensagem Number – A mensagem.
hWndRemete Window Handle – O handle de quem está enviando a mensagem.
nte
nllParam Receive Number – O valor ( low-order ) da variável lParam enviada com a
mensagem.
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 zero se a
função falhar.
Função : SalDDERequest
Sintaxe : 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 de
informaçã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 receber
informações ( como por exemplo, um data field, column, multiline text ou
combo box ), além de ter sido definido um tipo de dado compatível com o
tipo de dado da string.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalDDESend
Sintaxe : nRetorno = SalDDESend (hWndReceptor, nMsg, hWndRemetente, nllParam,
nhlParam )
Descrição : Envia uma mensagem WM_DDE_Ack em resposta à mensagem
WM_DDE_Initiate. Diferente da função SalDDEPost, a função SalDDESend não coloca a
mensagem 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 :
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 os
receptores a tenham processado.
Parâmetros :
nMsg Number – A mensagem.
hWndRemete Window Handle – O handle do objeto que está enviando a mensagem.
nte
nllParam Receive Number - O valor ( low-order ) da variável lParam enviada com a
mensagem.
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 se
a função falhar.
Função : SalDDESendExecute
Sintaxe : bOk = SalDDESendExecute ( hWndCliente, sServico, sTopico, sItem, nTimeout,
sCmd )
Descrição : A aplicação cliente utiliza esta função para enviar a mensagem
WM_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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalDDESendToClient
Sintaxe : bOk = SalDDESendToClient ( hWndServidor , sDado , nIdCliente , nTimeout )
Descrição : Uma aplicação servidora utiliza esta função para enviar informações à aplicação
cliente.
Parâmetros :
hWndServido Window Handle – O handle do objeto associado ao serviço, tópico e item
r DDE.
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 hot
link.
Para uma conversação tipo cold link, o servidor recebe a mensagem
SAM_DDE_ClientRequest ( em resposta à chamada da função
SalDDERequest pela aplicação cliente ). O valor da variável lParam, na
mensagem SAM_DDE_ClientRequest, identifica o cliente a receber as
informaçõ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 : SalDDESetCmd
Sintaxe : 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 : SalDDESetDataText
Sintaxe : 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
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 : SalDDESetOptions
Sintaxe : 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 : SalDDEStartServer
Sintaxe : 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, antes
que as aplicações cliente tentem efetuar a conexão.
Parâmetros :
hWndServido Window Handle – O window handle da aplicação servidora, associada à
r 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 : SalDDEStartSession
Sintaxe : 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 hot
link 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 um
combo box )
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalDDEStopServer
Sintaxe : 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 foi
executada com sucesso.
Parâmetro :
hWndServido Window Handle – O handle do servidor associado ao serviço, tópico e item
r DDE.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalDDEStopSession
Sintaxe : bOk = SalDDEStopSession ( hWndDest )
Descrição : Uma aplicação cliente utiliza esta função para encerrar uma conversação tipo hot
link com o servidor. Esta função deve ser chamada o mesmo número de vezes que a função
SalDDEStartSection 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 : SalDestroyWindow
Sintaxe : bOk = SalDestroyWindow ( hWndObj )
Descrição : Destrói um form window, dialog box, top-level table window ou mdi criado com
SalCreateWindow.
Parâmetro :
hWndObj Window Handle – O handle ou o nome do objeto a ser destruído.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalDisableWindow
Sintaxe : 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 : SalDisabelWindowAndLabel
Sintaxe : 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 : SalDlgChooseColor
Sintaxe : bOk = SalDlgChooseColor ( hWndPai , nCor )
Descrição : Mostra o diálogo de cores do windows para que o usuário escolha ou defina uma
nova 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 FALSE
se o usuário saiu da janela de cores clicando no botão Cancel.
Função : SalDlgChooseFont
Sintaxe : 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.
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.
nMelhoramen Receive Number – O melhoramento de fonte escolhido pelo usuário
to (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 o
usuário saiu da janela clicando no botão Cancel.
Função : SalDlgOpenFile
Sintaxe : 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 um
arquivo 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. Por
exemplo, o usuário poderá escolher o tipo de arquivo fonte do Centura que
ele 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ês
filtros sejam mostrados especifique o valor 6 em nFiltro.
Você pode limitar o número de filtros mostrados. Por exemplo, para mostrar
apenas os dois primeiros filtros definidos acima ( *.app e *.apl ) especifique
em nFiltro o valor 4.
nIndice Number – Refere-se ao filtro escolhido pelo usuário. Por exemplo, se o
usuá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.
Função : SalDlgSaveFile
Sintaxe : 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 um
nome 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. Por
exemplo, o usuário poderá escolher o tipo de arquivo fonte do Centura que
ele 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ês
filtros sejam mostrados especifique o valor 6 em nFiltro.
Você pode limitar o número de filtros mostrados. Por exemplo, para mostrar
apenas os dois primeiros filtros definidos acima ( *.app e *.apl ) especifique
em nFiltro o valor 4.
nIndice Number – Refere-se ao filtro escolhido pelo usuário. Por exemplo, se o
usuá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ário
clicar no botão Cancel, não escolhendo nenhum arquivo.
Função : SalDragDropDisableDrop
Sintaxe : 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.
Função : SalDragDropEnableDrop
Sintaxe : 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 : SalDragDropGetSource
Sintaxe : bOk = SalDragDropGetSource ( hWndObj, nX, nY )
Descrição : Obtém o handle do objeto origem e a localização do mouse no objeto quando
iniciou 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 : SalDragDropGetTarget
Sintaxe : 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 : SalDragDropStart
Sintaxe : 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.
Função : SalDragDropStop
Sintaxe : 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 : SalDrawMenuBar
Sintaxe : 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 de
Arquivos 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 do
Gerenciador de Arquivos ou Windows Explorer.
O comportamento padrão para pictures editáveis é TRUE, para os demais
objetos 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 : SalDropFilesQueryFiles
Sintaxe : nArquivos = SalDropFilesQueryFiles ( hWndOrigem , sArquivos )
Descrição : Obtém os nomes dos arquivos que estão sendo arrastados do Gerenciador de
Arquivos ou do Windows Explorer para o objeto hWndOrigem. O recebimento da mensagem
SAM_DropFiles indica que o usuário arrastou arquivos para o objeto hWndOrigem.
Parâmetros :
Valor de Retorno :
nArquivos é a quantidade de arquivos que está sendo arrastada para o objeto.
Função : SalDropFilesQueryPoint
Sintaxe : bOk = SalDropFilesQueryPoint ( hWndObjeto , nX, nY )
Descrição : Encontra a posição do mouse no objeto no momento em que o usuário arrastou
arquivos para o objeto. O recebimento da mensagem SAM_DropFiles indica que o usuário
arrastou 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 : SalEditCanCopyTo
Sintaxe : bOk = SalEditCanCopyTo ( )
Descrição : Esta função retorna TRUE se a picture editável está com o foco e possui um
arquivo 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 : SalEditCanCut
Sintaxe : 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 : SalEditCanPaste
Sintaxe : bOk = SalEditCanPaste ( )
Descrição : Esta função retorna TRUE se os dados na área de transferência puderem ser
copiados para o objeto com o foco. Você pode usar esta função na seção Enable When do
item 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 o
foco e FALSE se não puder.
Função : SalEditCanPasteFrom
Sintaxe : 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 : SalEditCanUndo
Sintaxe : bOk = SalEditCanUndo ( )
Descrição : Esta função retorna TRUE se a edição feita num data field, multiline text ou
coluna 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 ser
desfeita.
Função : SalEditClear
Sintaxe : 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 : SalEditCopy
Sintaxe : bOk = SalEditCopy ( )
Descrição : Copia o texto selecionado para a á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 : SalEditCopyString
Sintaxe : 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 : SalEditCopyTo
Sintaxe : bOk = SalEditCopyTo ( )
Descrição : Copia um objeto de um arquivo para um objeto picture. O foco precisa estar no
objeto 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 : SalEditCut
Sintaxe : 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 : SalEditPaste
Sintaxe : bOk = SalEditPaste ( )
Descrição : Cola o conteúdo da área de transferência no data field, multiline text, coluna da
table 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.
Função : SalEditPasteFrom
Sintaxe : 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 : SalEditPasteString
Sintaxe : 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 : SalEditUndo
Sintaxe : bOk = SalEditUndo ( )
Descrição : Desfaz a última edição realizada no objeto data field, multiline text, coluna da
table 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 : SalEnableWindow
Sintaxe : 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.
Função : SalEnableWindowAndLabel
Sintaxe : bOk = SalEnableWindowAndLabel ( hWndObj )
Descrição : Habilita o mouse e o teclado para entrada de dados no objeto, habilita também o
background 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 : SalEndDialog
Sintaxe : 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 : SalFileCopy
Sintaxe : 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 por
cima do arquivo destino, caso este já exista. Quando o arquivo já existe e
bOperacao é especificado FALSE, a função SalFileCopy não realiza a
cópia, retornando a constante FILE_CopyExist.
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 : SalFileCreateDirectory
Sintaxe : 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 : SalFileGetC
Sintaxe : bOk = SalFileGetC ( hArquivo , nCarac )
Descrição : Retorna o próximo caractere de um arquivo aberto ( hArquivo ). Você precisa
utilizar a função SalFileGetChar caso o arquivo contenha caracteres não ASCII, ou caracteres
16-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 : SalFileGetChar
Sintaxe : 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 SalFileGetChar
encontra o final do arquivo, nCaractere é –1.
Função : SalFileGetCurrentDirectory
Sintaxe : bOk = SalFileGetCurrentDirectory ( sPath )
Descrição : Obtém o path completo do diretório de trabalho atual.
Parâmetro :
sPath Receive String – O path completo, incluindo a letra do drive, do diretório de
trabalho atual.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalFileGetDateTime
Sintaxe : bOk = SalFileGetDateTime ( sArquivo , dtDataHora )
Descrição : Obtém a data e hora em que o arquivo foi modificado pela última vez.
Parâmetros :
sArquivo String – O nome do arquivo que você deseja.
dtDataHora Receive Date/Time – A data e hora em que o arquivo foi modificado pela
última vez.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalFileGetDrive
Sintaxe : sLetra = SalFileGetDrive ( )
Descrição : Obtém a letra do disco rígido padrão.
Nenhum Parâmetro.
Valor de Retorno :
sLetra é a letra entre A e Z (os “:” são incluídos também) que representa a unidade de disco
rígido padrão no momento de execução da função.
Função : SalFileGetStr
Sintaxe : bOk = SalFileGetStr ( hArquivo , sLinha , nTamanho )
Descrição : Obtém a próxima linha de um arquivo aberto.
Parâmetros :
hArquivo File Handle – O handle do arquivo aberto.
sLinha Receive String – A linha retornada.
nTamanho Number – O número máximo de bytes que poderão ser lidos.
Valor de Retorno :
bOk é TRUE se a função obter sucesso na leitura e FALSE se falhar ou se o final do arquivo
for encontrado.
Função : SalFileOpen
Sintaxe : bOk = SalFileOpen ( hArquivo , sArquivo , nEstilo )
Descrição : Abre , cria ou apaga um arquivo.
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 : SalFileOpenExt
Sintaxe : 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 : SalFilePutC
Sintaxe : 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 conseguir
gravar no arquivo.
Função : SalFilePutChar
Sintaxe : bOk = SalFilePutChar ( hArquivo , nCaractere )
Descrição : Grava um caractere num arquivo aberto.
Parâmetros :
hArquivo File Handle – O handle do 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 : SalFilePutStr
Sintaxe : bOk = SalFilePutStr ( hArquivo , sString )
Descrição : Grava uma string num arquivo aberto. O Centura acrescenta à string gravada os
caracteres 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 : SalFileRead
Sintaxe : 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 : SalFileRemoveDirectory
Sintaxe : 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 : SalFileSeek
Sintaxe : bOk = SalFileSeek ( hArquivo , nBytes, nPosicao )
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 : SalFileSetCurrentDirectory
Sintaxe : 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 : SalFileSetDateTime
Sintaxe : 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 : SalFileSetDrive
Sintaxe : 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.
Função : SalFileTell
Sintaxe : 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 : SalFileWrite
Sintaxe : 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 : SalFindWindow
Sintaxe : 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 com
o nome sNome, hWndEncontrado é igual a hWndNULL.
Função : SalFmtFieldToStr
Sintaxe : bOk = SalFmtFieldToStr ( hWndCampo, sValor , bFormato )
Descrição : Copia o conteúdo de um data field ou coluna de uma table window para uma
variá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
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalFmtFormatDateTime
Sintaxe : 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 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 :
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 : SalFmtFormatNumber
Sintaxe : 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 : SalFmtGetFormat
Sintaxe : nFormato = SalFmtGetFormat ( hWndCampo )
Descrição : Retorna a formatação que está sendo utilizada no momento pelo data field ou
coluna 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 :
nFormato é um número que indica o formato do objeto. O Valor de retorno é uma das
seguintes constantes :
Função : SalFmtGetInputMask
Sintaxe : 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 for
inválido, ou se o objeto não possuir uma input mask.
Função : SalFmtGetPicture
Sintaxe : 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.
Função : SalFmtIsValidField
Sintaxe : 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 ou
FMT_Pic_Number.
Valor de Retorno :
bOk é TRUE se o formato for válido e FALSE se não for válido.
Função : SalFmtKeepMask
Sintaxe : bOk = SalFmtKeepMask ( bManter )
Descrição : O Centura, por padrão, retira a formatação de input mask quando você copia o
valor 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
Valor de Retorno :
Retorna o mesmo valor que você especificou em bManter.
Função : SalFmtSetFormat
Sintaxe : 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, a
formataçã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 ser
aplicado 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 formatado
sMascara 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 : SalFmtSetPicture
Sintaxe : 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 :
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 : SalFmtStrToField
Sintaxe : bOk = SalFmtStrToField ( hWndCampo, sValor, bFormato )
Descrição : Copia uma string para um data field ou para uma coluna da table window. Após
copiar 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 o
valor da string não estiver formatado.
Função : SalFmtUnmaskInput
Sintaxe : bOk = SalFmtUnmaskInput ( hWndObj , sConteudo )
Descrição : Tira a máscara do conteúdo de um data field ou coluna da table window e coloca
o 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 : SalFmtValidateField
Sintaxe : 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
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 : SalFontGet
Sintaxe : 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 Receive Number – O melhoramento da fonte.
os
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalFontGetNames
Sintaxe : 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 tela
ou de impressora. Use as constantes FONT_GetPrinter ou
FONT_GetScreen.
sVetorFontes Receive String Array – O nome de um vetor tipo string que terá os nomes
das 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_GetPrinter
ou FONT_GetScreen.
sNomeFonte String – O nome da fonte.
nVetorTamanh Receive Numeric Array – O nome de um vetor numérico que irá conter os
os tamanhos retornados da fonte especificada.
Valor de Retorno :
nQtd é a quantidade de tamanhos de fontes carregadas no vetor.
Função : SalFontSet
Sintaxe : 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.
nMelhoramen Number – O melhoramento da fonte. Para especificar duas ou mais
to contantes 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 : SalFormGetParmNum
Sintaxe : 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ê deseja
obter os valores dos parâmetros.
nParametro Number – especifique aqui o parâmetro desejado.
Utilize as constantes FORM_nFormHeight , FORM_nFormPages ou
FORM_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 : SalFormUnitsToPixels
Sintaxe : nNumPixels = SalFormUnitsToPixels ( hWndObj , nUnidades, bVertical )
Descrição : Converte de form units para pixels. Form units é a unidade utilizada pelas
funçõ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.
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 : SalGetDataType
Sintaxe : 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 table
window. Este valor é uma das constantes pré-definidas DT_DateTime, DT_LongString,
DT_Number ou DT_String.
Função : SalGetDefButton
Sintaxe : 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 um
handle válido ou se o objeto associado ao hWndPai não possuir nenhum pushbutton default.
Função : SalGetFirstChild
Sintaxe : 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 objetos
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 :
Função : SalGetFocus
Sintaxe : 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 : SalGetItemName
Sintaxe : 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 : SalGetMaxDataLength
Sintaxe : 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 definido
como tamanho “Default”.
Função : SalGetNextChild
Sintaxe : hWndProximoFilho = SalGetNextChild ( hWndFilho , nTipo )
Descrição : Retorna o handle do próximo objeto child que combina com a especificação feita
em 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.
Se você quiser que esta função trabalhe também com background text, lines e frames, atribua
TRUE à 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ão
objetos 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 : SalGetProfileInt
Sintaxe : nValor = SalGetProfileInt ( sSeção, sEntrada, nDefault, sNome )
Descrição : Recupera um valor inteiro de uma entrada de seção do registro ou de um arquivo
de 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 caso
de a função não encontrar a entrada.
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 :
Se a função for executada com sucesso, nValor é o valor inteiro de uma entrada na seção
especificada 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 valor
nDefault.
Função : SalGetProfileString
Sintaxe : 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 arquivo
de inicialização.
Parâmetros :
sSeção String – O cabeçalho da seção.
sEntrada String – A entrada que terá o valor recuperado.
Valor de Retorno :
nBytes é o número de bytes copiados para sValor.
Função : SalGetType
Sintaxe : nTipo = SalGetType ( hWnd )
Descrição : Retorna o tipo do objeto.
Para alguns objetos ( como table windows e scroll bar ), SalGetType retorna zero. Não use
SalQueryFieldEdit 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 : SalGetVersion
Sintaxe : 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 o
background text não tiver texto algum.
Função : SalGetWindowLoc
Sintaxe : 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 : SalGetWindowState
Sintaxe : 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 que
ainda 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 seguintes
valores : Window_Invalid, Window_Maximized, Window_Minimized, Window_Normal e
Window_NotVisible.
Função : SalGetWindowText
Sintaxe : 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.
Obs: Para obter o título de uma coluna de uma table window use a função
SalTblGetColumnTitle.
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 : SalHideWindow
Sintaxe : 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 : SalHStringToNumber
Sintaxe : 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 mensagens
enviadas usando SalSendMsg. Não use esta função para strings passadas como parâmetros em
mensagens enviadas usando SalPostMsg.
Observe também que você deve passar um ponteiro string através do parâmetro lParam, uma
vez que o valor excede o limite do parâmetro wParam.
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 : SalIdleKick
Sintaxe : bOk = SalIdleKick ( )
Descrição : Força o processamento de inatividade, normalmente quando um outro programa
envia 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 : SalIdleRegisterWindow
Sintaxe : bOk = SalIdleRegisterWindow( hWndObj , nMsg , nwParam , nlParam )
Descrição : Use esta função para avisar ao Centura que envie uma mensagem ao objeto
especificado 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 a
mensagem.
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 : SalIdleUnregisterWindow
Sintaxe : bOk = SalIdleUnregisterWindow( hWndObj )
Descrição : Use esta função para avisar ao Centura que pare de enviar mensagens ao objeto
especificado.
Parâmetro :
hWndObj Window Handle – O handle do objeto que você, previamente, utilizou como
parâmetro na função SalIdleRegisterWindow.
Valor de Retorno :
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 : SalStrIsValidCurrency
Sintaxe : 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.
Função : SalIsValidDateTime
Sintaxe : 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 valor
nã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 dado
numérico decimal. Para objetos tipo multiline text, o valor numérico decimal deve ser o único
conteú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 valor
não for um decimal válido.
Função : SalIsValidInteger
Sintaxe : bOk = SalIsValidInteger ( hWndCampo )
Descrição : Verifica se o objeto hWndCampo possui um valor válido para o tipo de dado
numérico inteiro. Para objetos tipo multiline text, o valor numérico inteiro 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 inteiro válido e FALSE se
o valor não for um número inteiro válido.
Função : SalIsValidNumber
Sintaxe : bOk = SalIsValidNumber ( hWndCampo )
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 valor
não for um número válido.
Função : SalIsWindowEnabled
Sintaxe : 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 : SalIsWindowVisible
Sintaxe : 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 : SalListAdd
Sintaxe : 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 a
ordenação, no local apropriado. Se a lista não estiver ordenada, o texto é inserido no final da
mesma. 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 :
nNum é o índice onde foi inserido o texto. SalListAdd retorna LB_Err quando um erro
ocorrer, e retorna LB_ErrSpace quando não houver mais memória para armazenar a nova
string.
Função : SalListClear
Sintaxe : bOk = SalListClear ( hWndLista )
Descrição : Apaga todos os elementos presentes numa lista ( list box ou combo box ).
Parâmetro :
hWndLista Window Handle – O handle ou o nome da lista.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a função falhar.
Função : SalListDelete
Sintaxe : nRestante = SalListDelete ( hWndLista , nIndice )
Descrição : Apaga um elemento de uma lista.
Parâmetros :
hWndLista Window Handle – O handle ou o nome da lista.
nIndice Number – o número do elemento a ser apagado.
Valor de Retorno :
nRestante é o número de linhas que restam na lista. SalListDelete retorna LB_Err se algum
erro ocorrer.
Função : SalListFiles
Sintaxe : bOk = SalListFiles ( hWndLista, hWndPath, sPath, nFlags )
Descrição : Carrega num list box ou combo box os nomes dos arquivos de um diretório.
Parâmetros :
hWndLista Window Handle – O handle ou o nome da lista, do combo box ou list box.
hWndPath Window Handle – O handle ou o nome de um data field que mostra o path
dos arquivos carregados na lista.
sPath Receive String - O path dos arquivos carregados na lista.
nFlags Number – O tipo de arquivos a serem carregados. Você pode combinar as
constantes FA_* utilizando 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 : SalListGetMultiSelect
Sintaxe : bOk = SalListGetMultiSelect ( hWndListBox , nSelecionados )
Parâmetros :
hWndListBo Window Handle – O handle ou o nome de um list box.
x
nSelecionado Receive Numeric Array – O nome de um vetor de números que terá os
s índices dos elementos selecionados num list box.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso, e FALSE se hWndListBox ou
nSelecionados forem inválidos, ou se não ouver nenhum elemento selecionado no list box.
Função : SalListInsert
Sintaxe : 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 erro
ocorrer, e retorna LB_ErrSpace quando não houver mais memória para armazenar a nova
string.
Função : SalListPopulate
Sintaxe : 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 conter
variáveis INTO.
Se o comando sSelect for nulo, o Centura utiliza o comando preparado
anteriormente no handle hSql, evitando que o comando seja preparado
novamente.
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.
Função : SalListQueryCount
Sintaxe : 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 retorna
LB_Err se algum erro ocorrer.
Função : SalListQueryFile
Sintaxe : 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 de
arquivo.
Função : SalListQueryMultiCount
Sintaxe : 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 : SalListQuerySelection
Sintaxe : 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 :
nInd é o índice do item selecionado no list box. SalListQuerySelection retorna LB_Err se não
ouver nenhum item selecionado no list box, ou se o list box estiver configurado como
‘multiple-selection’.
Função : SalListQueryState
Sintaxe : bSelecionado = SalListQueryState ( hWndLista, nItem )
Descrição : Determina quando um item específico de um list box ou combo box está ou não
selecionado.
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 estiver
selecionado.
Função : SalListQueryText
Sintaxe : 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 : SalListQueryTextLength
Sintaxe : 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 : SalListQueryTextX
Sintaxe : sTexto = SalListQueryTextX ( hWndLista, nIndice )
Descrição : Obtém o texto de um determinado item de uma lista.
Parâmetros :
Valor de Retorno :
sTexto é o texto referente ao item indexado por nIndice.
Função : SalListRedraw
Sintaxe : 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 handle
nulo.
Função : SalListSelectString
Sintaxe : 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 : SalListSetMultiSelect
Sintaxe : 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.
Função : SalListSetSelect
Sintaxe : 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.
Função : SalListSetTabs
Sintaxe : 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 : SalLoadAppAndWait
Sintaxe : bOk = SalLoadAppAndWait ( sAplicacao , nModo , nRetorno )
Descrição : Inicia uma aplicação e espera que essa aplicação termine sua execução, antes de
retornar 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 ou
Window_NotVisible.
nRetorno Receive Number – Um status retornado pela aplicação que foi invocada, ou
um código de erro do Windows. Observe abaixo a relação dos códigos de
erros do Windows:
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se a aplicação não pôde ser
encontrada ou iniciada.
Função : SalMapEnterToTab
Sintaxe : 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 seu
comportamento 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.
Função : SalMDIArrangeIcons
Sintaxe : 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 : SalMDICascade
Sintaxe : bOk = SalMDICascade ( hWndMDI )
Descrição : Organiza em cascata todas as janelas filhas do mdi que não estiverem
minimizadas.
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 : SalMDITile
Sintaxe : 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 : SalMessageBeep
Sintaxe : bOk = SalMessageBeep ( nNivelAlerta )
Descrição : Emite um som padrão wave, que corresponde a uma mensagem do ambiente
Windows. O usuário pode definir o som, para cada um dos níveis de alerta, no Painel de
Controle.
Parâmetro :
nNivelAlerta Number – O nível do alerta.
0xFFFFFFFF (-1) Beep padrão usando o auto-falante interno do
computador.
Você pode também utilizar as constantes pré-definidas para tal:
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.
Função : SalMessageBox
Sintaxe : nResultado = SalMessageBox ( sTexto, sTitulo, nFlags )
Descrição : Mostra uma caixa de diálogo e retorna um número indicando a resposta do
usuá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ões
2. 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 : SalModalDialog
Sintaxe : 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ê usar
uma 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 desabilitam
todo 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 do
mesmo. No entanto, você pode inicializar parâmetros tipo receive apenas com variáveis. Isso
significa 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.
Param1 Parâmetros opcionais, podem ser de qualquer tipo de dados do Centura.
Param2
Valor de Retorno :
nRetorno é o valor especificado na função SalEndDialog.
Função : SalModalDialogFromStr
Sintaxe : 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 desabilitam
todo 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 : SalMoveWindow
Sintaxe : 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 handle
nulo.
Função : SalMTSCreateInstance
Sintaxe : bOk = SalMTSCreateInstance ( oObjeto )
Descrição : Cria um novo componente. Dependendo das configurações da transação, o novo
componente poderá participar da transação atual, iniciar uma nova transação ou não suportar a
transação.
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.
Função: SalMTSDisableCommit
Sintaxe: 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( ) ou
SalMTSSetComplete( ).
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: SalMTSEnableCommit
Sintaxe: bOk = SalMTSEnableCommit ( )
Descrição: Indica que as atividades do objeto ainda não terminaram, mas que as atualizações
transacionais podem ser efetuadas no objeto pai, objeto que iniciou a transação.
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: SalMTSGetObjectContext
Sintaxe: 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
Parâmetros:
sRegra Number - O contexto do objeto atual.
bEsta Receive Boolean - Será TRUE caso o ativador do objeto seja membro da
regra especificada.
Valor de Retorno :
bOk é TRUE se a regra especificada em sRegra for identificada como uma regra registrada e
FALSE caso contrário.
Função: SalMTSIsInTransaction
Sintaxe: 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: SalMTSIsSecurityEnabled
Sintaxe: bOk = SalMTSIsSecurityEnabled ( bSegHabilitada )
Descrição: Verifica o status da segurança. Se o objeto estiver sendo executado no processo do
cliente, não há verificação de segurança, nesse caso SalMTSIsSecurityEnabled sempre retorna
FALSE.
Para componentes não registrados no MTS esta função sempre retorna FALSE.
Parâmetro:
bSegHabilita Receive Boolean - Será TRUE se a segurança estiver habilitada.
da
Valor de Retorno:
bOk é TRUE se o a segurança estiver habilitada para o componente e FALSE caso contrário.
Função: SalMTSSetAbort
Sintaxe: bOk = SalMTSSetAbort ( )
Descrição: Use esta função para informar que a transação não pode ser aplicada (rollback). A
transação inteira é cancelada. O objeto é 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: SalMTSSetComplete
Sintaxe: bOk = SalMTSSetComplete ( )
Descrição: Use esta função para informar que a transação pode ser aplicada (commit). O
objeto é 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 : SalNumberAbs
Sintaxe : 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 : SalNumberArcCos
Sintaxe : 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 : SalNumberArcSin
Sintaxe : nSeno = SalNumberArcSin ( nValor )
Descrição : Calcula o seno de um valor entre o intervalo de 0 a 1.
Parâmetro :
nValor Number - O número cujo arco seno você deseja.
Valor de Retorno :
nCos é o arco seno de nValor.
Função : SalNumberArcTan
Sintaxe : 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 : SalNumberArcTan2
Sintaxe : 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 : SalNumberCos
Sintaxe : 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 : SalNumberCosH
Sintaxe : nValor = SalNumberCosH ( nAngulo )
Descrição : Calcula o coseno hiperbólico de um ângulo. Você deve especificar o ângulo em
radianos.
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 : SalNumberExponent
Sintaxe : 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 : SalNumberHigh
Sintaxe : 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 : SalNumberHypot
Sintaxe : nHypotenuse = SalNumberHypot ( nX, nY )
Descrição : Computes the length of the hypotenuse of a right triangle, given the lengths of the
other 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 the
hypotenuse results in an overflow, nHypotenuse is equal to zero (0).
Função : SalNumberLog
Sintaxe : nLog = SalNumberLog ( nValor )
Descrição : Calcula o logarítimo natural de um número.
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 : SalNumberLogBase10
Sintaxe : 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úmero
negativo, nValor é igual a 0 (zero).
Função : SalNumberLow
Sintaxe : 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 Centura
trata nValor como um número de 32-bits sem sinal.
Valor de Retorno :
nNum é o valor low-order obtido.
Função : SalNumberMax
Sintaxe : 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 : SalNumberMin
Sintaxe : 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
Parâmetros :
nValor Number – É o número que será multiplicado por Pi.
Valor de Retorno :
nNumPi é nValor multiplicado por Pi.
Função : SalNumberPower
Sintaxe : 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 usando
SalNumberRandom.
Use SalNumberRandInit quando você quiser gerar o mesmo conjunto de números aleatórios
vá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 : SalNumberRandom
Sintaxe : nNum = SalNumberRandom ( )
Descrição : Gera um número aleatório. Os números gerados pela função SalNumberRandom
sã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 : SalNumberRound
Sintaxe : 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úmero
acima. 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.
Valor de Retorno :
nResultado é o nNum arredondado.
Função : SalNumberSin
Sintaxe : 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 : SalNumberSinH
Sintaxe : nSeno = SalNumberSinH ( nAngulo )
Descrição : Calcula o seno hiperbólico de um ângulo. Você deve especificar o ângulo em
radianos.
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 : SalNumberSqrt
Sintaxe : 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á fora
do domínio de números válidos e nRaiz é igual a zero (0).
Função : SalNumberTan
Sintaxe : 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 )
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.
Função : SalNumberToChar
Sintaxe : 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 : SalNumberToHString
Sintaxe : 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 : SalNumberToStr
Sintaxe : 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 : SalNumberToStrX
Sintaxe : 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 : SalNumberToWindowHandle
Sintaxe : hWndConv = SalNumberToWindowHandle ( nWnd )
Parâmetro :
nWnd Number – O número que será convertido.
Valor de Retorno :
hWndConv é o window handle convertido de nWnd.
Função : SalNumberTruncate
Sintaxe : 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 : SalParentWindow
Sintaxe : 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 : SalPicClear
Sintaxe : 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 : SalPicGetDescription
Sintaxe : 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.
Função : SalPicGetImage
Sintaxe : 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 ou
PIC_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 : SalPicGetString
Sintaxe : 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 : SalPicSet
Sintaxe : 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
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalPicSetFile
Sintaxe : 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.
sNomeArqui String – O nome do arquivo cujo conteúdo será inserido na picture
vo hWndPic.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalPicSetFit
Sintaxe : 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 : SalPicSetImage
Sintaxe : nTam = SalPicSetImage ( hWndPicture , sPicture , nTipo )
Descrição : Insere o conteúdo de uma picture numa imagem, sem o cabeçalho padrão de
imagens 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,
PIC_ImageTypeICON,
PIC_ImageTypeWMF,
PIC_ImageTypeTIFF,
PIC_ImageTypePCX,
PIC_ImageTypeGIF,
PIC_ImageTypeJPEG ou
PIC_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 : SalPicSetHandle
Sintaxe : 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 partir
de 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: SalPicSetImage
Sintaxe: bOk = SalPicSetImage ( hWndPicture , sImagem, nTipo )
Descrição: Insere o conteúdo de uma string num objeto tipo picture sem o header de imagens
do 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 : SalPicSetString
Sintaxe : bOk = SalPicSetString ( hWndPic , nFormato , sPicture )
Descrição : Insere o conteúdo de uma string numa picture.
Parâmetros :
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalPixelsToFormUnits
Sintaxe : 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 pixels
corresponder 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 se
algum erro ocorrer.
Função : SalPostMsg
Sintaxe : bOk = SalPostMsg ( hWndObj , nMensagem , nwParam , nlParam )
Descrição : Envia uma mensagem para um determinado objeto, e coloca nMensagem na lista
de 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 : SalPrtExtractRect
Sintaxe : 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.
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 : SalPrtGetDefault
Sintaxe : 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ão
um conjunto de variáveis globais, inicializadas com valores padronizados. Podem ser
alterados utilizando-se a função SalPrtSetParmNum, recuperados com a função
SalPrtGetParmNum 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 ou
PRT_nToPage.
nValor Receive Number – o valor do parâmetro de impressão. Para valores lógicos
este parâmetro é TRUE ou FALSE.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalPrtPrintForm
Sintaxe : 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 form
window 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 melhores
resultados, utilize as fontes suportadas pela sua impressora.
Se o objeto for maior do que o tamanho do papel, será impresso em tantas páginas quanto
forem 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 : SalPrtSetDefault
Sintaxe : 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 : SalPrtSetParmDefaults
Sintaxe : bOk = SalPrtSetParmDefaults ( )
Descrição : Reinicia os parâmetros de impressão para os seus valores default.
Número de cópias : 1
Imprime em modo rascunho : FALSE
Imprime todas as páginas : TRUE
Página inicial : 1
Página final : 1
Margem esquerda : 0
Margem direita : 0
Desenha um retângulo ao redor do form impresso : FALSE
Nenhum Parâmetro.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalPrtSetParmNum
Sintaxe : bOk = SalPrtSetParmNum ( nParametro , nValor )
Descrição : Define o valor de um parâmetro de impressão. Os parâmetros de impressão são
um conjunto de variáveis globais, inicializadas com valores padronizados. Podem ser
alterados utilizando-se a função SalPrtSetParmNum, recuperados com a função
SalPrtGetParmNum 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 ou
PRT_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 : SalPrtSetup
Sintaxe : bOk = SalPrtSetup ( sDispositivo , sDriver , sPorta, bMostrar )
Descrição : Mostra na tela o dialog box de configuração de impressão. Inicialmente, a
impressora padrão é mostrada, permitindo ao usuário alterá-la. SalPrtSetup retorna as opções
selecionadas 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 a
impressora ativa.
Se TRUE todas as impressoras são mostradas, se FALSE, apenas a
impressora default é mostrada.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalQueryFieldEdit
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 ) a
função SalGetType retorna zero. Não utilize SalQueryFieldEdit com objetos onde SalGetType
retorne 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 : SalQuit
Sintaxe : 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 : SalReportClose
Sintaxe : bOk = SalReportClose ( hWndRelatorio )
Descrição : Encerra o relatório. Utilize esta função quando você quiser fechar uma janela de
visualização de relatório.
Parâmetro :
hWndRelator Window Handle – O handle ou o nome de uma janela de visualização de
io relatório.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalReportCmd
Parâmetros :
hWndRelator Window Handle – O handle ou o nome da janela do relatório.
io
nComando Number – O comando que será enviado para o relatório. Os comandos
disponíveis são:
RPT_CmdFirstPage,
RPT_CmdGotoPage,
RPT_CmdLastPage,
RPT_CmdNextPage,
RPT_CmdPrevPage,
RPT_CmdPrint,
RPT_CmdPrinterSetup,
RPT_CmdSizeAtual e
RPT_CmdSizeFit.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalReportCreate
Sintaxe : 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 das
variá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.
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 (run
mode), sempre é mostrado um dialog box com a explicação do erro que
ocorrer. No caso de estar executando a aplicação através do executável, o
dialog box de erros é mostrado apenas se este parâmetro for igual a 1.
Valor de Retorno :
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 sendo
impresso. Use esta função após criar o relatório, mas antes de começar a imprimir.
Parâmetros :
hWndRelator Window Handle – O handle do relatório.
io
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 : SalReportGetDateTimeVar
Sintaxe : bOk = SalReportGetDateTimeVar ( hWndRelatorio , sVariavel , dtValor )
Descrição : Obtém o valor de uma variável do relatório, tipo date/time.
Parâmetros :
hWndRelator Window Handle – O handle ou o nome de uma janela de impressão de
io relató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 : SalReportGetNumberVar
Sintaxe : bOk = SalReportGetNumberVar ( hWndRelatorio, sVariavel, nValor )
Descrição : Obtém o valor de uma variável do relatório, tipo number.
Parâmetros :
hWndRelator Window Handle – O handle ou o nome de uma janela de impressão de
io relató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.
Função : SalReportGetObjectVar
Sintaxe : bOk = SalReportGetObjectVar ( hWndRelatorio , sVariavel, sValor )
Descrição : Obtém o valor de uma variável do relatório, tipo objeto.
Parâmetros :
hWndRelator Window Handle – O handle ou o nome de uma janela de impressão de
io relató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 Window Handle – O handle ou o nome de uma janela de impressão de
io relató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 : SalReportPrint
Sintaxe : 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 Builder
automaticamente é fechado.
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.
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 : SalReportPrintToFile
Sintaxe : 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
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 : SalReportReset
Sintaxe : bOk = SalReportReset ( hWndRelatorio )
Descrição : Recarrega uma janela de relatório. Esta função envia novamente a mensagem
SAM_ReportFetchInit, e uma ou mais mensagens SAM_ReportFetchNext para que o
relatório seja re-processado com novas informações.
Parâmetro :
hWndRelator Window Handle – O handle do relatório.
io
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalReportSetDateTimeVar
Sintaxe : bOk = SalReportSetDateTimeVar ( hWndRelatorio, sVariavel, dtValor )
Descrição : Atribui um valor a uma variável tipo date/time, definida no layout de relatório.
Parâmetros :
hWndRelator Window Handle – O handle do relatório.
io
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 : SalReportSetNumberVar
Sintaxe : 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 Window Handle – O handle do relatório.
io
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 Window Handle – O handle do relatório.
io
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 : SalReportSetStringVar
Sintaxe : 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 Window Handle – O handle do relatório.
io
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 : SalReportTableCreate
Sintaxe : bOk = SalReportTableCreate ( sQrp, hWndTabela, nErro )
Descrição : Cria um arquivo de formato de relatório, baseado numa table window. Os nomes
das colunas da tabela serão os nomes dos itens de entrada (input itens) do relatório e os títulos
das colunas serão os mesmos das colunas do relatório. Para table window do tipo top level, o
tí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 : SalReportTablePrint
Sintaxe : 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 e
RPT_PrintParamOptions.
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 :
hWndRelatorio é o handle do relatório gerado.
Função : SalReportTableView
Sintaxe : 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 :
Valor de Retorno :
hWndRelatorio é o handle do relatório gerado.
Função : SalReportView
Sintaxe : hWndRelatorio = SalReportView ( hWndFrm, hWnd, sQrp, sVariaveis, sInputs,
nFlags )
Descrição : Mostra um relatório em modo de preview.
Parâmetros :
hWndFrm 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.
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 das
variá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.
nFlags Receive Number – Antes de chamar esta função, você pode atribuir a este
parâmetro uma das constantes abaixo, para configurar algumas
caracteristicas 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.
Função : SalScrollGetPos
Sintaxe : 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 : SalScrollGetRange
Sintaxe : 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 : SalScrollSetPos
Sintaxe : bOk = SalScrollSetPos ( hWnd, nPosicao )
Descrição : Define a posição da barra de scroll. Esta função é equivalente a atribuir um
determinado 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 acima
do maior valor, respectivamente.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalScrollSetRange
Sintaxe : bOk = SalScrollSetRange ( hWnd, nMin, nMax, nLinha, nPag )
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalSendClassMessage
Sintaxe : nRetorno = SalSendClassMessage ( nMensagem, wParam, lParam )
Descrição : Ativa o código que foi implementado, ou herdado, no message actions de um
objeto 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 : SalSendClassMessageNamed
Sintaxe : nRetorno = SalSendClassMessageNamed ( NomeClasse, nMensagem, wParam,
lParam )
Descrição : Ativa o código que foi implementado, ou herdado, no message actions de um
objeto da classe.
Utilize esta função quando uma classe for o resultado de uma herança múltipla e você quiser
especificar 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 chamada
está 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.
Valor de Retorno :
nRetorno é o valor retornado pela mensagem. Se a mensagem não retornar nenhum valor
nRetorno é zero.
Função : SalSendMsg
Sintaxe : 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 mensagem
terminarem.
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 : SalSendMsgToChildren
Sintaxe : 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 : SalSendValidateMsg
Sintaxe : 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 um
menu. O Centura não envia automaticamente aos objetos a mensagem SAM_Validate quando
um menu é acionado.
Nenhum Parâmetro.
Valor de Retorno :
nStatus pode ser um dos valores VALIDATE_Cancel, VALIDATE_Ok ou
VALIDATE_OkClearFlag.
Função : SalSetDefButton
Sintaxe : 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 : SalSetFieldEdit
Sintaxe : 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 comando
de 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 : SalSetFocus
Sintaxe : 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 : SalSetMaxDataLength
Sintaxe : bOk = SalSetMaxDataLength ( hWndCampo , nTamanho )
Descrição : Configura a quantidade limite de caracteres que podem ser armazenados num
data field, multiline text ou coluna da table window.
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 : SalSetProfileString
Sintaxe : bOk = SalSetProfileString ( sSeção, sEntrada, sValor, sArquivo)
Descrição : Define o valor de uma entrada de uma seção específica num arquivo de
inicialização ou no registro do windows. Todos os valores armazenados devem estar em
formato 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. Caso
você esteja utilizando um arquivo de inicialização e não tenha especificado
o path completo, o Centura pesquisa pelo arquivo no subdiretório do
Windows.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalSetWindowLabelText
Sintaxe : bOk = SalSetWindowLabelText ( hWnd, sTexto )
Descrição : Define um background text de um objeto. Para ser associado a um objeto, o
background 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 : SalSetWindowLoc
Sintaxe : 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 ).
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalSetWindowSize
Sintaxe : 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 : SalSetWindowText
Sintaxe : 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 estiver
configurado para não permitir edições, o Centura procura na lista de valores um valor que
corresponda ao texto, selecionando-o, caso encontre. Este mesmo comportamento se aplica
aos objetos do tipo list box.
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 : SalShowWindow
Sintaxe : bOk = SalShowWindow ( hWnd )
Descrição : Torna um objeto visível.
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 é FALSE
se o estado era invisível.
Função : SalShowWindowAndLabel
Sintaxe : 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 é FALSE
se o estado era invisível.
Função : SalStatusGetText
Sintaxe : 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 objeto
não possui texto algum.
Função : SalStatusSetText
Sintaxe : bOk = SalStatusSetText ( hWnd, sTexto )
Descrição : Apresenta um determinado texto na barra de status de um form window ou de um
mdi.
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 : SalStatusSetVisible
Sintaxe : bOk = SalStatusSetVisible ( hWnd, bMostra )
Descrição : Mostra e esconde a barra de status de um form window ou de um mdi.
Parâmetros :
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalStrCompress
Sintaxe : bOk = SalStrCompress ( sString )
Descrição : Comprime uma determinada string. Use esta função para comprimir strings para
armazenamento em disco ou em bancos de dados. Use, também, para armazenamento de
imagens.
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 : SalStrFirstC
Sintaxe : 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 : SalStrGetBufferLength
Sintaxe : 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 : SalStrIsValidDateTime
Sintaxe : bOk = SalStrIsValidDateTime ( sDataHora )
Descrição : Verifica se a string representa um valor date/time válido.
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 um
valor válido do tipo date/time.
Função : SalStrIsValidNumber
Sintaxe : bOk = SalStrIsValidNumber ( sNumero )
Descrição : Verifica se o conteúdo de uma variável string representa um valor numérico
vá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 : SalStrLeft
Sintaxe : 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.
Função : SalStrLength
Sintaxe : 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 : SalStrLop
Sintaxe : nCaractere = SalStrLop ( sString )
Descrição : Retorna o valor numérico decimal, padrão ASCII, do primeiro caractere de uma
string, 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 : SalStrLower
Sintaxe : 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 : SalStrLowerX
Sintaxe : 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.
Função : SalStrMid
Sintaxe : nTamanho = SalStrMid ( sOrigem , nPosInicial, nQtdCarac, sDestino )
Descrição : Retorna uma parte da string original, iniciando na posição nPosInicial, contendo o
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ção
zero.
sDestino Receive String – É a porção que foi retirada da string original.
Valor de Retorno :
nTamanho é o tamanho da string obtida.
Função : SalStrMidX
Sintaxe : sDestino = SalStrMidX ( sOrigem , nPosInicial, nQtdCarac )
Descrição : Retorna uma parte da string original, iniciando na posição nPosInicial, contendo
o 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ção
zero.
Valor de Retorno :
sDestino é a porção que foi retirada da string original.
Função : SalStrProper
Sintaxe : nTamanho = SalStrProper ( sOrigem, sDestino )
Descrição : Converte uma string, de modo que todas as palavras iniciem por letras
maiú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 : SalStrProperX
Sintaxe : sDestino = SalStrProperX ( sOrigem )
Descrição : Converte uma string, de modo que todas as palavras iniciem por letras
maiúsculas.
Parâmetro :
sOrigem String – A string a ser convertida.
Valor de Retorno :
sDestino é a string já convertida.
Função : SalStrRepeat
Sintaxe : 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 : SalStrRepeatX
Sintaxe : 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 : SalStrReplaceX
Sintaxe : 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.
sTroca String – A string nova, que será inserida a partir da posição em nPosInicial.
Valor de Retorno :
sDestino é a nova string.
Função : SalStrRight
Sintaxe : nTamanho = SalStrRight ( sOrigem , nNumCarac, sDestino )
Descrição : Obtém uma string de um determinado tamanho, começando com o último
caractere 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 último
caractere 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 : SalStrScan
Sintaxe : nPosInicial = SalStrScan ( sOrigem, sBuscar )
Descrição : Pesquisa por sBuscar em sOrigem e retorna a primeira posição onde sBuscar foi
encontrada.
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ão
encontrá-la, nPosInicial será –1.
Função : SalStrSetBufferLength
Sintaxe : bOk = SalStrSetBufferLength ( sString, nTamanho )
Descrição : Define o tamanho do buffer de uma variável string. Este procedimento só se faz
necessário quando precisamos utilizar uma variável tipo Receive String junto com uma
função externa.
Parâmetros :
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.
Função : SalStrToDate
Sintaxe : dtData = SalStrToDate ( sValorData )
Descrição : Converte uma string em um valor tipo Date/Time. Esta função utiliza o formato
de 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 : SalStrTokenize
Sintaxe : 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 : SalStrToNumber
Sintaxe : 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 : SalStrTrim
Sintaxe : nNovoTamanho = SalStrTrim ( sOrigem, sDestino )
Descrição : Elimina os espaços encontrados no início e no final da variável string. Os espaços
duplos 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.
Valor de Retorno :
nNovoTamanho é o tamanho da string sDestino.
Função : SalStrTrimX
Sintaxe : sDestino = SalStrTrimX ( sOrigem )
Descrição : Elimina os espaços encontrados no início e no final da variável string. Os espaços
duplos 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 : SalStrUncompress
Sintaxe : 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 : SalStrUpper
Sintaxe : 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 : SalTBarSetVisible
Sintaxe : bOk = SalTBarSetVisible ( hWnd, bVisivel )
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 para
esconder.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTblAnyRows
Sintaxe : 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 ser
utilizados são representados pelas constantes ROW_*
nFlagsOff Number – Os flags que a linha não deverá ter. Você pode combinar mais de
um flag usando o operador OR (|) para concatená-los. Os flags que podem
ser 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 se
não tiver nenhuma linha com os flags em nFlagsOff.
Função : SalTblClearSelection
Sintaxe : 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 : SalTblColumnAverage
Sintaxe : nMedia = SalTblColumnAverage ( hWndTabela , nNumColuna, nFlagsOn,
nFlagsOff )
Descrição : Calcula a média 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 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 ser
utilizados são representados pelas constantes ROW_*
nFlagsOff Number – Os flags que a linha não deverá ter. Você pode combinar mais de
um flag usando o operador OR (|) para concatená-los. Os flags que podem
ser utilizados são representados pelas constantes ROW_*
Valor de Retorno :
nMedia é a média de todos os valores das colunas de uma table window ou apenas da coluna
especificada. Se algum erro ocorrer, nMedia será igual a zero.
Função : SalTblColumnSum
Sintaxe : 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 ser
utilizados são representados pelas constantes ROW_*
nFlagsOff Number – Os flags que a linha não deverá ter. Você pode combinar mais de
um flag usando o operador OR (|) para concatená-los. Os flags que podem
ser 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 coluna
especificada. Se algum erro ocorrer, nSoma será igual a zero.
Função : SalTblCopyRows
Sintaxe : 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 as
linhas pelo caractere de fim de linha.
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 ser
utilizados são representados pelas constantes ROW_*
nFlagsOff Number – Os flags que a linha não deverá ter. Você pode combinar mais de
um flag usando o operador OR (|) para concatená-los. Os flags que podem
ser 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 e
FALSE se nenhuma linha foi copiada, ou se alguma linha não pôde ser copiada para a área de
transferência.
Função : SalTblCreateColumn
Sintaxe : 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.
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 ). O
cabeçalho da linha é a área não editável situada à esquerda da table window, que é usada
normalmente para mostrar informações sobre o estado da linha. Pode ser também usado para
mostrar 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 estes
flags utilizando o operador OR ( | ). Entre os possíveis valores para o flag
estão : TBL_RowHdr_MarkEdits, TBL_RowHdr_ShareColor,
TBL_RowHdr_Sizable ou TBL_RowHdr_Visible.
hWndColuna Window Handle – Opcionalmente, o cabeçalho da linha pode mostrar
informações de alguma coluna da table window, então, você pode informar
neste parâmetro o handle da coluna. Caso informe hWndNULL, a coluna do
cabeçalho da linha ficará vazia.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTblDefineSplitWindow
Sintaxe : 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ão
se 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.
nLinhas Number – O número de linhas que a nova área dividida da table window
terá.
bDimensiona Boolean – Se você informar TRUE, o usuário poderá redimensionar o
vel tamanho 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 : SalTblDeleteRow
Sintaxe : 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ê especificar
TBL_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.
Função : SalTblDeleteSelected
Sintaxe : 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 garantir
que 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 : SalTblDestroyColumns
Sintaxe : bOk = SalTblDestroyColumns ( hWndTabela )
Descrição : Esta função destrói todas as colunas que foram criadas automaticamente, através
da função SalTblCreateColumn, e as colunas criadas em tempo de execução pela função
SalTblPopulate. Funciona apenas nas table window que possuem apenas colunas criadas
dinamicamente.
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 colunas
criadas em tempo de design, ou se o handle informado for inválido.
Função : SalTblDoDeletes
Sintaxe : 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, 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ê deve executá-lo para garantir
que 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
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.
Função : SalTblDoInserts
Sintaxe : bOk = SalTblDoInserts ( hWndTabela , hSql , bLimparFlags )
Descrição : Executa um comando SQL INSERT para todas as linhas da table window que
tiverem 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 garantir
que 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 de
cada linha inserida no banco de dados. Se você especificar FALSE o
Centura 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 o
handle sql forem inválidos.
Função : SalTblDoUpdates
Sintaxe : bOk = SalTblDoUpdates ( hWndTabela , hSql , bLimparFlags )
Descrição : Executa um comando SQL UPDATE para todas as linhas da table window que
tiverem o flag ROW_Edited ligados. O comando UPDATE deverá ser preparado antes de
utilizar 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_Edited
de cada linha inserida no banco de dados. Se você especificar FALSE, o
Centura não limpa o flag.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso, e FALSE se falhar.
Função : SalTblFetchRow
Sintaxe : nResultado = SalTblFetchRow ( hWndTabela , nLinha )
Descrição : Se a linha especificada em nLinha não estiver no cache da table window, o
Centura envia uma mensagem SAM_FetchRow para a table window, permitindo que a linha
seja 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.
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.
Função : SalTblFindNextRow
Sintaxe : bOk = SalTblFindNextRow ( hWndTabela , nLinha , nFlagsOn , nFlagsOff )
Descrição : A partir da linha especificada, pesquisa por uma linha que atenda as
configuraçõ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 em
nFlagsOff.
Utilize esta função num loop ( comandos While e Loop... ) para encontrar todas as linhas que
satisfaç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 em
nLinha.
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âmetro
tipo 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 uma
linha, 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 for
encontrada.
Função : SalTblFindPrevRow
Sintaxe : bOk = SalTblFindPrevRow ( hWndTabela , nLinha , nFlagsOn , nFlagsOff )
Descrição : A partir da linha especificada, pesquisa em ordem decrescente, por uma linha que
atenda as configuraçõ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 em
nFlagsOff.
Utilize esta função num loop (comandos While , Loop... ) para encontrar todas as linhas que
satisfaçam a condição especificada.
Você não precisa decrementar o número da linha, o Centura continua a pesquisa iniciando na
linha 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 :
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se nenhuma linha for
encontrada.
Função : SalTblGetColumnText
Sintaxe : bOk = SalTblGetColumnText ( hWndTabela , nColuna , sTexto )
Descrição : Recupera os dados contidos numa coluna da table window. Será recuperado o
valor 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 : SalTblGetColumnWindow
Sintaxe : 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íveis
valores são COL_GetID e COL_GetPos.
Valor de Retorno :
hWndColuna é o handle da coluna recuperada. hWndColuna é hWndNULL, se o Centura não
conseguir encontrar a coluna.
Função : SalTblInsertRow
Sintaxe : nNovaLinha = SalTblInsertRow ( hWndTabela , nLinha )
Descrição : Inclui uma linha em branco numa table window.
Parâmetros :
Valor de Retorno :
nNovaLinha é o número da nova linha, se a função for executada com sucesso. Será igual a
TBL_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 receba
as 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 : SalTblKillFocus
Sintaxe : 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 : SalTblObjectsFromPoint
Sintaxe : 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.
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 a
coordenada X está localizada.
Pode ser uma das seguintes constantes :
TBL_XOverLockedColumns
TBL_XOverLockedColumnsBorder
TBL_XOverRowHeader
TBL_XOverUnlockedColumns
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso, e FALSE se falhar.
Função : SalTblPasteRows
Sintaxe : 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, sem
sobrepor as linhas já existentes, e converte aos tipos de dados correspondentes às colunas da
table 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 : SalTblPopulate
Sintaxe : bOk = SalTblPopulate ( hWndTabela , hSql, sSelect, nMetodo )
Descrição : Compila e executa um comando SELECT, recupera as linhas do result set e
carrega-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 as
colunas em tempo de execução, baseado na lista de colunas do comando SELECT, utilizando
os tipos de dados e os nomes das colunas, como títulos das colunas. Se você chamar a função
SalTblPopulate novamente, durante a mesma seção, o Centura destruirá as colunas criadas
automaticamente pelo último comando SELECT executado e criará novas colunas.
A função SalTblPopulate também trabalha com comandos SELECT que não possuem a
cláusula INTO. A table window precisa ter o mesmo número de colunas do comando
SELECT, 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 em
hSql. Com isto, evita-se a necessidade de reprocessar o mesmo comando
SELECT a cada chamada desta função.
nMetodo Number – O modo como a table window será populada. Especifique um dos
valores:
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 result
set 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 parte
visível da table window. O restante só é carregado quando o usuário
solicitar, 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 o
handle sql, forem inválidos.
Função : SalTblQueryColumnFlags
Sintaxe : 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 nenhum
dos flags indicados em nFlags estiver ativo.
Função : SalTblQueryColumnID
Sintaxe : nColID = SalTblQueryColumnID ( hWndColuna )
Descrição : Obtém o identificador de uma coluna de uma table window. A posição da coluna
no outline.
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 : SalTblQueryColumnPos
Sintaxe : 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 : SalTblQueryColumnWidth
Sintaxe : 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 : SalTblQueryContext
Sintaxe : nLinha = SalTblQueryContext ( hWndTabela )
Descrição : Retorna a linha com o contexto numa table window. Esta, normalmente, é a linha
que 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 : SalTblQueryFocus
Sintaxe : 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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTblQueryLinesPerRow
Sintaxe : bOk = SalTblQueryLinesPerRow ( hWndTabela , nLinhas )
Descrição : Obtém a altura em linhas das linhas da table window. Com a função
SalTblSetLinesPerRow você pode definir a altura das linhas da table window, essa altura é a
expressa 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 table
window.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTblQueryLockedColumns
Sintaxe : nNum = SalTblQueryLockedColumns ( hWndTabela )
Descrição : Obtém o número de colunas travadas de uma table window. As colunas travadas
nã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 : SalTblQueryRowFlags
Sintaxe : 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.
Função : SalTblQueryRowHeader
Sintaxe : 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 ou
TBL_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 : SalTblQueryScroll
Sintaxe : 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 Centura
muda 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 : SalTblQuerySplitWindow
Sintaxe : 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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTblQueryTableFlags
Sintaxe : 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 : SalTblQueryVisibleRange
Sintaxe : 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 : SalTblReset
Sintaxe : bOk = SalTblReset ( hWndTabela )
Descrição : Limpa uma table window, descartando todas as linhas contidas no seu cache, e
redefinindo 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.
Função : SalTblScroll
Sintaxe : 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 ou
TBL_ScrollTop.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se o número da linha, ou o
handle da coluna, forem inválidos.
Função : SalTblSetCellTextColor
Sintaxe : 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, tomando
como 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 os
dados serem lidos novamente para a table window. Se você usar TRUE, o
Centura 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 ao
Centura 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 : SalTblSetColumnFlags
Sintaxe : 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.
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 ).
Função : SalTblSetColumnPos
Sintaxe : 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 : SalTblSetColumnText
Sintaxe : 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 : SalTblSetColumnTitle
Sintaxe : 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 : SalTblSetColumnWidth
Sintaxe : 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.
Função : SalTblSetContext
Sintaxe : 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 : SalTblSetFlagsAnyRows
Sintaxe : 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 e
nFlagsOff, especificando todas as linhas.
nFlagsOff Number – Os flags que a linha não deverá ter. Seus valores poderão ser
combinados, utilizando o operador OR ( | ). Atribua zero para nFlagsOn e
nFlagsOff, especificando todas as linhas.
Valor de Retorno :
bLinha é TRUE se alguma linha da table window tem algum dos flags especificados em
nFlagsOn, e se se não tiver nenhum dos flags em nFlagsOff.
Função : SalTblSetFocusCell
Sintaxe : bOk = SalTblSetFocusCell ( hWndTabela , nLinha , hWndColuna , nEditarMin ,
nEditarMax )
Descrição : Move o foco para uma célula ( coluna e linha ) específica da table window. O
Centura coloca a table window em modo de edição e permite ao usuário selecionar uma parte
da 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.
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 usado
com 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.
Função : SalTblSetFocusRow
Sintaxe : 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 : SalTblSetLinesPerRow
Sintaxe : 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ção
SalTblSetColumnFlags 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 : SalTblSetLockedColumns
Sintaxe : bOk = SalTblSetLockedColumns ( hWndTabela , nNumColunas )
Descrição : Define o número de colunas travadas de uma tabela. As colunas que você travar
não serão afetadas pelas barras de rolagem horizontal da table window, ou seja, não serão
roladas para a esquerda assim como as demais colunas.
Parâmetros :
hWndTabela Window Handle – O handle ou o nome da table window.
nNumColuna Number – O número de colunas a travar. Se você especificar zero, as
s colunas que por acaso estejam travadas, são destravadas. Especifique 1 para
travar 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 : SalTblSetRange
Sintaxe : bOk = SalTblSetRange ( hWndTabela , nMin , nMax )
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 : SalTblSetRow
Sintaxe : nLinha = SalTblSetRow ( hWndTabela , nLinha )
Descrição : Posiciona o foco na primeira, anterior, próxima ou na última linha de uma table
window.
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 ou
TBL_SetPrevRow.
Valor de Retorno :
nLinha é o número da linha onde o foco foi posicionado.
Função : SalTblSetRowFlags
Sintaxe : 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 : SalTblSetTableFlags
Sintaxe : bOk = SalTblSetTableFlags ( hWndTabela , nFlags , bLigar )
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 flags
TBL_* 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 : SalTblSortRows
Sintaxe : bOk = SalTblSortRows ( hWndTabela , nColuna , nOrdem )
Descrição : Classifica as linhas de uma table window, baseado nos valores de uma de suas
colunas. Você precisa criar esta coluna em tempo de design, desde que não seja através das
funções SalTblPopulate ou SalTblCreateColumn.
Importante: O cache da table window não pode ser descartável, e a configuração do número
máximo de linhas na memória deve ser grande o suficiente para suportar as linhas, enquanto
sã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 : SalTimerKill
Sintaxe : 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 limitados
aos 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 :
bOk é TRUE se a função for executada com sucesso e FALSE se o timer não pode ser
encontrado.
Função : SalTimerSet
Sintaxe : bOk = SalTimerSet ( hWnd , nEvento, nMilesimosSeg )
Descrição : Cria um timer para um determinado objeto. Quando um evento temporário
ocorre, o Centura envia ao objeto uma mensagem SAM_Timer.
Observe que timers estão limitados aos 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 evento temporário a ser criado.
nMilesimosS Number – O intervalo de tempo entre as mensagens SAM_Timer.
eg O valor máximo para este parâmetro é 65535 (aproximadamente 65
segundos).
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalTrackPopupMenu
Sintaxe : 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.
sNomeMen String – O nome de um named menu que precisa estar definido em um destes
u trê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ão
esquerdo.
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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalUpdateWindow
Sintaxe : 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 a
mensagem 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ê achar
que o objeto está demorando muito para ser desenhado pelo Windows, você pode forçar o
Centura 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 : SalUseRegistry
Sintaxe : bOk = SalUseRegistry ( bUsarRegistro , sNomeEmpresa )
Descrição : Esta função é utilizada para redirecionar todas as funções SalProfile* para o
registro 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>\<configu
ração>\
Parâmetros :
bUsarRegistr Boolean – Se TRUE o registro será utilizado. Se FALSE, arquivos INI serão
o usados.
sNomeEmpre String – O nome da empresa a ser usado no registro.
sa
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalValidateSet
Parâmetros :
hWndCC Window Handle – O handle de um objeto custom control.
bValida Boolean – Se TRUE, indica que o Centura deve validar este objeto quando
ele 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 : SalWaitCursor
Sintaxe : 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 a
aplicação está ocupada, e, também , ao ser liberada.
Parâmetro :
bLiga Boolean – Quando o Centura deve ligar ( TRUE ), ou desligar ( FALSE ) a
ampulheta.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SalWindowClassName
Sintaxe : 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 : SalWindowGetProperty
Sintaxe : bOk = SalWindowGetProperty( hWndQO , sNomeProp , sValorProp )
Descrição : Obtém o valor da propriedade de uma instância de determinado QuickObject.
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 : SalWindowHandleToNumber
Sintaxe : 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 da
funçã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 : SalWindowIsDerivedFromClass
Sintaxe : bOk = SalWindowIsDerivedFromClass ( hWnd , NomeClasse )
Descrição : Verifica se o objeto é instância de uma classe, ou seja, se o objeto pertence a uma
classe 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 uma
classe que é derivada da classe informada.
Função : SalWinHelp
Sintaxe : 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.
nComando Number – É o tipo de help solicitado. Você pode usar uma das constantes
HELP_*.
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âmetro
deve 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 : SalYieldEnable
Sintaxe : 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 : SalYieldQueryState
Sintaxe : 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 em
caso contrário. Esse comportamento é configurado através da função SalYieldEnable.
Função : SalYieldStartMessages
Sintaxe : bOk = SalYieldStartMessages ( hWndObj )
Descrição : Habilita o cancelamento de processamentos demorados e o envio de mensagens a
um determinado objeto.
Parâmetro :
hWndObjeto Window Handle - O handle do objeto que poderá receber mensagens
enquanto a aplicação estiver num processamento.
Valor de Retorno :
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.
Apêndice B
Guia de referência das Funções SQL
Dando prosseguimento ao guia de referencia das funções este apêndice apresenta
detalhadamente as funções de acesso a bandos de dados.
Função : SqlClearImmediate
Sintaxe : 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 a
função SqlClearImmediate.
A função SqlClearImmediate gera um commit implícito quando este é o último cursor
conectado 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 : SqlClose
Sintaxe : 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 : SqlCloseAllSPResultSets
Sintaxe : 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 procedure
executada 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 : SqlCommit
Sintaxe : bOk = SqlCommit ( hSql )
Descrição : Encerra todas as transações sql conectadas ao banco de dados, efetivando as
alterações realizadas.
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, configurando
DBP_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: SqlCommitSession
Sintaxe: bOk = SqlCommitSession ( hSessao )
Descrição: Esta função aplica (commit) as transações associadas à sessão especificada. Todas
as 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 : SqlConnect
Sintaxe : 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êm
efeito 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 : SqlCreateSession
Sintaxe : bOk = SqlCreateSession ( hSessao , sParametros )
Descrição : Cria uma nova sessão de acordo com os parâmetros especificados em
sParametros.
Quando você fizer uma chamada à função SqlCommitSession ( ) serão comitados apenas os
handles Sql que estiverem associados a uma determinada transação.
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 seu
conjunto de propriedades próprios, porém, normalmente alguns parâmetros
sã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âmetros
especificados 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 os
handles Sql que estiverem associados a uma determinada transação. Com a função
SqlCreateStatement você associa um handle sql a uma transação.
Para desconectar um handle sql criado com a função SqlCreateStatement utilize normalmente
a 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 : SqlDirectoryByName
Sintaxe : 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.
Função : SqlDisconnect
Sintaxe : 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 de
dados, o comando commit é automaticamente executado.
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 : SqlDropStoredCmd
Sintaxe : 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 : SqlError
Sintaxe : 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ão
retorna 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 : SqlErrorText
Sintaxe : bOk = SqlErrorText ( nErro, nTipo, sErro, nTamanho, nTamanhoReal )
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 do
erro.
Ntamanho Number – O tamanho máximo de sErro.
NtamanhoRe Receive Number – O tamanho atual de sErro.
al
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SqlExecute
Sintaxe : bOk = SqlExecute ( hSql )
Descrição : Executa um comando SQL preparado com a função SqlPrepare, ou recuperado
atravé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 : SqlExecutionPlan
Sintaxe : bOk = SqlExecutionPlan ( hSql , sTexto , nTamanho )
Descrição : Obtém o plano de execução de um determinado comando sql. O plano de
execução mostra as tabelas, visões, índices e as otimizações para o comando sql. Os nomes
das 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 :
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 para
efetuar a conexão ao banco de dados, e usa o handle interno para executar o comando
especificado.
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 : SqlExtractArgs
Sintaxe : bOk = SqlExtractArgs ( wParam , lParam , hSql , nErro , nPosicao )
Descrição : Obtém informações dos argumentos wParam e lParam num evento
SAM_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 ter
executado 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 ou
FETCH_Update.
Valor de Retorno :
bOk é TRUE se a função trouxer alguma linha do result set, e FALSE se nenhuma linha for
encontrada.
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 linha
do result set.
Função : SqlFetchPrevious
Sintaxe : 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 ter
executado 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 ou
FETCH_Update.
Valor de Retorno :
bOk é TRUE se a função trouxer alguma linha do result set, e FALSE se nenhuma linha for
encontrada.
Função : SqlFetchRow
Sintaxe : 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 ter
executado 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 ou
FETCH_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 : SqlFreeSession
Sintaxe : bOk = SqlFreeSession ( hSessao )
Descrição : Desconecta uma sessão.
Todos os handles sql subordinados a sessão e que ainda estiverem ativos serão desconectados
antes 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 : SqlGetError
Sintaxe : 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 : SqlGetErrorPosition
Sintaxe : bOk = SqlGetErrorPosition ( hSql , nPosicao )
Descrição : Obtém a posição do erro num comando sql. Após a execução da função
SqlPrepare, a posição do erro aponta para o local, no comando sql preparado, onde o Centura
detectou 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 : SqlGetErrorText
Sintaxe : bOk = SqlGetErrorText ( nErro , sTexto )
Descrição : Obtém a mensagem de erro equivalente ao número do erro informado. Esta
informação será pesquisada no arquivo ERROR.SQL.
Parâmetros :
nErro Number – O número do erro.
sTexto 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 : SqlGetErrorTextX
Sintaxe : sTexto = SqlGetErrorText ( nErro )
Descrição : Obtém a mensagem de erro equivalente ao número do erro informado. Esta
informaçã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 : SqlGetLastStatement
Sintaxe : sCmdSql = SqlGetLastStatement ( )
Descrição : Obtém o último comando sql utilizado em qualquer uma das funções SqlXxxx. O
comando 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 : SqlGetModifiedRows
Sintaxe : bOk = SqlGetModifiedRows ( hSql , nNum )
Descrição : Retorna o número de linhas afetadas pelo último comando insert, update ou
delete 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 : SqlGetParameter
Sintaxe : 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 valor
do 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
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 : SqlGetParameterAll
Sintaxe : 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 valor
do 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
SQLP* 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. Se
FALSE, 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 : SqlGetResultSetCount
Sintaxe : 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 pode
consumir muito tempo.
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 : SqlGetRollbackFlag
Sintaxe : 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.
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 : SqlImmediate
Sintaxe : 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ção
SqlFetchNext.
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.
Função : SqlOpen
Sintaxe : 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ções
SqlFetch*.
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 ou
delete.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SqlPrepare
Sintaxe : 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áusula
INTO. Estas variáveis são, comumente, chamadas de variáveis INTO. Você pode especificar
no 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.
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SqlPrepareAndExecute
Sintaxe : 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.
Os dados, quando trazidos do banco de dados, são colocados nos nomes citados na cláusula
INTO. Estas variáveis são, comumente, chamadas de variáveis INTO. Você pode especificar
no 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 : SqlRetrieve
Sintaxe : 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 precisa
compilar 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é 255
variá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 : SqlRollbackSession
Sintaxe : bOk = SqlRollbackSession ( hSessao )
Descrição : Esta função desfaz as transações associadas à sessão especificada. Todas as
operaçõ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.
Função : SqlSetInMessage
Sintaxe : bOk = SqlSetInMessage ( hSql , nTamanho )
Descrição : Define o tamanho (em bytes) do buffer de mensagem de entrada para um
determinado 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 um
buffer 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 : SqlSetIsolationLevel
Sintaxe : 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ça
no nível de isolamento causa um commit implícito. O nível de isolamento se aplica a todos os
handles sql conectados a base de dados, para o mesmo usuário.
Para obter informações mais detalhadas sobre níveis de isolamento, consulte o manual
Connecting 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 Stability
RL – Release Locks
RO – Read Only
RR – Read Repeatability
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SqlSetLockTimeout
Sintaxe : bOk = SqlSetLockTimeout ( hSql , nTimeOut )
Descrição : Especifica o tempo máximo de espera para ativar um lock. Após o tempo
especificado, 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 (
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 : SqlSetLongBindDatatype
Sintaxe : bOk = SqlSetLongBindDatatype ( nNumVarBind , nTipoDeDado )
Descrição : Especifica o tipo de dado da coluna quando a mesma receber um valor do tipo
Long String.
Parâmetros :
nNumVarBin Number – Indica qual a variável bind a ser configurada. Use 1 para indicar a
d primeira variável no comando sql, 2 para a segunda e assim por diante.
nTipoDeDad Number – O tipo de dado a ser definido. Use os seguintes tipos de dados :
o 22 - Tipo Text
23 – Tipo Long Binary
24 – Char > 254 bytes, ou long varchar > 254 bytes. ( Apenas para
Informix )
Valor de Retorno :
bOk é TRUE se a função for executada com sucesso e FALSE se falhar.
Função : SqlSetOutMessage
Sintaxe : bOk = SqlSetOutMessage ( hSql , nTamanho )
Descrição : Define o tamanho (em bytes) do buffer de mensagem de saída para um
determinado sql handle. O buffer de saída contém os dados de uma aplicação, como os dados
a serem incluídos no banco de dados.
Existe um buffer para cada handle sql conectado. O servidor do bancos de dados mantém um
buffer 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 : SqlSetParameter
Sintaxe : 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 :
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 : SqlSetParameterAll
Sintaxe : 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, o
valor 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 : SqlSetResultSet
Sintaxe : bOk = SqlSetResultSet ( hSql , bSet )
Descrição : Liga/desliga o modo result set, para todos os handles sql associados ao mesmo
handle 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 : SqlStore
Sintaxe : 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ção
SqlPrepare antes de utilizar SqlStore.
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 : SqlVarSetup
Sintaxe : bOk = SqlVarSetup ( hSql )
Descrição : Antes que o Centura execute um comando sql, ou obtenha uma linha do banco de
dados (fetch), o Centura compila as variáveis bind e into e gera os respectivos códigos para
obtençã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 de
execuçã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 num
contexto diferente do local onde a função Sql* está sendo chamada. Você precisa executar a função SqlPrepare
antes 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.
Apêndice C
Guia de referência das Mensagens SAM
Mensagem : SAM_Activate
Descrição : A mensagem SAM_Activate é enviada aos objetos top-level ( form window e mdi window ) quando
estes 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_AnyEdit
Descrição : A mensagem SAM_AnyEdit é enviada aos objetos tipo data field, combo box, table window
columns e multiline field quando o usuário modifica o valor do mesmo. O objeto processa a mensagem
SAM_AnyEdit a cada tecla pressionada. Ao processar a mensagem SAM_AnyEdit, a aplicação pode verificar o
valor do objeto.
Variáveis :
Para objetos do tipo data field, combo box ou multiline field, os valores das variáveis são :
Para objetos do tipo table window column, os valores das variáveis são :
Mensagem : SAM_AppExit
Descriçã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
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 a
aplicaçã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_CacheFull
Descrição : A mensagem SAM_CacheFull é enviada a uma table window quando o Centura precisa trazer mais
uma linha para a tabela, mas o cache da tabela encontra-se cheio e nehuma de suas linhas encontram-se
qualificadas 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 window
estiver configurado como descartável (discardable), a mensagem SAM_CacheFull indica que o cache está cheio
de informações que precisam ser atualizadas. Quando você salva as linhas modificadas, estas passam a ser
qualificadas 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_CaptionDoubleClick
Descrição : A mensagem SAM_CaptionDoubleClick é enviada a uma table window e a uma coluna da table
window 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ção
SalNumberToWindowHandle.
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_Click
Descrição : A mensagem SAM_Click é enviada para avisar que o usuário pressionou o botão esquerdo do
mouse uma vez.
É enviada a um check box ou push button quando você clica em um desses objetos, ou executa alguma atividade
com 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 atividade
com o teclado, simulando um click com o mouse. Se você clicar num radio button que já está selecionado, a
mensagem SAM_Click não é enviada.
É 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 possua
nenhum 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, ou
executa 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, os
valores das variáveis são :
Mensagem : SAM_Close
Descrição : A mensagem SAM_Close é enviada aos objetos do tipo dialog box, form window, mdi window e
table window, quando o usuário dá um double-click no ícone do menu do sistema, ou quando o usuário aciona
no menu do sistema a opção “Fechar”.
A mensagem SAM_Close é enviada para avisar que ovocê está tentando fechar uma janela. Processando a
mensagem SAM_Close, uma aplicação pode verificar a necessidade de salvar alguma informação, avisando isso
ao 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.
Mensagem : SAM_ColumnSelectClick
Descrição : A mensagem SAM_ColumnSelectClick é enviada para table window e column, quando o usuário
seleciona 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 chamada
TBL_Flag_SelectableCols, pois, este valor inicialmente é FALSE.
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 do objeto que capturou a mensagem, table window ou column,
dependendo do caso.
wParam O handle da coluna.
lParam Não é utilizada.
Mensagem : SAM_ContextMenu
Descriçã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ção
SalContextMenuSetPopup para definir um menu popup, que será mostrado automaticamente, quando um objeto
receber 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_CornerClick
Descrição : A mensagem SAM_CornerClick é enviada a uma table window e column, quando o usuário clica no
título do header de uma linha. O header de uma linha é a coluna não-editável, localizada à esquerda da table
window. 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_CornerDoubleClick
Descriçã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,
localizada à esquerda da table window. 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 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_CountRows
Descriçã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.
Mensagem : SAM_Create
Descrição : A mensagem SAM_Create é enviada aos objetos top level ( mdi window, dialog box, form window
ou 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 ao
usuário, o Centura envia a mensagem SAM_Create para cada um deles, iniciando pelo top level, e depois a cada
um 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_CreateComplete
Descrição : A mensagem SAM_CreateComplete é enviada aos objetos top level ( mdi window, dialog box, form
window 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 ao
usuário, o Centura envia a mensagem SAM_Create para cada um deles, iniciando pelo top level e depois a cada
um dos objetos filhos, neste momento, todos os objetos tornam-se visíveis. Só então a mensagem
SAM_CreateComplete é enviada ao objeto top level.
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_CustControlCmd
Descriçã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_ClientExecute
Descrição : A mensagem SAM_DDE_ClientExecute é enviada para todos os objetos na aplicação servidora. O
evento 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 o
comando 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ção
SalDDESendToClient. Na mensagem SAM_DDE_ClientExecute, o valor de wParam corresponde ao window
handle 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_ClientRequest
Descrição : A mensagem SAM_DDE_ClientRequest é enviada à aplicação servidora como o resultado de uma
requisiçã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ção
SalDDESendToClient. Na mensagem SAM_DDE_ClientExecute, o valor de wParam corresponde ao window
handle 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 Não é utilizada.
Mensagem : SAM_DDE_DataChange
Descriçã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 objeto
especificado na aplicação cliente ( através da função SalDDEStartSession). A aplicação cliente não precisa
executar qualquer ação para receber os dados. No entanto, se a aplicação cliente quiser saber quando o os dados
foram enviados pelo servidor, pode fazê-lo processando a mensagem SAM_DDE_DataChange.
Variáveis :
hWndForm O handle do objeto top level.
hWndItem O handle do objeto.
wParam Não é utilizada.
lParam Não é utilizada.
Mensagem : SAM_Destroy
Descrição : A mensagem SAM_Destroy é enviada aos objetos top level (dialog box, form window ou table
window) e depois para todos os seus objetos filho antes que oobjeto seja destruído. As mensagens SAM_Destroy
sã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 :
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_DoubleClick
Descrição : A mensagem SAM_DoubleClick é enviada aos objetos do tipo combo box, list box, picture, table
window e column quando você dá um double-click num desses objetos.
Variáveis :
Para objetos do tipo combo box ou list box, os valores das variáveis são :
Para objetos do tipo table window e column, os valores das variáveis são :
Mensagem : SAM_DragCanAutoStart
Descrição : A mensagem SAM_DragCanAutoStart é enviada para os objetos do tipo top level, child table, data
field, multiline field, list box, combo box, e picture para saber se o objeto pode entrar em modo automático de
arrastar-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 à mensagem
SAM_DragCanAutoStart. Isto é o mínimo que a aplicação deve fazer para permitir que o usuário arraste o
conteú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_DragDrop
Descriçã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.
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_DragEnter
Descriçã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_DragExit
Descriçã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_DragMove
Descriçã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.
Mensagem : SAM_DragNotify
Descriçã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 destino
SAM_DragEnter – O usuário soltou o mouse no objeto destino.
SAM_DragExit – O usuário movimentou o mouse para fora do objeto
destino.
SAM_DragMove – O usuário moveu o mouse por cima do objeto destino.
Mensagem : SAM_DragStart
Descriçã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_DropDown
Descriçã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_DropFiles
Descriçã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.
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 foram
soltos.
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_EndCellTab
Descriçã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 TRUE
no 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_FetchDone
Descriçã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 table
window.
Variáveis :
hWndForm O handle da table window.
hWndItem O handle da table window.
wParam Não é utilizada.
lParam Não é utilizada.
Mensagem : SAM_FetchRow
Descrição : A mensagem SAM_FetchRow é enviada à table window sempre que o Centura precisar copiar uma
linha para o cache da table window.
Quando você carrega os dados numa table window o Centura envia uma mensagem SAM_FetchRow para linha
mostrada na table window. Quando o usuário solicita que sejam mostradas mais linhas, o Centura envia mais
mensagens 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 ) .
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.
Mensagem : SAM_FetchRowDone
Descriçã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_FieldEdit
Descriçã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 fora
deste objeto, uma mensagem SAM_FieldEdit é enviada ao data field.
Observe que a SAM_AnyEdit é enviada a cada tecla pressionada, enquanto que SAM_FieldEdit é enviada
apenas 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 do
Centura.
Variáveis :
Para objetos do tipo data field, combo box ou multiline field, os valores das variáveis são :
Mensagem : SAM_Help
Descrição : A mensagem SAM_Help é enviada ao objeto do tipo top level quando o usuário pressiona a tecla de
função F1.
A variável wParam contém o handle do objeto filho que está com o foco. Utilize esta informação para
disponibilizar 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_KillFocus
Descrição : A mensagem SAM_ KillFocus é enviada aos objetos do tipo table window, data field, multiline
field, pushbutton, radio button, option button, combo box, list box, column e barras de scroll quando o usuário
está 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, devido
a 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_Print
Descriçã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_TblDoDetails
Descriçã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.
Variáveis :
hWndForm O handle do objeto top level.
hWndItem O handle do objeto
wParam Não é utilizada.
lParam Não é utilizada.
Mensagem : SAM_ReportFetchInit
Descrição : A mensagem SAM_ReportFetchInit é enviada ao objeto top level que iniciou o relatório. este evento
acontece 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 da
aplicaçã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ório
continua.
Variáveis :
hWndForm Não é utilizada.
hWndItem Não é utilizada.
wParam O handle do objeto Report Builder.
lParam Não é utilizada.
Mensagem : SAM_ReportFetchNext
Descriçã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 de
daodos vindos da aplicação.
Se a origem dos dados do relatório for um banco de dados, normalmente deve ser feita uma chamada à função
SqlFetchNext, para se obter os dados. Se estes forem obtidos com sucesso, a aplicação deve retornar TRUE para
a mensagem SAM_ReportFetchNext. O Centura não envia os dados da aplicação para o relatório até que a
aplicação retorne TRUE no processamento desta mensagem. Se não existe mais linhas de dados para serem
obtidas, 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_ReportFinish
Descrição : A mensagem SAM_ ReportFetchNext é enviada ao objeto top level que iniciou o relatório. O
Report Builer envia esta mensagem à aplicação quando o relatório é encerrado.
Variáveis :
hWndForm Não é utilizada.
Mensagem : SAM_ReportNotify
Descriçã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 esta
formatado, e foi enviado ao buffer da página. As notificações Before são enviadas antes que qualquer formatação
ocorra. As notificações Output são enviadas quando a primeira linha do relatório é enviada ao buffer, e, as
notificaçõ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 conjuntos
de 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 para
formatar. O valor em lParam é uma das constantes RPT_Before*.
O Report Builder ignora qualquer valor que você retornar durante o processamento da mensagem
SAM_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_ReportStart
Descrição : A mensagem SAM_ReportStart é enviada ao objeto top level que iniciou o relatório. O Report
Builer 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ção
SalReportView ou SalReportPrint ) indicando que o relatório está sendo iniciado. Esta mensagem é mostrada
antes que o relatório seja mostrado ou impresso.
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_RowHeaderClick
Descrição : A mensagem SAM_RowHeaderClick é enviada à table window quando você clica 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_RowHeaderDoubleClick
Descriçã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_RowSetContext
Descrição : A mensagem SAM_RowSetContext é enviada à table window quando o usuário muda o foco da
linha. Se você processar esta mensagem, mas não retornar algum valor ( através do comando Return ), o Centura
executa 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_RowValidate
Descriçã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 o
foco da table window para algum outro objeto.
A mensagem SAM_RowValidate é enviada respeitando as configurações dos flags da linha atual e da célula
editada.
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).
Mensagem : SAM_ScrollBar
Descriçã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_SetFocus
Descriçã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_SqlError
Descrição : A mensagem SAM_SqlError é enviada à seção Application Actions do outline quando ocorrer um
erro 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ível
global, processando os erros de maneira padronizada através de uma caixa de diálogo mostrando o número do
erro 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 Sql
lParam O número e a posição do erro.
Mensagem : SAM_Timer
Descrição : A mensagem SAM_Timer é enviada à seção Application Actions, aos objetos top level e aos seus
objetos 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.
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_Validate
Descrição : A mensagem SAM_Validate é enviada ao objetos do tipo data field, multiline field, combo box e
column quando o usuário modifica o valor do objeto e tenta mover o foco para fora do objeto, ou seja, quando o
usuá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 de
ediçã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 de
um objeto o Centura envia a mensagem SAM_Validate para o objeto. Se o valor do objeto estiver válido, retorne
VALIDATE_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 ao
menu não tira o foco do objeto. Você pode forçar a validação do objeto utilizando a função SalSendValidateMsg
no Menu Actions do menu item. Isto forç a validação do campo antes de processar a escolha do menu ( sem
mudar o foco ). A função SalSendValidateMsg retorna o valor que for retornado no processamento da mensagem
SAM_Validate.
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.
Apêndice D
Guia de referência das funções do Report Builder
Este guia serve de referência às funções encontradas do Report Builder.
Funções agregadas
Average
Count
Maximum
Minimum
ReportAverage
ReportCount
ReportMaximum
ReportMinimum
ReportSum
Sum
CurrentDate
CurrentTime
DateAddDay
DateConstruct
DateDay
DateHour
DateIFF
DateMinute
DateMonth
DateMonthBegin
DateMonthEnd
DateSecond
DateToStr
DateToStrPicture
DateToStrPicture
DateYear
NumberAbsolute
NumberCountryFmt
NumberIFF
NumberMod
NumberRound
NumberToCurrency
NumberToStr
NumberToStrPicture
NumberTruncate
PageNumber
Power
ReportDevice
ReportDriver
ReportFileName
ReportPort
StrCase
StrCompare
StrlFF
StrLeft
StrLength
StrLower
StrLTrim
StrMid
StrPad
StrProper
StrRepeat
StrReplace
StrRight
StrRTrim
StrScan
StrSpaces
StrTabColSuppress
StrTabRowSuppress
StrTabSeparate
StrToDate
StrToNumber
StrTranslate
StrTrim
StrUpper
WeekDay
XTabGetColCount
XTabGetColHeadings
XTabGetRowCount
XTabGetRowHeadings
Função : Average
Sintaxe : 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 : Count
Sintaxe : 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 : Maximum
Sintaxe : nValor = Maximum ( input item )
Descrição : Retorna o valor máximo de uma coluna de valores. Você pode obter o valor
má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 : Minimum
Sintaxe : 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 : ReportAverage
Sintaxe : nValor = ReportAverage ( input_item )
Nenhum Parâmetro .
Valor de Retorno :
nValor é a média calculada.
Função : ReportCount
Sintaxe : nLinhas = ReportCount ( )
Descrição : Retorna o número de linhas processadas num relatório. Se você utilizar esta
funçã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 : ReportMaximum
Sintaxe : 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 : ReportMinimum
Sintaxe : 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 : ReportSum
Sintaxe : nValor = ReportSum ( input_item )
Descrição : Retorna a soma de uma coluna de valores numéricos no relatório todo.
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ção
ReportSum no seu template.
Função : Sum
Sintaxe : 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 : CurrentDate
Sintaxe : 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 : CurrentTime
Sintaxe : 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 .
Valor de Retorno :
dtHora é a hora atual.
Função : DateAddDay
Sintaxe : 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 : DateConstruct
Sintaxe : 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 )
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 : DateIFF
Sintaxe : 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 do
que 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 : DateMinute
Sintaxe : 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 : DateMonth
Sintaxe : 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
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 em
dtData.
Função : DateMonthEnd
Sintaxe : 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 : DateSecond
Sintaxe : 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 : DateToStr
Sintaxe : 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 : DateToStrPicture
Sintaxe : 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.
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 : DateYear
Sintaxe : 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 : NumberAbsolute
Sintaxe : 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 : NumberCountryFmt
Sintaxe : 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 : NumberIFF
Sintaxe : nValor = NumberIIF ( nNumero , nValor1 , nValor2 , nValor3 )
Descrição : Dependendo do valor em nNumero, retorna um dos três valores informados.
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 : NumberMod
Sintaxe : 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 : NumberRound
Sintaxe : nNovoNumero = NumberRound ( nNumero, nPrecisão )
Descrição : Retorna um valor numérico arredondado, de acordo com o número de casas
decimais 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 : NumberToCurrency
Sintaxe : sNumeroFormatado = NumberToCurrency ( nNumero )
Descrição : Converte o número informado para um valor string, formatado de acordo com as
configurações padrões do Windows.
Parâmetro :
nNumero Number - O valor numérico que será convertido.
Valor de Retorno :
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 : NumberToStrPicture
Sintaxe : sNumero = NumberToStrPicture ( nNumero , sFormato)
Descrição : Converte o número informado em nNumero para um valor string, aplicando a
formataçã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 : NumberTruncate
Sintaxe : nNumTruncado = NumberTruncate ( nNumero , nPrecisao)
Descrição : Trunca o número, obedecendo o número de casas decimais especificado em
nPrecisao.
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 : PageNumber
Sintaxe : 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.
Função : Power
Sintaxe : nNovoNumero = Power ( nNumero , nPotencia )
Descrição : Retorna o valor em nNumero elevado a potência do número informado em
nPotencia.
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 : ReportDevice
Sintaxe : 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 : ReportDriver
Sintaxe : 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 : ReportPort
Sintaxe : sPorta = ReportPort ( )
Descrição : Retorna a porta física conectada a sua impressora.
Nenhum Parâmetro.
Valor de Retorno :
sPorta é o identificador da porta conectada a sua impressora.
Função : StrCase
Sintaxe : 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 : StrCompare
Sintaxe : 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 :
Função : StrLeft
Sintaxe : sRetorno = StrLeft ( sValor, nTamanho )
Descrição : Extrai e retorna o número de caracteres informado em nTamanho, de acordo com
o valor indicado em sValor. O ponto inicial para a extração é a posição mais à esquerda 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 : StrLength
Sintaxe : 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 : StrLower
Sintaxe : sNovoValor = StrLower ( sValor )
Descrição : Retorna a string informada em sValor, tendo todas as suas letras substituídas por
suas 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 : StrLTrim
Sintaxe : 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.
Valor de Retorno :
sNovoValor é a string contida em sValor, sem os caracteres tab e espaços localizados à
esquerda.
Função : StrMid
Sintaxe : sNovoValor = StrMid ( sValor , nInicio , nTamanho )
Descrição : Extrai um pedaço de uma string, baseando-se na posição inicial informada em
nInicio 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 : StrPad
Sintaxe : sNovoValor = StrPad ( sValor , nComprimento )
Descrição : Redimensiona a string informada em sValor, para que esta fique do tamanho
indicado em nComprimento. Se o tamanho original da string for menor do que
nComprimento, caracteres brancos serão adicionados à string. No caso oposto, ou seja, se o
tamanho 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 por
suas 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
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 : StrReplace
Sintaxe : 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 : StrRight
Sintaxe : sRetorno = StrRight ( sValor , nTamanho )
Descrição : Extrai e retorna o número de caracteres informado em nTamanho do valor
contido 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 : StrRTrim
Sintaxe : 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.
Valor de Retorno :
sNovoValor é a string contida em sValor, sem os caracteres tab e espaços localizados à direita.
Função : StrScan
Sintaxe : nPosicao = StrScan ( sString , sLocalizar )
Descrição : Esta função procura pela string sLocalizar em sString, e retorna a posição inicial
onde 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 : StrSpaces
Sintaxe : sString = StrSpaces ( nTamanho )
Descrição : Esta função retorna uma string repleta de espaços em branco, do tamanho
especificado em nTamanho.
Parâmetros :
nTamanho Number - O tamanho da string retornada.
Valor de Retorno :
sString é a string gerada.
Função : StrTabColSuppress
Sintaxe : 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 caracteres
CRLF separando as linhas.
Parâmetro :
sOrigem String - A string com múltiplas linhas separadas pelo caractere CRLF, e
múltiplas colunas separadas pelo caractere tab.
Valor de Retorno :
sRetorno é a string gerada, sem os valores repetidos nas colunas.
Função : StrTabRowSuppress
Sintaxe : sRetorno = StrTabRowSuppress ( sOrigem )
Descrição : Retorna a string sOrigem, excluindo os valores repetidos das linhas.
Esta função não apaga os caracteres tab separadores entre cada coluna, nem os caracteres
CRLF separando as linhas.
Parâmetro :
sOrigem String - A string com múltiplas linhas separadas pelo caractere CRLF, e
múltiplas colunas separadas pelo caractere tab.
Valor de Retorno :
sRetorno é a string gerada sem os valores repetidos nas linhas.
Função : StrTabSeparate
Sintaxe : sRetorno = StrTabSeparate ( sOrigem )
Descrição : Retorna a string em sOrigem, colocando um caractere tab entre cada palavra da
string.
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 : StrToDate
Sintaxe : 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 : StrToNumber
Sintaxe : 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 : StrTranslate
Sintaxe : sRetorno = StrTranslate ( sValor , sIds , sString )
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 : StrTrim
Sintaxe : sRetorno = StrTrim ( sValor )
Descrição : Esta função retira os espaços em branco do início e do final da string informada
em 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 : StrUpper
Sintaxe : 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 : StrWeekDay
Sintaxe : 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.
Função : XTabGetColCount
Sintaxe : 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 : XTabGetColHeadings
Sintaxe : sRetorno = XTabGetColHeadings ( sCrossTab , nFormula , sFormato )
Descrição : Retorna os cabeçalhos das colunas do seu cross tab, baseado no item selecionado
em 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 das
colunas 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 : XTabGetRowCount
Sintaxe : nRetorno = XTabGetRowCount ( sCrossTab )
Descrição : Esta função retorna o número total de linhas presentes no cross tab indicado em
sCrossTab.
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 : XTabGetRowHeadings
Sintaxe : sRetorno = XTabGetRowHeadings ( sCrossTab , nFormula , sFormato )
Descrição : Retorna os cabeçalhos das linhas do seu cross tab baseado no item selecionado
em 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 das
linhas 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 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.
Apêndice E
Guia de referência das classes e funções da
Biblioteca Visual Toolchest
Além das funções que o Centura SQLWindows/32 disponibiliza para o
desenvolvedor de forma nativa, existem ainda cerca de 200 funções que você
pode acessar através da biblioteca Visual Toolchest. Essas funções estão
agrupadas em categorias para facilitar a consulta.
cColorComboBox cColorListBox
cDirListBox cDirTreeListBox
cDriveComboBox cDriveListBox
cFontComboBox cFontListBox
cFontNameComboBox cFontNameListBox
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
cPictureComboBox cPictureListBox
cRadioListBox
cDesktopListBox
cSpinField
A classe cSpinField é bastante similar ao comportamento do objeto data field, porém, possui
duas setas que permitem que os valores sejam acrescentados ou diminuídos.
cSplitterWindow e cListView
cCalendar e cDropDownCalendar
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.
Tratamento de Vetores
Cores e Fontes
Funções de Depuração
Recursos DOS
Gerenciamento de arquivos
Funções de mensagens
Funções numéricas
Tratamento de imagens
Tratamento de strings
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.
Gerenciamento de objetos
Apêndice F
Guia de Instalação do Centura Team Developer
versã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ção
do produto. Direcionamos todas as instruções de modo a atender os pré-requisitos necessários
aos exemplos de aplicações aqui contidos. Por esse motivo, recomendamos que as instruções a
seguir sejam seguidas fielmente, dessa forma, garantimos que você terá instalado todos os
componentes necessários para o adequado acompanhamento dos exemplos do livro.
Para instalar o Centura Team Developer 2000 no seu computador siga as instruções descritas a seguir :
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.
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 cada
componente instalado.
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 Objetos
Pre-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 executadas
na Web. Para seguir os exemplos do livro você deve selecionar todos estes itens.
Embutido ao Centura Team Developer 2000 está a versão mais atualizada do banco de dados relacional
da Centura o SQLBase. Você deve selecionar o primeiro e o último elementos para que sejam instalados
o 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.
Object Compiler é o responsável pela geração de dlls a partir do Centura SQLWindows. Você só deve
instalar este componente caso possua o MS Visual C++ 5.0 ou superior.
O Object Nationalizer fornece uma insterface onde rapidamente uma aplicação feita em SQLWindows
possa ser traduzida para outros idiomas.
Nesta janela você configura a instalação dos exemplos, uma ótima fonte de conhecimento com diversos
exemplos 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 do
Centura Team Developer 2000. A documentação toda é fornecida em formato PDF.
Configure o tipo de servidor web disponivel em seu ambiente, para que você possa colocar suas
aplicações rodando num browser.
Na janela abaixo informe onde ficam os executáveis no seu servidor web. Este diretório deve ser
configurado de modo a permitir que as aplicações nele presentes possam ser executadas.
Caso você tenha alguma versão do Centura Team Developer instalada no seu computador a janela abaixo
será mostrada.
Quando o Centura Team Developer 2000 for instalado as associações aos arquivos fonte do CTD podem
ser feitas de modo que, o CTD2000 seja o aplicativo padrão para a edição destes arquivos.
Você pode configurar o seu SQLBase neste momento ou utilizá-lo com as configurações default.