Escolar Documentos
Profissional Documentos
Cultura Documentos
No exemplo a seguir veremos com filtrar registros em uma tabela usando componentes DBGrid e SetRange.
Como padrão o Delphi executa sempre o primeiro formulário (formulário pai), para executar o form do Grid
por primeiro selecione opção que está na barra de títulos, Project – Options – selecione o formulário
Pesquisa_Frm ( nosso formulário ) e arraste-o posicionando-o por primeiro, clique OK, finalmente tecle F9
para executar o programa.
Crie um índice secundário para o campo Nome, visto que a pesquisa será feita pelo Nome.
Table1 = tabela.
Codigo = nome do campo.
Table1Codigo.AsString
AsString ( converte para string – texto )
2ª forma:
3ª forma:
O número seis [6] indica que é o sexto campo da tabela. Estes números devem estar de acordo com a criação dos campos
do DataBase Desktop. Vamos ler o campo o conteúdo do campo Nome e mostrá-lo na tela, em um Edit.
Insira um
componente Edit e
um Bitbtn, na
propriedade Name
digite Bit_Le_Nome.
Apo clicar OK o
nome será
mostrado no Edit
Box.
Para associar outros tipos de campos que não são texto a uma caixa de edição ( campo que aceita somente strings ),
devemos utilizar as propriedades de conversão do componente TField :
AsBoolean, AdDateTime, AsFloat, AsInteger e AsString:
Vamos ler um valor e mostrá-lo em
um Edit ( em uma string ). Lembre-
se, antes devemos converte-lo para
texto – string.
Insira 5
componentes
Labels e 5 Bitbtn.
Foi inserido um
DBGrid para mostrar
os registros que estão na
tabela.
Na propriedade Caption
de cada botão serão
Selecione o formulário e no evento OnShow digite o código abaixo:
mostradas as 5 maneiras
de como ler o conteúdo
de um campo.
Verificando o estado da tabela, se estiver no modo de “edição” ou “inserção” gravará o registro. O código
abaixo foi definido no evento OnClick de um botão Bitbtn:
Crie o formulário abaixo. Analise a seguinte situação: No campo Código não é possível “efetuar pesquisa”,
visto que o componente DBEdit não permite tal ação. Para pesquisar um código terá que inserir um
componente Edit.
Mova o componente DBEdit para o lado direito do formulário, apenas para não removê-lo do projeto, ao
lado da label Código insira um componente Edit.
Observe atentamente o código fonte do formulário acima, e cada um dos seus eventos.
Agora, criaremos uma segunda tela para facilitar a pesquisa dos registros.
Clique no componente
RadioGroup, clique na
propriedade Items, será aberta
uma tela, digite Código e
Nome um abaixo do outro
como no exemplo acima, após
Clique no botão, clique Ok.
clique nan
propriedade
ModalResult e
defina mrOK
Funcionários.db Empresas.db
Func_Empresa.db
File – New Application – remove file from Project – yes (remova o formulário em branco que o Delphi
abriu ).
Crie o formulário de entrada de dados, use o Database - FormWizard para criar a tabela de Funcionários
e Empresas. Clique o Formulário e defina as propriedades básicas: Caption = Cadastro de Funcionários,
Name = Func_Frm, clique no componente Table1, pressione F11, na propriedade DataBaseName defina o
alias Relacionamento, Name para Funcionarios_TB, clique no DataSource1, pressione F11, mude a
propriedade Name para Funcionarios_DS
Veja o cadastro de Funcionários abaixo:
Insira dois componentes Table e dois DataSource. Clique em Table1 defina a propriedade Databasename
= Relacionamento ( alias ), a propriedade Name para Empresas_TB, defina a propriedade TableName =
Empresas.db, clique no DataSource1 e mude a propriedade Name para Empresas_DS.
Clique em Table2, defina a propriedade Databasename = Relacionamento ( alias ), a propriedade Name para
Func_Empresas_TB, TableName = Func_Empresas.db, clique no DataSource2 e mude a propriedade
Name para Func_Empresas_DS, clique duplo em Func_Empresas, será aberta uma pequena tela mostrando
os campos, clique botão direito, clique em Add Fields e OK, clique novamente botão direito, clique em New
Delphi Aplicado by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 337
Field ( vamos criar um campo temporário para mostrar o nome da empresa em um drop-down. Com drop-
down será mais prático), será aberta uma tela para definir nome e tamanho do campo, preencha campos como
tela abaixo:
O campo temporário é
relacionado com o
campo da tabela ( veja
ao lado ).
Clique no
primeiro ícone
amarelo ( Add
New – Ins ),
clique duas vezes
para criar duas
colunas, clique
em FieldName e
defina o nome do
campo a ser
mostrado, clique
no + da opção
Title para alterar
o Caption para
Código
Empresa.
DBGRid
Func_Cod é o
campo do Código
do Funcionário
que que foi criado
na tabela
Fun_Empresa.db
que serve para fazer
o relacionamento.
1
2
Veja o
relacionamento.
Tabela de Empresas.
Crie o formulário de entrada de dados para cadastrar algumas empresas ( utilize o FormWizard )
Para selecionar uma empresa clique no final do campo Nome Empresa, será aberta uma lista drop-down.
Relacionamento:
A tabela Alunos deverá conter um
campo para o relacionamento. Desta
forma ligaremos o campo
Alu_Cod_Relaciona com o campo
Profe_Cod.
File – New application – Project – Remove from Project, selecione a Unit1 e Yes.
Clique em Database – Form Wizard para criar os dois formulários Alunos e Professores, veja abaixo
como ficou o formulário de entrada de dados para o Cadastro de Alunos.
Relacionamento
Alunos Professores
1:1
Alun_Cod_Aluno Profe_Cod
Alun_Cod_Relaciona
File – New – Other e clique na opção Report, será aberto um formulário como o que está abaixo:
Após clicar no
botão OK será
incluído 3 bandas.
Insira na banda Page Header um componente QRSysData, mude a propriedade Data ( qrsTime ) para
qrsReportTitle, onde será impresso o título do relatório via programação. Mais para direita da banda insira
outro QRSysData, mude a propriedade Data para qrsDateTime ( para imprimir a data e a hora ), insira outro
QRSysData, mude a propriedade Data para qrsPageNumber ( para imprimir número da página ).
Clique na banda Column Header, insira um componente QRLabel, mude a propriedade Caption para
Nome do Professor.
Insira um componente SQL ( Query ), clique no componente Query, clique no botão direito, clique em
SQL Builder, na opção Database informe o Alias, na opção Table escolha a tabela de Professores e a tabela
de Alunos. Posicione o ponteiro do mouse sobre o campo Prof_Codigo e arraste-o até o campo
Alun_Cod_Relaciona, note o “traço” indicando o relacionamento, veja o gráfico abaixo:
Insira um componente QRDBText na banda Group Header, na propriedade DataSet defina Query, e na
propriedade DataField = Profe_Nome, agora clique na banda Group Header, clique na propriedade
Expression, clique botão Database field, clique em Query, clique em Profe_Nome, Ok e Ok.
Clique OK para
finalizar.
Clique na banda Detail, insira um componente QRDBText, altere a propriedade DataSet para Query,
DataField para Alun_Nome.
Relatório de Professores
Para visualizar o código SQL que foi gerado pelo SQL Builder, clique no componente Query1, clique em
SQL Strings ( ... ) , veja abaixo:
SELECT
Professores.Prof_Nome,
Alunos.Alun_Nome
FROM
"professores.db" Professores
INNER JOIN
"alunos.db" Alunos
ON
(Professores.Prof_Codigo = Alunos.Alun_Cod_Relaciona)
GROUP BY
Professores.Prof_Nome, Alunos.Alun_Nome
ORDER BY
Professores.Prof_Nome, Alunos.Alun_Nome
Crie o formulário de entrada de dados para a Agenda. O campo código não precisa ser posto no formulário
visto que é um campo auto-increment.
Como padrão o nome é Table, mude a
propriedade Name para Agenda_TB e
o DataSource para Agenda_DS.
Clique em Agenda_TB, defina a
propriedade DatabaseName = Alias,
TableName = Agenda.db e defina
Active para True.
Clique em Agenda_DS e defina o
DataSet para Agenda_TB.
Relacionando campos:
Clique em Compromissos_TB, clique na
propriedade MasterSource e defina
Insira um DBGrid, clique na Agenda_DS, clique em MaterFields ( será
propriedade DataSource e aberta a tela abaixo ), clique no campo
defina Compromissos_DS. Comp_Cod_Relaciona, clique no campo
Agen_Codigo e clique no botão Add e Ok.
Se o registro Jurandir for removido, todos seus compromissos também serão removidos.
Alias ( 1 )
Alias ( 2 )
Selecione o formulário corrente e no evento OnCreate digite as linhas de código abaixo, insira também um
componente Session ( aba BDE ). Insira um componente Session ( aba BDE – no delphi 6.0 ).
Abra a tabela de Funcionários, clique em Table, clique em Restructure, será aberta a tela abaixo, role até
a opção Referential Integrity ( integridade referencial ) e clique, clique no botão Define ( que surgirá ).
Clique na Tabela
Cidades, clique na
setinha apontando
para esquerda, clique
no botão OK, será
solicitado um nome
Clique no campo que para a integridade,
relacionaremos digite o nome
Func_Cod_Relaciona_City, Func_City.
clique na setinha pra direita.
Outra maneira:
No Cadastro de Sócios
criaremos a numeração de
registros automaticamente
( via programa ). Na seção
Private crie a variável
NrProx
O primeiro Edit é
utilizado apenas para
localizar registros, não é
campo que faz parte da
tabela.
Insira um
Clique no campo código e na propriedade
ReadOnly = True . Desta forma não será possível
StatusBar, clique
“digitar” o código. Lembre-se que foi criado uma duplo, clique no
variável para criar o código automaticamente – botão amarelo 7
auto-incrementador. vezes (Add new )
para criar as
divisões.
Nesta divisão
será mostrado
a quantidade
de registros
que estão na
tabela.
Soma quantidade de
registros que há na tabela e
mostrará na barra inferior.
Soma todos os
salários da tabela e
mostra no Label10.
Caps, Del ou
NumLock.
Ao excluir o
registro corrente.
Procura registro
através do nome
informado.
Apaga TODOS os
registros da tabela
mediante confirmação.
Crie a tela para pesquisar Nomes, após encontrar o Nome este será transportado para a tela de Recibos.
Veja abaixo, foram digitadas as letras JUR, o cursor esta posicionado no registro JURANDIR PELLIN.
Insira um componente
RadioGroup ( Standard )
Crie o formulário abaixo, insira dois componentes Tables e dois DataSources. Nos dois Tables abaixo
usaremos a tabela de ClientesX ( uma única tabela ).
Outra forma:
Função Right
Função Cgc
O conteúdo digitado no
campo do CPF será
verificado no evento
OnExit, ou seja, quando
perder o foco do campo.
Insira um componente
SpinEdit ( aba Samples ).
A linha em vermelho
mostra como arredondar
o valor.
No exemplo a seguir veremos como criar “campo temporário”, relacionamentos e mais uma maneira de
pesquisar registros.
Crie as duas tabelas abaixo: Na tabela Alunos.db há um campo chamado de Alun_Cod_Relaciona ( este
campo não ficará visível no formulário de Cadastros de Alunos, finalidade deste campo, é unicamente fazer o
relacionamento), que será o campo usado para fazer o relacionamento da tabela de Alunos com a tabela
Professores.
Use o Form Wizard para criar o formulário de entrada de dados para cadastrar os Alunos.
Insira um componente DBEdit, defina duas propriedades, DataSource para Alunos_DS, DataField para
Alun_Cod_Relaciona.
Insira um Table e um DataSource, altere os nomes destes componentes: Table para Profe_TB, DataSource
para Profe_DS. Clique Profe_TB, defina a propriedade DatabaseName = Alias, TableName para
Professores.db ( nome da tabela ). Clique em Profe_DS, DataSet defina Profe_TB e Name para Profe_DS.
Vamos criar o campo temporário para “mostrar” o nome do professor. Clique no componente Alunos_TB,
clique no botão direito, clique em New Field, será mostrado uma tela para definir o nome do campo, tipo,
tamanho etc , veja na página a seguir:
Adiante criaremos um
formulário para filtrar os
registros chamado de
Localiza_Frm.
Clique no DBGrid, defina a propriedade ReadOnly para True, lembre-se, o Grid serve somente para
mostrar os nomes dos professores, e não para cadastrar, alterar ou excluir.
Quando for aberto o formulário de consulta de professores o cursor estará posicionado no Edit para
imediamtamente iniciar a procura de um possível nome de professor.
Passos: Clique no primeiro Table, clique na propriedade DatabaseName e digite o Alias ou caminho onde
estão armazenadas as tabelas, clique na propriedade Name e digite Emp_TB, defina a propriedade
TableName = Empresas.DB. Clique no componente DataSource1, na propriedade DataSet defina Emp_TB
, na propriedade Name = Emp_DS. Clique em Emp_TB, clique no botão direito, Fields Editor, clique direito,
Add fields e clique OK.
Todos os passos acima deverão ser repetidos para as duas outras tabelas (Tables e Datasources ) - (
Funcionários e Cidades ).
Clique duplo no componente Func_TB, será aberta uma pequena tela mostrando os campos, selecione-os,
clique no primeiro campo ( Func_Cod ), mantenha a tecla Ctrl pressionada e clique nos campos desejados,
clique na área azul ( note que todos os campos selecionados ), arraste-os para dentro da TabSheet_Empresas,
solte-os, estes serão posicionados no corpo do TabSheet_Empresas. Este processo é feito para definir os
campos, é apenas uma forma rápida, caso contrário teríamos que definir campo a campo ☺.
Clique no TabSheet_Empresas, insira dois botões Bitbtn para navegar nos registros.
Veja abaixo o programa fonte completo:
Inserindo ícones para os Tabs (abas): Na barra de componentes do Delphi – aba Win32
selecione o componente ImageList, clique duplo para selecionar os ícones desejados,
selecione PageControl, na propriedade Images clique para definir ImageList1. Após será
definido automaticamente os ícone para cada Tab (de acordo com a numeração) ☺
Clique nesta
Clique no PageControl e
região para
na propriedade Image
melhor selecionar
defina o componente
a PageControl.
ImageList1.
Ao clicar o
botão direito.
Crie um botão chamado de Som, no evento OnClick digite a linha de código abaixo: O arquivo de som
aqui é Dog.Wav, poderia ser qualquer outro arquivo.
SND_ASYNC Executa o som assincronicamente, a função retorna assim que inicia o som.
SND_NODEFAULT Especifica que se o som não pode ser tocado a função não toca o som padrão.
SND_MEMORY Use se o som está em um arquivo de recursos.
SNDLOOP Especifica que o som não deve para de tocar até que outro som seja chamado.
SND_NOSTOP Faz com que o som não possa ser interrompido por outro, retorna FALSE se isto
ocorrer.
Insira um form.
No ícone View Unit abra seu projeto.
Imagem deve
estar na pasta do
projeto corrente.
Para resolver este problema precisamos fazer uma pequena função para remover o “ponto” do valor ( 100.22 )
Tabela: Produtos.db
Vamos criar um Modulo de dados para concentrar todos os componentes Query. Insira um
DataModule, na propriedade Name defina o nome DM_Qr. Clique em File – New – DataModule,
insira 8 Query ( plural queries ), defina os nomes de acordo com o gráfico abaixo. Defina a
propriedade DatabaseName seu alias para cada Query do projeto corrente.
Clique no componente Query1, clique na propriedade SQL, clique no lado direito em TStrings (...) e
digite o código SQL para cada componente ( Query1, Query2 ... )
Query1 Query2
SELECT SELECT
Prod_Codigo, Prod_Codigo,
Prod_Descricao, Prod_Descricao,
Prod_Qtde, Prod_Qtde,
Prod_Data, Prod_Data,
Prod_Obs Prod_Tipo
FROM FROM
"Produtos.db" Produtos "Produtos.db" Produtos
WHERE WHERE
(Prod_codigo >= :Cod_Inicial) and (Prod_codigo <= :Cod_Final) (Prod_Data >= :Data_inicial) and (Prod_Data <= :Data_Final)
and (Prod_Tipo = :Tipo)
Query3 Query4
Query5 Todos_Produtos_Qr
SELECT
Prod_Codigo,
Prod_Descricao,
Prod_Qtde,
Prod_Data,
Prod_Tipo
FROM
"Produtos.db" Produtos
WHERE
(Prod_Data >= :Data_Inicial) and (Prod_Data <= :Data_Final)
Produtos_Maior_Que_Qr Todos_Produtos_Igual_Qr
Insira um segundo DataModulo, na propriedade Name defina o nome DM, insira 1 Table e 1
DataSource, defina o nome ( name ) do componente de acordo com o gráfico abaixo, clique em
Produtos_TB, na propriedade DatabaseName defina o Alias ( ou caminho da tabela ), clique na
propriedade TableName, defina o nome da tabela que será usada aqui Produtos.db, clique duplo
em Produtos_TB, clique no botão direito, clique em Add fields e Ok.
Insira um Form, um DbGrid, 7 Datasources, 19 botões BitBtn e10 Edit. Adiante veremos as
propriedades que deverão ser definidas para cada um dos componentes que estão no formulário.
SUM () Soma
AVG () Média
MAX () Máximo
MIN () Mínimo
COUNT(*) Conta registros
Relatório com
Vamos criar os relatórios do programa que criamos na página anterior usando SQL.
Crie um formulário para seleção. Insira um formulário, 3 botões Bitbtn, 8 edit ( edits ) e um
componente RadioGroup. Criaremos 5 formulário para os relatórios
Dataset:
DM_Qr.Todos_Produtos_Qr
Todos_Produtos_Q
Todos_Produtos_Qr
Dataset:
DM_Qr.Todos_Produtos_Igual_QR
Todos_Produtos_Igual_Qr
Dataset:
DM_Qr.Query1
Query1
Query2
Dataset:
DM_Qr.Query5
Query5
Group footer: Insira um componente QrExpr, clique em QrExpr e na propriedade Expression digite
SUM(Query_Data.Prod_Qtde), clique na propriedade ResetAfterPrint e defina o valor para
True.
Formulário do relatório.
Crie uma nova rotina. File – New – Unit. Como padrão o Delphi
atribui o nome de Unit1, salve o arquivo que conterá todas as suas
rotinas com o nome de Rotina_Exemplo
Crie um arquivo para armazenar as rotinas. File New Unit Ok e digite o conteúdo a seguir, salve a Unit
com o nome Minhas_Rotinas.
unit Minhas_Rotinas;
interface Digite esta
uses dbctrls, Graphics; linha
Abra um formulário, na segunda linha dos Uses digite Minhas_Rotinas, para abrir o arquivo das rotinas.
Selecione os objetos (campos) código e Nome apenas:
Clique no campo Código, no evento OnEnter digite Entra_Cor(Sender);
Clique no campo Código, no evento OnExit digite Sai_Cor(Sender);
Clique no campo Nome, no evento OnEnter digite Entra_Cor(Sender);
Clique no campo Nome, no evento OnExit digit: Sai_Cor(Sender);
Fornecedores Clientes
File – New Application, será inserido um formulário, insira dois componentes DBGrid, na propriedade
Name defina o nome para Data_Module_Frm.
Mude a propriedade
Name para DM_Dados
Clique no Table1, propriedade Name para Professores_TB, DatabaseName para Madruga ( Alias ),
TableName para Professores.DB, clique em DataSource1, mude a propriedade Name para
Professore_DS, e o DataSet para Professores_TB.
Clique no Form onde estão os dois DBGrids, File, Use unit, abra a unit dos módulos que foi nomeada
Modulo_Dados, clique no DBGrid dos professores, na propriedade DataSource defina Professores_DS.
Clique no Table2, propriedade Name para Alunos_TB, DatabaseName para Madruga ( Alias ),
TableName para Alunos.DB, clique em DataSource1, mude a propriedade Name para Alunos_DS,
DataSet para Alunos_TB
Clique no Form onde estão os dois DBGrids, File, clique em Use unit, abra o formulário dos módulos
que foi nomeado de Modulo_Dados, clique no DBGrid dos professores, na propriedade DataSource
defina Alunos_DS.
Cadastro de
Professores.
Cadastro de
Alunos.
Insira um form, e 8 botões Bitbtn, insira um Table, um DataSource e um ActionList ( aba Standard ).
Clique em Dataset
selecione as ações, first
( primeiro), prior ( anterior )
etc... como esta no gráfico,
após clique Ok
Após ter associado todos os botões execute e teste. Quando o ponteiro estiver no início da tabela o botão
Anterior e Primeiro estarão desabilitados ( desativados ), este controle é feito automaticamente.
Outro exemplo: Insira dois botões Bitbtn no formulário, um botão “esconde barra” e outro “mostra barra”.
AsString = converte o
conteúdo para texto e
mostra no Edit1.
Converte o conteúdo do
campo Salário para texto,
para exibi-lo no campo
Edit5.
Limpa todos os
campos.
Insira 4 QRDBText. Clique em Nr_Recibo, clique na propriedade Name, defina o nome para
QRDBText_Nr_Recibo, está sendo exibido o nome Nr_Recibo porque o campo foi associado a tabela e este
nome foi definido na tabela ( nomeação dos campos ). Para associar os campos, clique em QRDBText1, clique
em DataSet, defina Frm_Recibo_Dados.Recibo_TB, clique em DataField e defina o nome do campo
Nr_Recibo.
Os passos acima ( item 5 ) deverão ser seguidos para todos os campos deste relatório.
Delphi Aplicado by Jurandir A. Pellin – Timbó – SC (E-mail: delphiewb@gmail.com) 426
Formulário do relatório:
Crie uma unidade chamada Extensos. File – New – Unit. ( veja rotina adiante )
Segue abaixo a rotina de extenso usada no exemplo acima ( File – New – Unit e salve o arquivo com o nome
Extenso )
Crie os índices
secundários.
Se for clicado na
opção Por Código.
No formulário abaixo aumentei a largura das bandas para melhor identificar seus nomes
Segundo formulário do relatório: Agora faremos outro formulário que conterá mais combinações de
filtragem de dados. Com o formulário abaixo poderemos listar pelo intervalo de código e por período.
Opção
selecionada,
Por Código
Opção
selecionada,
Por Data e
Vencto
Mais um exemplo
usando Case ... of
Outra forma
Resultado do relatório:
Veja o Conteúdo do
campo do RadioGroup.
RadioGroup.
No botão “Abre tela de Seleção do Relatório Data” digite a linha abaixo no evento OnClick:
Crie a tela abaixo para entrar com as datas ( clique no ícone Form ).
Insira um componente
QRSysData1 ( aba QReport )
e altere a propriedade Data
para qrsReportTitle.
Insira o
componente
QRTextFilter
( aba QReport )
QReport_Agenda é o relatório.
Digite.
A seguir vamos criar o formulário “preview”. Insira um novo formulário, clique no ícone New Form e
insira os objetos abaixo de acordo com cada balão explicativo:
Insira um
componente
ProgressBar.
( aba Win 32 )
Insira um componente
QRPreview1 ( aba QReport ).
Digite
Observe: O conteúdo da
banda PageHeader é
impressa em todas as folhas,
já o conteúdo da banda Title é
impressa somente na primeira
folha, compare as 3 telas.
Página # 2
Página # 3
Precisamos fazer um campo calculado para mostrar a coluna Estado Civil e sua descrição por extenso e não
através da representação numérica.
Insira um novo formulário, um Table,
defina a propriedade DatabaseName =
Alias, TableName = Agenda.db, clique
no DataSource1, clique na propriedade
DataSet e defina Table1, clique no
DBGrid e defina DataSource1. Insira um
RadioGroup, clique na opção Items e
digite as palavras a seguir uma abaixo da
outra: Solteiro, Casado e Divorciado,
clique na propriedade Columns e digite o
número 3.
Campo calculado
que foi criado.
Clique no DBGrid, crie 3 colunas, clique na primeira coluna, pressione F11 para alternar para as
propriedades, clique na propriedade FieldName e defina o campo Nome, repita este passo para os outros dois
campos.
Ao carregar o DBGrid será mostrada a descrição por extenso e não em forma de números ☺
Estando com o Windows Explorer aberto, clique duplo sobre o programa Programa_par1.exe, é mostrada
a caixa de diálogo de erro.
Ex: 1000-2A/10F=20V
Crie um formulário como exemplo abaixo, insira 4 componentes DBEdit ( aba Data Controls ), associe
cada DBEdit com a propriedade DataSource = Bancos_DS e DataField = Banco_Parte1.
Estamos executando um
Findkey em vários campos
chaves primárias.
Imprimirá o
registro que esta na
memória ( tela ).
Codigo é o nome
do campo da tabela.
Crie o formulário para imprimir o registro selecionado. File – New – Other – Report – Ok. Insira um
componente QRLabel, clique na propriedade Caption e digite Relatório Agenda. Insira quatro componentes
QRLabel, clique no Caption do primeiro componente e digite Código, nomeie todos os outros objetos de
acordo como o exemplo abaixo.
Clique no botão,
será aberta a tela
abaixo:
C:\Delphi Madruga\Exemplo
JURA'S BOOK\Protege
projeto\Sistema
XYZ\Rotina_EWB.pas
após clique
Add e Ok
Pressione Ctrl F12 para abrir a lista das units, clique na unit Sis_Vendas e OK.
Crie um novo projeto ( Protege_Meu_Software ) - File – New – Application. Após ter digitado
programa fonte abaixo, compile-o e execute-o no computador do desenvolvedor ( programador ) para
proteger o sistema, ou seja, será pego o serial da máquina do desenvolvedor e criptografá-lo, certamente o
serial NUNCA será igual ao de outra máquina ☺ espero ☺. Caso alguém copiar o projeto Sis_Vendas e
tentar rodar em outra máquina este não funcionará.
Esta dica é boa se você mesmo for implementar a solução no computador do cliente.
* Crie um arquivo qualquer, de preferência com extensão .dll, .vxd, .udf ou .ins (para deixar o pirateador
confuso), dentro do diretório do \Windows ou \Windows\System;
Desta forma o sistema só roda se encontrar este arquivo (como já disse, pode ser qualquer nome).