Você está na página 1de 69

Dedico este trabalho a Deus, pela oportunidade

de poder estudar e alcanar uma formao


profissional e a todas as pessoas, que direta ou
indiretamente, fizeram parte na vitria de mais
uma etapa da minha vida.

AGRADECIMENTOS
A Deus que me deu o dom da vida e que se fez presente em todos
os momentos difceis, da minha caminhada e sempre estar comigo.
A meus pais, Leoncio da Silva, meu grande pai (In memorian) a
minha Me obrigada por tudo que fez por mim desde o momento que soube que
estava grvida, da ento aconteceu o nascimento e com o passar do tempo me
educou, formou com personalidade, carter e moral, nessa to linda escola da vida,
onde a senhora era a professora. Se no fosse voc, mulher guerreira, batalhadora,
que sempre esteve ao meu lado, quando mais precisei, que fazia carinho, quando eu
sentia qualquer tipo de dor, o que seria de mim, to pequena e indefesa. Essa
pessoa distinta e maravilhosa chama-se Julieta minha linda me. Te amarei para
sempre, mesmo quando deixares de existir um dia.
Ao meu namorado pelas ajudas, compreenso, respeito, pacincia.
Obrigada amor.
Agradeo a todos da famlia UNOPAR de Londrina-PR, tutores
eletrnicos, professores, coordenao, suporte, em fim, todos que trabalham e se
dedicam na tarefa de diminuir a distncia da busca pelo saber.
Aos tutores de sala, que fizeram parte da minha luta, transmitindo,
orientando ajudando a compreender os assuntos do Curso de Tecnologia em Anlise
e Desenvolvimento de Sistemas, Emerson e Mises sempre atenciosos,
esclarecendo dvidas quando possvel.
Aos meus amigos de trabalho, Sanny, Mnica, Nilvan, Elizngela,
Ricardo, Deidiane, Lucas, Z Paulo, Felisberto, pessoas com quem eu tenho o
prazer e a alegria de trabalhar .
Ao meu colega Erick por me ajudar, muito obrigada,
A todos os meus sinceros agradecimentos.

"A Era

da

Informao

oferece

muito

humanidade, e eu gostaria de pensar que ns


nos

elevaremos

apresenta.

Mas

aos

desafios

vital

lembrar

que
que

ela
a

informao no sentido de dados brutos no


conhecimento,

que

conhecimento

no

sabedoria, e que sabedoria no prescincia.


Mas a informao o primeiro passo essencial
para tudo isso."
Arthur C. Clarke

SILVA,Cristina Alves, Cristina. Sistema de Controle de vendas. 2013. 69 pg.


Trabalho de Concluso do Curso de Tecnologia em Anlise e Desenvolvimentos de
Sistemas, Universidade Norte do Paran, Feira de Santana, 2010.

RESUMO

A tecnologia permite o acesso a uma grande quantidade de informao, no entanto


na empresa no exploram todo potencial que a tecnologia pode oferecer, foi
pensando nessa realidade que o presente trabalho visa mostrar a importncia da
utilizao da tecnologia da informao na gesto administrativa, especificamente, no
setor administrativo na empresa status modas, relatando sobre seu funcionamento,
onde se pretende implantar um software de gesto, mostrando as dificuldades na
realizao das tarefas e apresentando uma proposta de um sistema automatizado
para melhoria dessas atividades, atravs de um software desenvolvido com base
nas necessidades observadas, visa-se estruturar as informaes servindo como
base para uma nova forma de organizao dos dados e permitindo a ampliao da
capacidade de compreenso e soluo dos possveis problemas existentes na
empresa no mbito administrativo.
Palavras-chave: Tecnologia. Gesto. Software. Escola. Informao

SILVA,Cristina Alves. Sistema de Controle de vendas. 2013. 69 pg. Work


Completion Course Technology Analysis and System Development, Universidade
Norte do Paran, Feira de Santana, 2010.

ABSTRACT

The technology allows access to a wealth of information, however the schools do not
exploit the full potential that technology can offer, thinking it was this reality that the
present paper shows the importance of using information technology in management,
specifically, the Registrar and pedagogical management of the Centro Lar Mariano,
reporting on its operation, which aims to deploy a software management, showing
the difficulties in performing the tasks and presenting a proposal for an automated
system for improving these activities through a software developed based on
perceived needs, aims to structure the information as the basis for a new way of
organizing data and allowing the expansion of capacity for understanding and solving
the possible problems existing in the institution in the administrative and pedagogical.
Keywords: Technology. Management. Software. School. Information

SUMRIO
1 INTRODUO.......................................................................................................09
2 JUSTIFICATIVA.....................................................................................................10
3 OBJETIVOS...........................................................................................................12
3.1 GERAL ...............................................................................................................12
3.2 ESPECFICOS....................................................................................................12
4 REFERENCIAL TERICO....................................................................................13
4.1 NOVAS TECNOLOGIAS NO AUXILIO DA GESTO ESCOLAR.......................13
4.2 NO MBITO ADMINISTRATIVO E PEDAGGICO...........................................14
5 METODOLOGIA....................................................................................................17
5.1 PERSPECTIVA DO ESTUDO..................................................................17
5.2 DELIMITAO DO ESTUDO..................................................................17
5.3 TCNICA, ANLISE E INTERPRETAO DE DADOS..............................17
5.4 LIMITAES DO ESTUDO....................................................................17
6 CARACTERIZAO DA ORGANIZAO EM ESTUDO....................................18
7 TECNOLOGIA.......................................................................................................20
8 LEVANTAMENTO DE REQUISITOS....................................................................21
8.1 ANLISE DO SISTEMA ATUAL..........................................................................21
8.2 DESCRIO DO SISTEMA PROPOSTO..........................................................21
9 DIAGRAMAS.........................................................................................................22
9.1 DIAGRAMA DE CASO DE USO.........................................................................22
9.2 DIAGRAMA DE CLASSE....................................................................................23
9.3 DIAGRAMA DE SEQUENCIA.............................................................................24
9.4 DIAGRAMA DE ATIVIDADE...............................................................................25
9.5 DIAGRAMA DE ENTIDADE RELACIONAMENTO.............................................27

10 TELAS.................................................................................................................29
11 CDIGO FONTE.................................................................................................39
12 CRONOGRAMA..................................................................................................77
13 CONCLUSO......................................................................................................78
REFERNCIAS BIBLIOGRFICAS........................................................................79

1 INTRODUO
O estgio foi realizado na empresa Mario Rodrigues de Paes EPP
Status modas, com objetivo de identificar os processos ou servios que so
efetuados de forma computadorizada, mas que poderiam ser melhorados, atravs
de uma soluo informatizada que possa dar maior rapidez e controle nas vendas.
O desenvolvimento de um software ajudar no processo de
crescimento intelectual da empresa despertando a sua curiosidade e compreenso
do contedo, desenvolver um mtodo para melhor atendimento ao cliente,
permitindo que os funcionrios transmita de uma forma muito simples o controle de
vendas.

2 JUSTIFICATIVA
O projeto de fundamental importncia para o desenvolvimento
prtico do futuro profissional de anlise e desenvolvimento de sistemas,
principalmente pela oportunidade de aplicar em um processo prtico, todos os
conhecimentos obtidos ao longo do Curso Superior em Anlise de Desenvolvimento
de Sistemas, podendo analisar de perto um problema real e buscar as solues para
esse problema.
Segundo Tanaka (2009, p. 1),
O papel do analista atualmente no o de apenas ser um especialista nas
reas tecnolgicas e recursos tecnolgicos para a soluo de problemas,
mais importante que isso, o analista deve possuir uma viso diferenciada
em relao da sua equipe, pois a ele cabe a completa identificao e
compreenso das necessidades que deram origem ao novo projeto
(tambm chamadas requisitos), assim como anlise das oportunidades que
este projeto poder prover.

O estgio tem papel fundamental na formao do profissional, por


propiciar um contato com um ambiente real, podendo exercitar as suas habilidades e
capacidades na busca de solues tecnolgicas na rea de Tecnologia da
Informao e trazendo um ganho muito grande ao futuro profissional.
Por outro lado essa experincia trar empresa onde o estgio foi
realizado, a possibilidade de resoluo do problema, no caso da empresa Mario
Rodrigues de Paes EPP Status modas,
A escolha do grupo se deu pelo motivo dos pesquisadores estarem
envolvidos diretamente com os profissionais da empresa e pelo desejo de melhorar
o processo de vendas, utilizando os recursos tecnolgicos.
Esperamos que possa haver por parte dos clientes, um maior
interesse e que eles se sintam mais motivados, e sintam realizados com o servio de
atendimento.

3 OBJETIVOS
3.1 OBJETIVO GERAL
Desenvolver um software voltado para a empresa no setor de
vendas que auxilie o profissional a utilizando as ferramentas computacionais.

3.2 OBJETIVOS ESPECFICO

Fazer o uso da informtica como estratgia para melhorar o


processo de vendas;

Observar a dificuldade para implantar e treinar os profissionais


envolvidos diretamente com a tecnologia de informao

Conhecer os benefcios que a tecnologia de informao ir


trazer para a gesto dos negcios.

4 REFERENCIAL TERICO
4.1 TECNOLOGIAS NO AUXLIO DA VENDA
Pensar num ambiente escolar hoje pensar no gestor, professores,
funcionrios e alunos como uma equipe de trabalho em prol do processo ensinoaprendizagem. As concepes de direo e organizao de estruturas educacionais
mudaram, no h mais lugar para o autoritarismo e o distanciamento das questes
burocrticas das pedaggicas.
Atualmente o diretor, tornou-se um gestor, um agente essencial para
o bom xito da aprendizagem, o ato de gerenciar refletir, agir coletivamente de
forma participativa com toda sua equipe de trabalho, de modo, que cada professor,
funcionrio e aluno se perceba como pea fundamental dentro da Unidade Escolar e
principalmente dentro da Sociedade para que assim, a verdadeira educao se
concretize.
De acordo com Priolli (2008), o gestor:
[...] deve, cotidianamente, dar conta de diferentes gestes: do espao, dos
recursos financeiros, de questes legais, da interao com a comunidade do
entorno e com a Secretaria da Educao e das relaes interpessoais (com
funcionrios, professores, famlias). Tudo isso, com um objetivo maior, que,
se no novo, ganhou uma importncia que parecia um pouco esquecida
nos ltimos tempos, a aprendizagem dos alunos. ( p. 6)

Vieira (2003), j destacava a importncia da liderana do gestor para


a insero das novas tecnologias no auxlio gesto escolar:
O novo tipo de gestor escolar precisa ser responsvel pela gerncia do
contedo organizacional, bem como por sua tecnologia. A diminuio das
barreiras ou a criao de situaes favorveis para o contato e a utilizao
de novos conhecimentos baseados na aprendizagem pela prtica-reflexo e
na disseminao desses conhecimentos por toda a organizao, so
processos que podem receber grandes impulsos das lideranas existentes,
pois acima de tudo, a gesto do conhecimento depende dessa liderana. (p.
147)

E para auxiliar esse processo de mudana de gesto, faz-se


necessrio as novas tecnologias que diariamente inovam e se renovam de forma
avassaladora neste sculo XXI. E assim, elas so fundamentais para a vida
empresarial, comercial, social e agora educacional da humanidade, uma vez que
essas tecnologias comeam a se instalar nos ambientes escolares como um

elemento imprescindvel para a aprendizagem.


Conforme Vieira (2003):
[...] a importncia da comunicao e de suas tecnologias nos processos
organizacionais e no apoio s rotinas de trabalho existentes nos mais
diversos nveis e setores econmicos, seja em atividades de programao
de rotinas e processos de organizao, registro, acesso, manipulao e
apresentao de informaes. Para o desenvolvimento dessas tarefas,
podemos contar com diversos tipos de softwares, como os programas
aplicativos bsicos processadores de textos, planilhas eletrnicas etc.; de
simulao de experimentos relacionados com as cincias naturais e sociais;
de comunicao e acesso base de dados via e-mail e internet. (p. 139)

E ainda acrescenta que:


[...] tudo isso s se concretiza quando os envolvidos dominam os conceitos
e as prticas relacionadas com a tecnologia, transpondo-os para o seu
trabalho, o que, no caso do trabalho pedaggico na escola, significa aplicalos no cotidiano de sala de aula e de gesto escolar. (p. 139)

Para isso, importante que toda a comunidade escolar esteja aberta


a novas tecnologias, apesar de que nos ltimos anos o prprio Ministrio de
Educao e Cultura implantou nas escolas o Projeto TV Escola, a assim, atravs dos
recursos audiovisuais como TV, vdeo e canais favorveis aprendizagem,
alcanaram bons resultados, nos ndices educacionais, uma vez que o aluno capta
muito mais informaes atravs das imagens associadas ao som.
Assim est ocorrendo com os computadores, as lousas digitais e
outras ferramentas que aproximam o aluno dos conhecimentos em tempo real, com
muito mais interao e atratividade.
4.2 NO MBITO ADMINISTRATIVO E PEDAGGICO
Essas Tecnologias de Informao e Comunicao vem ajudar a
organizar de modo mais prtico e interativo a gesto administrativa da escola, no
que se refere criao desse Banco de dados que daro suporte ao gestor e
professores quanto a percepo global do alunado, mediante fichas cadastrais e
outras informaes relevantes a vida escolar do aluno e a gesto pedaggica, de
modo, a suscitar reflexes a cerca dos problemas e resultados apresentados pelo
sistema levando toda equipe pedaggica a agir em busca de solues de maneira
eficaz.
De acordo com Almeida (2003):

8
[...] as TICs podem ser incorporadas na escola como suporte para:
comunicao entre os educadores, pais, especialistas, membros da
comunidade e de outras organizaes; desenvolvimento de um banco de
dados gerado na escola que d subsdios para a tomada de decises;
criao de um fluxo de informaes e troca de experincias que realimente
as prticas; realizao de atividades colaborativas que visam a enfrentar os
problemas da realidade; desenvolvimento de projetos relacionados com a
gesto administrativa e pedaggica; representao do conhecimento em
construo pelos alunos e respectivas aprendizagem etc. (ALMEIDA, 2003,
p. 115)

Segundo Vieira (2003):


As caractersticas especficas da profisso docente levam a uma percepo
erronia da realidade, que acaba por comprometer a melhoria do trabalho
pedaggico da escola, principalmente quando se tenta realizar atividades
que atendam s necessidades de cada aluno. [...] a quantidade de
informao gerada internamente na escola muito grande, pois cada aluno
deve ser conhecido detalhadamente em vrios aspectos, o que demanda,
tambm, um contnuo registro do seu desenvolvimento para cada um dos
tpicos avaliados. Porm, a capacidade de armazenagem e articulao das
informaes produzidas na escola normalmente bem reduzida, pois alm
das dificuldades de coleta e de registro de dados devido ao pouco acesso a
recursos tecnolgicos, quando o armazenamento ocorre, elas
sobrecarregam a forma de operar da escola, acarretando pouca valorizao
ou utilidade s informaes coletadas. Isso se deve ao fato de que muitas
informaes a serem registras sobre o aluno no so, na maioria das vezes,
objetivas e quantitativas, mas sim subjetivas e qualitativas, o que demanda
abordagens especficas para sua interpretao e anlise. (VIEIRA, 2003,
p.133-134)

Contudo, necessrio que toda comunidade escolar no somente


esteja aberta para a adeso das novas tecnologias, como importante a formao e
capacitao de todo profissional envolvido para o uso dessas tecnologias, e assim
essas ferramentas no se tornaro mais uma ferramenta para o auxilio a gesto
administrativa, mas se tornaro uma ferramenta slida para a integrao da
administrao pedaggica.
Assim, Almeida (2003), afirma que:
A incorporao das TICs vem se concretizando com maior freqncia nas
situaes em que diretores e comunidade escolar se envolvem nas
atividades como sujeitos do trabalho em realizao, uma vez que o sucesso
dessa incorporao est diretamente relacionado com a mobilizao de
todo o pessoal escolar, cujo apoio e compromisso para com as mudanas
envolvidas nesse processo no se limitam ao mbito estritamente
pedaggico da sala de aula, mas se estendem aos diferentes aspectos
envolvidos com a gesto do espao e do tempo escolar, com a esfera
administrativa e pedaggica. Da a impotncia da formao de todos os
profissionais que atuam na escola, fortalecendo o papel da direo na
gesto das TICs e na busca de condies para o seu uso o ensino
aprendizagem, bem como na administrao e na gesto escolar. (p. 116)

O software, SISEscola auxiliar de maneira muito significativa a


realidade administrativa e pedaggica do Cento Lar Mariano, pois permitir uma
visibilidade maior de todo seu alunado, um completo perfil dos envolvidos no
processo ensino-aprendizagem, sejam eles alunos e professores, uma rapidez no
processo de matrcula e uma preciso nos dados estatsticos, alem da facilidade em
realimentar as informaes sempre eu necessrias. Permitindo uma excelente
informao e comunicao.

10

5 METODOLOGIA
5.1. PERSPECTIVA DO ESTUDO
O presente trabalho foi elaborado com base em pesquisa
documental, exploratria, qualitativa e descritiva, obtendo dados primrios, que
foram coletados por meio de conversas informais e entrevistas com os funcionrios
envolvidos tendo, como foco, a investigao dos problemas existentes dentro do
setor administrativo da empresa.
5.2. DELIMITAO DO ESTUDO
O estudo foi realizado na Empresa Mario Rodrigues de Paes EPP
Status moda, que uma empresa que oferece roupas de moda, localizada em Feira
de Santana.
5.3. TCNICA, ANLISE E INTERPRETAO DE DADOS
A partir das respostas obtidas pelas pessoas envolvidas nesta
pesquisa, pretendeu-se desenvolver um prottipo de um software que iria
estabelecer uma uniformidade na qualidade da informao, atendendo as
necessidades do setor e resultando conseqentemente em um melhor desempenho
da empresa, garantindo intervenes rpidas e eficientes para solucionar os
problemas.
5.4. LIMITAES DO ESTUDO
No houve dificuldade na coleta de dados, o questionrio utilizado
na obteno das informaes foi aplicado de forma espontnea, houve apenas o
acrscimo de algumas perguntas que no estavam previamente elaboradas, porm
foram respondidas de forma adequada garantindo uma boa qualidade na
investigao.

11

6 CARACTERIZAO DA ORGANIZAO EM ESTUDO


Nome da empresa.
Mario Rodrigues de Paes Epp Status modas
Endereo completo.
Rua Sales Barbosa, 454 - Centro Feira de Santana - BA
Telefone / Fax.
(75) 3624-9717
Website; e-mail.:
Nome e cargo da chefia direta.
Mrio - Proprietrio
Ramo de atividade e rea de atuao. (em qualquer uma das reas
relacionadas no regulamento de estgio).
Comrcio
Nmeros de empregados da empresa.
8 empregados
Categorias dos profissionais que atuam na empresa.
Administradores, vendedores
Organograma da empresa.

Produtos e servios desenvolvidos pela empresa.


Roupas e acessrios
Histrico da Empresa. (Elaborar perguntas para fazer o histrio da Empresa)
A empresa Mario Rodrigues de Paes Epp Status modas est localizada na Rua
Sales Barbosa, 454 - Centro Feira de Santana - BA, sua atividade est volta para o
comrcio varejista de artigos do vesturio e acessrios. Foi inaugurado o dia 14 de
agosto de 2000. Status modas uma loja multimarcas que respeita a diversidade e
a variedade de modelos e tendncias para vestir o seu estilo de maneira
democrtica, sempre pensando na qualidade dos seus produtos e no compromisso
de apresentar o melhor da moda com um preo acessvel para os seus clientes.

12

7 TECNOLOGIA
O software ser desenvolvido em Delphi especificamente o Delphi
XE que uma interface de desenvolvimento de software, atualmente o Delphi
produzido pela Embarcadeiro, utiliza uma linguagem orientada a objeto facilitando o
desenvolvimento de aplicativos em desktop, aplicao multicamada, cliente/servidor
e compatvel com a maioria dos bancos de dados do mercado. O Delphi permite
desenvolvimento de aplicaes para plataforma Windows, possui um ambiente de
desenvolvimento fcil de usar, com uma grande biblioteca de componentes visuais:
botes, grficos, caixa de dilogos, tabelas de banco de dados e as principais

13

vantagens so: facilidade na alterao e implementao dos cdigos e a velocidade


no desenvolvimento e na execuo dos aplicativos.
O banco de dados utilizado para o desenvolvimento desta aplicao
ser o Firebird que um banco de dados relacional, que armazena, manipula e
recupera dados na forma de tabelas, alm disso, o Firebird gratuito, seguro,
confivel, suporta o acesso de diversos usurios simultaneamente, apesar do
tamanho do seu instalador, O Firebird um SGBD (Sistema de Gerenciamento do
Banco de Dados) completo com um bom desempenho. No Windows o Firebird
executado como um servio ou como modo de aplicao, seus utilitrios permite
criar banco de dados, recuperar estatstica, executar comandos e scripts SQL,
efetuar backups e restoures, etc.
A UML (Unified Modeling Language) uma linguagem para
especificao, visualizao e desenvolvimento do sistema orientado a objetos, ela
reuni os principais mtodos existentes, e considerada umas das linguagens mais
expressivas para a modelagem. Por meio dos diagramas possvel representar os
sistemas de softwares nas mais diversas formas de visualizao. Ajuda na
comunicao das pessoas envolvidas no processo de desenvolvimento, pois
apresenta uma forma fcil de entendimento. O Jude Community foi a ferramenta de
modelagem UML, utilizada neste trabalho para o desenvolvimento dos Diagramas de
Casos de Uso, Diagrama de Classes, Diagrama de Seqncia, Diagrama de
Atividades deste trabalho.

8 LEVANTAMENTO DE REQUISITOS
8.1 ANLISE DO SISTEMA ATUAL
As necessidades da empresa e basicamente o controle de vendas.
Apartir destes requisito bsicos, se montou a estrutura bsica do software.
E uma empresa com grande movimentao de vendas de roupas de
festa que se tem a necessidade de criar um software para controle de roupas.
Todo o software deve seguir a riscar fazendo vrios testes antes de
mandar para o setor especfico, um dos fatos mais importantes a ser seguidos.

14

Devemos determinar antes da construo do software alguns


critrios que desejamos manter no software para quando ele for construdo.
8.2 DESCRIO DO SISTEMA PROPOSTO
Com o objetivo de melhorar a organizao das informaes na
empresa, foi sugerido o desenvolvimento de um software, que possibilitar aos
profissionais do setor, rapidez nos processos, atividades muito mais dinmicas e
objetivas. A idia foi automatizar as atividades de rotina dentro da empresa,
disponibilizando em um banco de dados, todos os dados pessoais e dados
administrativos, clientes e outras informaes pertinentes ao setor, dessa forma
ento as informaes estariam disponveis para o acesso dos profissionais e
conseqentemente seria muito mais fcil obter documentos importantes de maneira
rpida e eficaz. O sistema proposto possui as seguintes caractersticas: Cadastro de
clientes, produtos entre outros.

DIAGRAMA DE CASO DE USO

15

DIAGRAMA DE CLASSES

16

DIAGRAMA DE SEQUENCIA

17

DIAGRAMA DE ATIVIDADE

18

DIAGRAMA DE ENTIDADE RELACIONAMENTO

19

TELAS

20

21

22

23

24

Tela Principal:

unit Principal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ImgList, PlatformDefaultStyleActnCtrls, ActnMan, Menus,
ToolWin, ActnCtrls, ActnMenus, CustomizeDlg, jpeg, ExtCtrls, ActnColorMaps,
Ribbon, RibbonLunaStyleActnCtrls, RibbonActnMenus, StdCtrls, shellapi;
type
TfrmPrincipal = class(TForm)
Acoes: TActionManager;
Imagens: TImageList;
Ac_cliente: TAction;
Ac_produto: TAction;
Ac_funcionario: TAction;
Ac_sair: TAction;
ac_PDV: TAction;
ac_lista_cliente: TAction;
ac_vendas_por_dia: TAction;
ac_notepad: TAction;
ac_calculadora: TAction;
ac_internet: TAction;
ac_logoff: TAction;
ac_perfil: TAction;
ac_help: TAction;
ac_sobresistema: TAction;
Image1: TImage;
ac_Consult_Pedido: TAction;
Ribbon1: TRibbon;
RibbonPage1: TRibbonPage;
RibbonGroup1: TRibbonGroup;
RibbonApplicationMenuBar1: TRibbonApplicationMenuBar;
ac_evento: TAction;
RibbonPage6: TRibbonPage;
RibbonGroup6: TRibbonGroup;
RibbonGroup2: TRibbonGroup;
RibbonGroup5: TRibbonGroup;
procedure Ac_clienteExecute(Sender: TObject);
procedure Ac_produtoExecute(Sender: TObject);
procedure Ac_funcionarioExecute(Sender: TObject);
procedure ac_eventoExecute(Sender: TObject);
procedure ac_PDVExecute(Sender: TObject);
procedure ac_notepadExecute(Sender: TObject);
procedure ac_calculadoraExecute(Sender: TObject);
procedure ac_internetExecute(Sender: TObject);

25

private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
implementation
uses UdmPrincipal, ufrmModelo, Cadastro_Clientes, UfrmCadCliente,
UfrmCadProduto, UfrmCadFuncionario, UdmFuncionario, UfrmCadEvento,
UfrmCadVenda, frm_teste;
{$R *.dfm}
procedure TfrmPrincipal.ac_calculadoraExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'calc.exe', '', nil,sw_shownormal);//exibe a calculadora
end;
procedure TfrmPrincipal.Ac_clienteExecute(Sender: TObject);
begin
try
frmCadCliente:=TfrmCadCliente.create(self);
frmCadCliente.ShowModal;
finally
freeAndNil(frmCadCliente);
end;
end;
procedure TfrmPrincipal.ac_eventoExecute(Sender: TObject);
begin
try
frmCadEvento:=TfrmCadEvento.create(self);
frmCadEvento.ShowModal;
finally
freeAndNil(frmCadEvento);
end
end;
procedure TfrmPrincipal.Ac_funcionarioExecute(Sender: TObject);
begin
try
frmCadFuncionario:=TfrmCadFuncionario.create(self);
frmCadFuncionario.ShowModal;
finally
freeAndNil(frmCadFuncionario);
end

26

end;
procedure TfrmPrincipal.ac_internetExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'iexplore.exe', '', nil,sw_shownormal);//exibe a internet
end;
procedure TfrmPrincipal.ac_notepadExecute(Sender: TObject);
begin
shellexecute(handle, 'open', 'notepad.exe', '', nil,sw_shownormal);//exibe o bloco de
notas
end;
procedure TfrmPrincipal.ac_PDVExecute(Sender: TObject);
begin
try
frmCadVenda:=TfrmCadVenda.create(self);
frmCadVenda.ShowModal;
finally
freeAndNil(frmCadVenda);
end
end;
procedure TfrmPrincipal.Ac_produtoExecute(Sender: TObject);
begin
try
frmCadProduto:=TfrmCadProduto.create(self);
frmCadProduto.ShowModal;
finally
freeAndNil(frmCadProduto);
end
end;
end.

27

Tela de DataModule referente a Tela Principal

unit UdmPrincipal;
interface
uses
SysUtils, Classes, DBXMSSQL, DB, DBClient, Provider, SqlExpr, FMTBcd;
type
TdmPrincipal = class(TDataModule)
SQLConnection1: TSQLConnection;
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmPrincipal: TdmPrincipal;
implementation
{$R *.dfm}
end.
Tela de Cadastro de Clientes

unit UfrmCadCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadCliente = class(TfrmModelo)
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;

28

DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;
Label12: TLabel;
DBEdit12: TDBEdit;
procedure FormCreate(Sender: TObject);
procedure ac_pesquisarExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadCliente: TfrmCadCliente;
implementation
uses UdmCliente, UfrmPesquisa;
{$R *.dfm}
procedure TfrmCadCliente.ac_pesquisarExecute(Sender: TObject);
begin
inherited;
try
frmPesquisa:=TfrmPesquisa.Create(self);
frmPesquisa.Dts.DataSet:=dmCliente.cdsPesqCliente;
frmPesquisa.ShowModal;
finally
With dmcliente.cdsCadCliente do
begin
Close;
FetchParams;

29

Params.ParamByName('pID').AsInteger:= dmCliente.cdsPesqClienteID.AsInteger;
Open;
end;
freeAndNil(frmPesquisa);
end;
end;
procedure TfrmCadCliente.Button1Click(Sender: TObject);
begin
inherited;
dmcliente.cdsCadCliente.Next;
end;
procedure TfrmCadCliente.Button2Click(Sender: TObject);
begin
inherited;
dmcliente.cdsCadCliente.last;
end;
procedure TfrmCadCliente.FormCreate(Sender: TObject);
begin
inherited;
dmCliente:=TdmCliente.Create(self);
dmCliente.cdsCadCliente.Open;
end;
end.
Tela de DataModule referente a Tela de Cadastro de Cliente

unit UdmCliente;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
Tdmcliente = class(TDataModule)
sdsCadCliente: TSQLDataSet;
dspCadCliente: TDataSetProvider;
cdsCadCliente: TClientDataSet;
cdsCadClienteNOME: TStringField;
cdsCadClienteRAZAO_SOCIAL: TStringField;
cdsCadClienteTIPO_PESSOA: TStringField;
cdsCadClienteCNPJ: TStringField;
cdsCadClienteCPF: TStringField;
cdsCadClienteEMAIL: TStringField;
cdsCadClienteENDERECO: TStringField;

30

cdsCadClienteCIDADE: TStringField;
cdsCadClienteBAIRRO: TStringField;
cdsCadClienteESTADO: TStringField;
cdsCadClienteTELEFONE: TStringField;
cdsCadClienteCEP: TStringField;
sdsPesqCliente: TSQLDataSet;
dspPesqCliente: TDataSetProvider;
cdsPesqCliente: TClientDataSet;
sdsPesqClienteID: TIntegerField;
sdsPesqClienteNOME: TStringField;
sdsPesqClienteRAZAO_SOCIAL: TStringField;
sdsPesqClienteTIPO_PESSOA: TStringField;
sdsPesqClienteCNPJ: TStringField;
sdsPesqClienteCPF: TStringField;
sdsPesqClienteEMAIL: TStringField;
sdsPesqClienteENDERECO: TStringField;
sdsPesqClienteCIDADE: TStringField;
sdsPesqClienteBAIRRO: TStringField;
sdsPesqClienteESTADO: TStringField;
sdsPesqClienteTELEFONE: TStringField;
sdsPesqClienteCEP: TStringField;
cdsPesqClienteID: TIntegerField;
cdsPesqClienteNOME: TStringField;
cdsPesqClienteRAZAO_SOCIAL: TStringField;
cdsPesqClienteTIPO_PESSOA: TStringField;
cdsPesqClienteCNPJ: TStringField;
cdsPesqClienteCPF: TStringField;
cdsPesqClienteEMAIL: TStringField;
cdsPesqClienteENDERECO: TStringField;
cdsPesqClienteCIDADE: TStringField;
cdsPesqClienteBAIRRO: TStringField;
cdsPesqClienteESTADO: TStringField;
cdsPesqClienteTELEFONE: TStringField;
cdsPesqClienteCEP: TStringField;
procedure cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmcliente: Tdmcliente;
implementation
uses UdmPrincipal;

31

{$R *.dfm}
procedure Tdmcliente.cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure Tdmcliente.cdsPesqClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Cadastro de Funcionrios

unit UfrmCadFuncionario;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadFuncionario = class(TfrmModelo)
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label9: TLabel;
DBEdit9: TDBEdit;
Label10: TLabel;
DBEdit10: TDBEdit;
Label11: TLabel;
DBEdit11: TDBEdit;

32

procedure FormCreate(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadFuncionario: TfrmCadFuncionario;
implementation
uses UdmFuncionario;
{$R *.dfm}
procedure TfrmCadFuncionario.FormCreate(Sender: TObject);
begin
inherited;
dmFuncionario:=TdmFuncionario.Create(self);
dmFuncionario.cdsCadFuncionario.Open;
end;
end.
Datamodule do Cadastro de Funcionrio

unit UdmFuncionario;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
TdmFuncionario = class(TDataModule)
sdsCadFuncionario: TSQLDataSet;
dspCadFuncionario: TDataSetProvider;
cdsCadFuncionario: TClientDataSet;
sdsPesqFuncionario: TSQLDataSet;
dspPesqFuncionario: TDataSetProvider;
cdsPesqFuncionario: TClientDataSet;
cdsCadFuncionarioNOME: TStringField;
cdsCadFuncionarioCPF: TStringField;
cdsCadFuncionarioEMAIL: TStringField;
cdsCadFuncionarioSETOR: TStringField;
cdsCadFuncionarioENDERECO: TStringField;
cdsCadFuncionarioCIDADE: TStringField;
cdsCadFuncionarioESTADO: TStringField;

33

cdsCadFuncionarioTELEFONE: TStringField;
cdsCadFuncionarioBAIRRO: TStringField;
cdsCadFuncionarioCEP: TStringField;
sdsPesqFuncionarioID: TIntegerField;
sdsPesqFuncionarioNOME: TStringField;
sdsPesqFuncionarioCPF: TStringField;
sdsPesqFuncionarioEMAIL: TStringField;
sdsPesqFuncionarioSETOR: TStringField;
sdsPesqFuncionarioENDERECO: TStringField;
sdsPesqFuncionarioCIDADE: TStringField;
sdsPesqFuncionarioESTADO: TStringField;
sdsPesqFuncionarioTELEFONE: TStringField;
sdsPesqFuncionarioBAIRRO: TStringField;
sdsPesqFuncionarioCEP: TStringField;
cdsPesqFuncionarioID: TIntegerField;
cdsPesqFuncionarioNOME: TStringField;
cdsPesqFuncionarioCPF: TStringField;
cdsPesqFuncionarioEMAIL: TStringField;
cdsPesqFuncionarioSETOR: TStringField;
cdsPesqFuncionarioENDERECO: TStringField;
cdsPesqFuncionarioCIDADE: TStringField;
cdsPesqFuncionarioESTADO: TStringField;
cdsPesqFuncionarioTELEFONE: TStringField;
cdsPesqFuncionarioBAIRRO: TStringField;
cdsPesqFuncionarioCEP: TStringField;
procedure cdsCadFuncionarioBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqFuncionarioBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmFuncionario: TdmFuncionario;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure
TdmFuncionario.cdsCadFuncionarioBeforeApplyUpdates(Sender:
TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;

34

procedure
TdmFuncionario.cdsPesqFuncionarioBeforeApplyUpdates(Sender:
TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.

Tela de Cadastro de Produto

unit UfrmCadProduto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,
ExtCtrls, Mask, DBCtrls;
type
TfrmCadProduto = class(TfrmModelo)
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBEdit8: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadProduto: TfrmCadProduto;

35

implementation
uses UdmProduto, Cadastro_Produtos;
{$R *.dfm}
procedure TfrmCadProduto.FormCreate(Sender: TObject);
begin
inherited;
dmProduto:=TdmProduto.Create(self);
dmProduto.cdsCadProduto.Open;
end;
end.
DataModule de Cadastro de Produto

unit UdmProduto;
interface
uses
SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;
type
TdmProduto = class(TDataModule)
sdsCadProduto: TSQLDataSet;
dspCadProduto: TDataSetProvider;
cdsCadProduto: TClientDataSet;
sdsPesqProduto: TSQLDataSet;
dspPesqProduto: TDataSetProvider;
cdsPesqProduto: TClientDataSet;
cdsCadProdutoPRODUTO: TStringField;
cdsCadProdutoREFERENCIA: TStringField;
cdsCadProdutoTIPO_PRODUTO: TStringField;
cdsCadProdutoCOR: TStringField;
cdsCadProdutoDATA_CADASTRO: TSQLTimeStampField;
sdsPesqProdutoId: TIntegerField;
sdsPesqProdutoPRODUTO: TStringField;
sdsPesqProdutoREFERENCIA: TStringField;
sdsPesqProdutoTIPO_PRODUTO: TStringField;
sdsPesqProdutoCOR: TStringField;
sdsPesqProdutoDATA_CADASTRO: TSQLTimeStampField;
sdsPesqProdutoPRECO: TFMTBCDField;
sdsPesqProdutoQUANTIDADE: TIntegerField;
cdsPesqProdutoId: TIntegerField;
cdsPesqProdutoPRODUTO: TStringField;
cdsPesqProdutoREFERENCIA: TStringField;

36

cdsPesqProdutoTIPO_PRODUTO: TStringField;
cdsPesqProdutoCOR: TStringField;
cdsPesqProdutoDATA_CADASTRO: TSQLTimeStampField;
cdsPesqProdutoPRECO: TFMTBCDField;
cdsPesqProdutoQUANTIDADE: TIntegerField;
cdsCadProdutoPRECO: TFloatField;
cdsCadProdutoQUANTIDADE: TFloatField;
procedure cdsCadProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsPesqProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmProduto: TdmProduto;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure TdmProduto.cdsCadProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmProduto.cdsPesqProdutoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Cadastro de Evento

unit UfrmCadEvento;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, UfrmModelo, DBActns, ActnList, DB, ImgList, StdCtrls, Buttons,

37

ExtCtrls, DBCtrls, Mask;


type
TfrmCadEvento = class(TfrmModelo)
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBEdit5: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;
DBEdit7: TDBEdit;
Label8: TLabel;
DBMemo1: TDBMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCadEvento: TfrmCadEvento;
implementation
uses UdmEvento;
{$R *.dfm}
procedure TfrmCadEvento.FormCreate(Sender: TObject);
begin
inherited;
dmEvento:=TdmEvento.Create(self);
dmEvento.cdsCadEvento.Open;
end;
end.
Datamodule de Cadastro de Evento
unit UdmEvento;
interface
uses

38

SysUtils, Classes, FMTBcd, DB, DBClient, Provider, SqlExpr;


type
TdmEvento = class(TDataModule)
sdsCadEvento: TSQLDataSet;
dspCadEvento: TDataSetProvider;
cdsCadEvento: TClientDataSet;
sdsPesqEvento: TSQLDataSet;
dspPesqEvento: TDataSetProvider;
cdsPesqEvento: TClientDataSet;
cdsCadEventoNOME_EVENTO: TStringField;
cdsCadEventoDATA_EVENTO: TSQLTimeStampField;
cdsCadEventoENDERECO_EVENTO: TStringField;
cdsCadEventoCIDADE_EVENTO: TStringField;
cdsCadEventoBAIRRO_EVENTO: TStringField;
cdsCadEventoESTADO_EVENTO: TStringField;
cdsCadEventoOBS: TMemoField;
sdsPesqEventoID: TIntegerField;
sdsPesqEventoNOME_EVENTO: TStringField;
sdsPesqEventoDATA_EVENTO: TSQLTimeStampField;
sdsPesqEventoENDERECO_EVENTO: TStringField;
sdsPesqEventoCIDADE_EVENTO: TStringField;
sdsPesqEventoBAIRRO_EVENTO: TStringField;
sdsPesqEventoESTADO_EVENTO: TStringField;
sdsPesqEventoOBS: TMemoField;
cdsPesqEventoID: TIntegerField;
cdsPesqEventoNOME_EVENTO: TStringField;
cdsPesqEventoDATA_EVENTO: TSQLTimeStampField;
cdsPesqEventoENDERECO_EVENTO: TStringField;
cdsPesqEventoCIDADE_EVENTO: TStringField;
cdsPesqEventoBAIRRO_EVENTO: TStringField;
cdsPesqEventoESTADO_EVENTO: TStringField;
cdsPesqEventoOBS: TMemoField;
procedure cdsCadEventoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmEvento: TdmEvento;
implementation
uses UdmPrincipal;

39

{$R *.dfm}
procedure TdmEvento.cdsCadClienteBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmEvento.cdsCadEventoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela de Pedido de Venda

unit UfrmCadVenda;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, ExtCtrls, StdCtrls, Mask, DBCtrls, Buttons,
ComCtrls;
type
TfrmCadVenda = class(TForm)
PageControl2: TPageControl;
tsPedido: TTabSheet;
tsPesquisa: TTabSheet;
dsProduto: TDataSource;
dtsItens: TDataSource;
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
Label12: TLabel;
Button2: TButton;
Edit1: TEdit;
DataSource2: TDataSource;
tsPesqCliente: TTabSheet;
tsPesqFuncionario: TTabSheet;
tsPesqEvento: TTabSheet;
Label9: TLabel;
ComboBox2: TComboBox;
Edit5: TEdit;
DBGrid2: TDBGrid;
Button1: TButton;
Label11: TLabel;

40

ComboBox4: TComboBox;
Edit7: TEdit;
DBGrid4: TDBGrid;
Label13: TLabel;
ComboBox5: TComboBox;
Edit8: TEdit;
DBGrid5: TDBGrid;
Button4: TButton;
Button5: TButton;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button3: TButton;
Label1: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
btnNovo: TButton;
Label2: TLabel;
DBEdit1: TDBEdit;
DataSource3: TDataSource;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpeedButton3: TSpeedButton;
Label6: TLabel;
DBEdit3: TDBEdit;
Label7: TLabel;
DBEdit4: TDBEdit;
Label8: TLabel;
DBEdit5: TDBEdit;
btnGravar: TButton;
dtp_data: TDateTimePicker;
dsFuncionario: TDataSource;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
dsEvento: TDataSource;
DBGrid3: TDBGrid;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure btnNovoClick(Sender: TObject);
procedure btnGravarClick(Sender: TObject);

41

procedure dbgItensKeyDown(Sender: TObject; var Key: Word;


Shift: TShiftState);
procedure Button5Click(Sender: TObject);
procedure DBGrid4DblClick(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure DBGrid5DblClick(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure DBGrid3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid3ColExit(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
procedure Habilita_ts (ts:TTabSheet);
procedure Processa_Dados;
Procedure arruma;
public
{ Public declarations }
end;
var
frmCadVenda: TfrmCadVenda;
implementation
uses UdmPedidoVenda, UdmPrincipal;
{$R *.dfm}
procedure TfrmCadVenda.arruma;
begin
dmPedidoVenda.cdsProcFuncionario.Close;
dmPedidoVenda.sdsProcFuncionario.ParamByName('ID').Value
dmPedidoVenda.cdsCabecalhoID_FUNCIONARIO.Value;
dmPedidoVenda.cdsProcFuncionario.Open;
Edit3.Text := dmPedidoVenda.cdsProcFuncionarioNOME.Value;
dmPedidoVenda.cdsProcCliente.Close;
dmPedidoVenda.sdsProcCliente.ParamByName('ID').Value
dmPedidoVenda.cdsCabecalhoID_CLIENTE.Value;
dmPedidoVenda.cdsProcCliente.Open;
Edit2.Text := dmPedidoVenda.cdsProcClienteNOME.Value;
dmPedidoVenda.cdsProcEvento.Close;
dmPedidoVenda.sdsProcEvento.ParamByName('ID').Value

:=

:=

:=

42

dmPedidoVenda.cdsCabecalhoID_LOCAL_EVENTO.Value;
dmPedidoVenda.cdsProcEvento.Open;
Edit4.Text := dmPedidoVenda.cdsProcEventoNOME_EVENTO.Value;
end;
procedure TfrmCadVenda.btnGravarClick(Sender: TObject);
begin
// dmPedidoVenda.cdsItem.Post;
Processa_Dados;
try
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then
dmPedidoVenda.cdsCabecalho.Post;
if dmPedidoVenda.cdsItem.State in [dsInsert, dsEdit] then
dmPedidoVenda.cdsItem.Post;
Except
On E:exception do begin
if Pos('must have a value',E.Message) > 0 then
ShowMessage( 'Preencha todos os campos' )
else ShowMessage(e.Message);
Exit;
end;
end;
dmPedidoVenda.cdsCabecalho.ApplyUpdates(0);
//ShowMessage(inttostr(dmPedidoVenda.cdsItem.RecordCount));
dmPedidoVenda.cdsItem.ApplyUpdates(0);
btnGravar.Enabled:= false;
btnNovo.Enabled:= true;
end;
procedure TfrmCadVenda.btnNovoClick(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Append;
Edit2.Text := '';
Edit3.Text := '';
Edit4.Text := '';
dmPedidoVenda.cdsGen.Open;
dmPedidoVenda.cdsCabecalhoID_VENDA.Value
dmPedidoVenda.cdsGenid.Value;
dmPedidoVenda.cdsGen.Close;
btnNovo.Enabled := false;
btnGravar.Enabled:= true;

:=

end;
procedure TfrmCadVenda.Button1Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcCliente.Close;
case ComboBox2.ItemIndex of
0:dmPedidoVenda.sdsProcCliente.ParamByName('ID').Value := Edit5.Text;
1:dmPedidoVenda.sdsProcCliente.ParamByName('NOME').Value := '%' +

43

Edit5.Text + '%';
2:dmPedidoVenda.sdsProcCliente.ParamByName('CNPJ').Value := '%' +
Edit5.Text + '%';
3:dmPedidoVenda.sdsProcCliente.ParamByName('CPF').Value := '%' +
Edit5.Text + '%';
end;
dmPedidoVenda.cdsProcCliente.Open;
end;
procedure TfrmCadVenda.Button2Click(Sender: TObject);
begin
dmPedidoVenda.cdsProduto.Close;
DBGrid2.ReadOnly := true;
case ComboBox1.ItemIndex of
0:dmPedidoVenda.sdsProduto.ParamByName('ID').Value := Edit1.Text;
1:dmPedidoVenda.sdsProduto.ParamByName('PRODUTO').Value := '%' +
Edit1.Text + '%';
2:dmPedidoVenda.sdsProduto.ParamByName('REFERENCIA').Value := '%' +
Edit1.Text + '%';
end;
dmPedidoVenda.cdsProduto.Open;
end;
procedure TfrmCadVenda.Button3Click(Sender: TObject);
begin
if dmPedidoVenda.cdsItem.State in [dsInsert] then
dmPedidoVenda.cdsItem.Post;
Habilita_ts(tsPedido);
tsPesquisa.Show;
end;
procedure TfrmCadVenda.Button4Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcEvento.Close;
case ComboBox4.ItemIndex of
0:dmPedidoVenda.sdsProcEvento.ParamByName('ID').Value := Edit8.Text;
1:dmPedidoVenda.sdsProcEvento.ParamByName('NOME').Value := '%' +
Edit8.Text + '%';
end;
dmPedidoVenda.cdsProcEvento.Open;
end;
procedure TfrmCadVenda.Button5Click(Sender: TObject);
begin
dmPedidoVenda.cdsProcFuncionario.Close;
case ComboBox4.ItemIndex of
0:dmPedidoVenda.sdsProcFuncionario.ParamByName('ID').Value := Edit7.Text;
1:dmPedidoVenda.sdsProcFuncionario.ParamByName('NOME').Value := '%' +
Edit7.Text + '%';
2:dmPedidoVenda.sdsProcFuncionario.ParamByName('CPF').Value := '%' +

44

Edit7.Text + '%';
end;
dmPedidoVenda.cdsProcFuncionario.Open;
end;
procedure TfrmCadVenda.Button6Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Edit;
dmPedidoVenda.cdsItem.Edit;
end;
procedure TfrmCadVenda.Button7Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Cancel;
dmPedidoVenda.cdsItem.Cancel;
dmPedidoVenda.cdsItem.Close;
dmPedidoVenda.cdsItem.Open;
btnNovo.Enabled := true;
end;

procedure TfrmCadVenda.Button8Click(Sender: TObject);


begin
dmPedidoVenda.cdsCabecalho.Prior;
arruma;
dmPedidoVenda.cdsItem.Close;
dmPedidoVenda.sdsItem.ParamByName('pID_VENDA').Value
dmPedidoVenda.cdsCabecalhoID_VENDA.Value;
dmPedidoVenda.CdsItem.open;

:=

end;
procedure TfrmCadVenda.Button9Click(Sender: TObject);
begin
dmPedidoVenda.cdsCabecalho.Next;
arruma;
dmPedidoVenda.cdsItem.Close;
dmPedidoVenda.sdsItem.ParamByName('pID_VENDA').Value
dmPedidoVenda.cdsCabecalhoID_VENDA.Value;
dmPedidoVenda.CdsItem.open;
end;
procedure TfrmCadVenda.dbgItensKeyDown(Sender: TObject; var Key: Word;

:=

45

Shift: TShiftState);
begin
case key of
VK_RETURN:Button3.SetFocus;
end;
end;
procedure TfrmCadVenda.DBGrid1DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProduto.IsEmpty then
begin
dmPedidoVenda.cdsItem.Append;
dmPedidoVenda.cdsItemID_PRODUTO.Value:=
dmPedidoVenda.cdsProdutoID.Value;
dmPedidoVenda.cdsItemVL_UNITARIO.Value:=
dmPedidoVenda.cdsProdutoPRECO.Value;
dmPedidoVenda.cdsItemID_VENDA.Value:=
dmPedidoVenda.cdsCabecalhoID_VENDA.Value;
end;
dmPedidoVenda.cdsProduto.Close;
end;
procedure TfrmCadVenda.DBGrid2DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcCliente.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_CLIENTE.Value:=
dmPedidoVenda.cdsProcClienteID.Value;
Edit2.Text:= dmPedidoVenda.cdsProcClienteNOME.Value;
dmPedidoVenda.cdsProcCliente.Close;
//
DBGrid2.ReadOnly := true;
end;
end;
procedure TfrmCadVenda.DBGrid3ColExit(Sender: TObject);
begin
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value:= 0;
//
dmPedidoVenda.cdsItem.First;
while not dmPedidoVenda.cdsItem.Eof do
begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.edit;

:=
+

46

dmPedidoVenda.cdsItemTOTAL_ITEM.Value
:=
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.Next;
end;
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;
end;
end;
procedure TfrmCadVenda.DBGrid3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_RETURN:Button3.SetFocus;
end;
end;
procedure TfrmCadVenda.DBGrid4DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcFuncionario.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_FUNCIONARIO.Value:=
dmPedidoVenda.cdsProcFuncionarioID.Value;
Edit3.Text:= dmPedidoVenda.cdsProcFuncionarioNOME.Value;
dmPedidoVenda.cdsProcFuncionario.Close;
end;
end;
procedure TfrmCadVenda.DBGrid5DblClick(Sender: TObject);
begin
Habilita_ts(tsPedido);
if not dmPedidoVenda.cdsProcEvento.IsEmpty then
begin
dmPedidoVenda.cdsCabecalhoID_LOCAL_EVENTO.Value:=
dmPedidoVenda.cdsProcEventoID.Value;
Edit4.Text:= dmPedidoVenda.cdsProcEventoNOME_EVENTO.Value;
dmPedidoVenda.cdsProcEvento.Close;
end;
end;
procedure TfrmCadVenda.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

47

begin
case KEY of
VK_RETURN: Button4.Click;
end;
end;
procedure TfrmCadVenda.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// dmPedidoVenda.cdsItem.close;
end;
procedure TfrmCadVenda.FormCreate(Sender: TObject);
begin
Habilita_ts(tsPedido);
dmPedidoVenda.cdsProduto.Open;
dmPedidoVenda.cdsItem.Open;
dmPedidoVenda.cdsCabecalho.Open;
dtp_data.DateTime := now;
arruma;
end;
procedure TfrmCadVenda.Habilita_ts(ts: TTabSheet);
var count : integer;
begin
ts.TabVisible:= true;
for count := 0 to pred(Self.ComponentCount) do
begin
if self.Components[count].ClassType = TTabSheet then
if (self.Components[count] as TTabSheet).Name <> ts.Name then
(self.Components[count] as TTabSheet).TabVisible := false;
end;
ts.show;
end;
procedure TfrmCadVenda.Processa_Dados;
begin
dmPedidoVenda.cdsCabecalhoDATA.AsDateTime := dtp_data.DateTime;
dmPedidoVenda.cdsCabecalhoVALOR.Value
dmPedidoVenda.cdsCabecalhoCalc_Total.Value;
dmPedidoVenda.cdsCabecalhoVALOR_TOTAL.Value
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value;
end;
procedure TfrmCadVenda.SpeedButton1Click(Sender: TObject);
begin
Habilita_ts(tsPesqCliente);
end;

:=
:=

48

procedure TfrmCadVenda.SpeedButton2Click(Sender: TObject);


begin
Habilita_ts(tsPesqFuncionario);
end;
procedure TfrmCadVenda.SpeedButton3Click(Sender: TObject);
begin
Habilita_ts(tsPesqEvento);
end;
end.
Datamodule de Pedido de Venda

unit UdmPedidoVenda;
interface
uses
SysUtils, Classes, FMTBcd, DBClient, Provider, DB, SqlExpr, DBXMSSQL;
type
TdmPedidoVenda = class(TDataModule)
sdsProduto: TSQLDataSet;
cdsProduto: TClientDataSet;
dspProduto: TDataSetProvider;
cdsProdutoID: TIntegerField;
cdsProdutoPRODUTO: TStringField;
cdsProdutoREFERENCIA: TStringField;
cdsProdutoTIPO_PRODUTO: TStringField;
cdsProdutoCOR: TStringField;
cdsItem: TClientDataSet;
DataSetProvider2: TDataSetProvider;
cdsCabecalho: TClientDataSet;
sdsCabecalho: TSQLDataSet;
dspCabecalho: TDataSetProvider;
sdsCabecalhoID_VENDA: TIntegerField;
sdsCabecalhoID_CLIENTE: TIntegerField;
sdsCabecalhoID_FUNCIONARIO: TIntegerField;
sdsCabecalhoID_LOCAL_EVENTO: TIntegerField;
sdsCabecalhoDATA: TSQLTimeStampField;
cdsCabecalhoID_VENDA: TIntegerField;
cdsCabecalhoID_CLIENTE: TIntegerField;
cdsCabecalhoID_FUNCIONARIO: TIntegerField;
cdsCabecalhoID_LOCAL_EVENTO: TIntegerField;
cdsCabecalhoDATA: TSQLTimeStampField;
cdsGen: TClientDataSet;
sdsGen: TSQLDataSet;

49

dspGen: TDataSetProvider;
sdsGenid: TIntegerField;
cdsGenid: TIntegerField;
sdsProcCliente: TSQLDataSet;
cdsProcCliente: TClientDataSet;
dspProcCliente: TDataSetProvider;
cdsProcClienteID: TIntegerField;
cdsProcClienteNOME: TStringField;
cdsProcClienteCNPJ: TStringField;
cdsProcClienteCPF: TStringField;
cdsProcClienteCidade: TStringField;
cdsProcClienteTelefone: TStringField;
cdsProcClienteEmail: TStringField;
cdsProdutoPRECO: TFloatField;
sdsCabecalhoVALOR: TFloatField;
sdsCabecalhoDESCONTO: TFloatField;
sdsCabecalhoVALOR_TOTAL: TFloatField;
cdsCabecalhoVALOR: TFloatField;
cdsCabecalhoDESCONTO: TFloatField;
cdsCabecalhoVALOR_TOTAL: TFloatField;
cdsItemCalc_Total: TFloatField;
cdsCabecalhoCalc_Total: TFloatField;
cdsCabecalhoCalc_TotalGeral: TFloatField;
dspProcFuncionario: TDataSetProvider;
cdsProcFuncionario: TClientDataSet;
sdsProcFuncionario: TSQLDataSet;
sdsProcEvento: TSQLDataSet;
cdsProcEvento: TClientDataSet;
dspProcEvento: TDataSetProvider;
cdsProcFuncionarioID: TIntegerField;
cdsProcFuncionarioNOME: TStringField;
cdsProcFuncionarioCPF: TStringField;
cdsProcFuncionarioEMAIL: TStringField;
cdsProcFuncionarioSETOR: TStringField;
cdsProcFuncionarioCIDADE: TStringField;
cdsProcFuncionarioTELEFONE: TStringField;
cdsProcEventoID: TIntegerField;
cdsProcEventoNOME_EVENTO: TStringField;
cdsProcEventoDATA_EVENTO: TSQLTimeStampField;
cdsProcEventoENDERECO_EVENTO: TStringField;
cdsProcEventoCIDADE_EVENTO: TStringField;
cdsProcEventoOBS: TMemoField;
sdsItem: TSQLDataSet;
sdsItemID_PRODUTO: TIntegerField;
sdsItemID_VENDA: TIntegerField;
sdsItemQUANTIDADE: TIntegerField;
sdsItemVL_UNITARIO: TFloatField;
sdsItemTOTAL_ITEM: TFloatField;
cdsItemID_PRODUTO: TIntegerField;
cdsItemID_VENDA: TIntegerField;

50

cdsItemQUANTIDADE: TIntegerField;
cdsItemVL_UNITARIO: TFloatField;
cdsItemTOTAL_ITEM: TFloatField;
procedure cdsCadPedidoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItem_oldBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItemCalcFields(DataSet: TDataSet);
procedure cdsCabecalhoDESCONTOValidate(Sender: TField);
procedure cdsCabecalhoCalcFields(DataSet: TDataSet);
procedure cdsCabecalhoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
procedure cdsItemBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmPedidoVenda: TdmPedidoVenda;
implementation
uses UdmPrincipal;
{$R *.dfm}
procedure TdmPedidoVenda.cdsCabecalhoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsCabecalhoCalcFields(DataSet: TDataSet);
begin
if dmPedidoVenda.cdsCabecalho.State in [dsInsert, dsEdit] then begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value:= 0;
dmPedidoVenda.cdsItem.First;
while not dmPedidoVenda.cdsItem.Eof do
begin
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
+
dmPedidoVenda.cdsItemCalc_Total.Value;
dmPedidoVenda.cdsItem.Next;
end;
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;

51

end;
end;
procedure TdmPedidoVenda.cdsCabecalhoDESCONTOValidate(Sender: TField);
begin
dmPedidoVenda.cdsCabecalhoCalc_TotalGeral.Value:=
dmPedidoVenda.cdsCabecalhoCalc_Total.Value
dmPedidoVenda.cdsCabecalhoDESCONTO.Value;
end;
procedure TdmPedidoVenda.cdsCadPedidoBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsItemBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
procedure TdmPedidoVenda.cdsItemCalcFields(DataSet: TDataSet);
begin
dmPedidoVenda.cdsItemCalc_Total.asfloat
dmPedidoVenda.cdsItemVL_UNITARIO.asfloat
dmPedidoVenda.cdsItemQUANTIDADE.asfloat;
end;
procedure TdmPedidoVenda.cdsItem_oldBeforeApplyUpdates(Sender: TObject;
var OwnerData: OleVariant);
begin
// dmPrincipal.SQLConnection1.CloseDataSets;
end;
end.
Tela Modelo que usado como tela de herana para todas as outras

unit UfrmModelo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DBActns, ActnList, DB, ImgList, DBClient;

:=
*

52

type
TfrmModelo = class(TForm)
Panel1: TPanel;
btnNovo: TBitBtn;
btnAlterar: TBitBtn;
btnCancelar: TBitBtn;
btnExcluir: TBitBtn;
btnGravar: TBitBtn;
btnPesquisar: TBitBtn;
btnSair: TBitBtn;
ImageList1: TImageList;
DTS: TDataSource;
BalloonHint1: TBalloonHint;
ActionList1: TActionList;
ac_novo: TDataSetInsert;
ac_excluir: TDataSetDelete;
ac_alterar: TDataSetEdit;
ac_gravar: TDataSetPost;
ac_cancelar: TDataSetCancel;
ac_pesquisar: TAction;
ac_sair: TAction;
Button3: TButton;
Button4: TButton;
Ac_voltar: TAction;
ac_avancar: TAction;
procedure ac_novoExecute(Sender: TObject);
procedure ac_alterarExecute(Sender: TObject);
procedure ac_excluirExecute(Sender: TObject);
procedure ac_cancelarExecute(Sender: TObject);
procedure ac_gravarExecute(Sender: TObject);
procedure ac_sairExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Ac_voltarExecute(Sender: TObject);
procedure ac_avancarExecute(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmModelo: TfrmModelo;
implementation
uses UfrmCadCliente, UdmCliente;
{$R *.dfm}
procedure TfrmModelo.ac_alterarExecute(Sender: TObject);

53

begin
DTS.DataSet.Edit;
end;
procedure TfrmModelo.ac_avancarExecute(Sender: TObject);
begin
dts.DataSet.next;
end;
procedure TfrmModelo.ac_cancelarExecute(Sender: TObject);
begin
TClientDataSet(DTS.DataSet).CancelUpdates;
end;
procedure TfrmModelo.ac_excluirExecute(Sender: TObject);
begin
if not DTS.DataSet.IsEmpty then
begin
DTS.DataSet.Delete;
if DTS.DataSet is TClientDataSet then
TClientDataSet(DTS.DataSet).ApplyUpdates(0);
end;
end;
procedure TfrmModelo.ac_gravarExecute(Sender: TObject);
begin
TClientDataSet(DTS.DataSet).ApplyUpdates(0);
end;
procedure TfrmModelo.ac_novoExecute(Sender: TObject);
begin
DTS.DataSet.Append;
end;
procedure TfrmModelo.ac_sairExecute(Sender: TObject);
begin
Close;
end;
procedure TfrmModelo.Ac_voltarExecute(Sender: TObject);
begin
dts.DataSet.Prior;
end;
procedure TfrmModelo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if dts.state in [dsEdit, dsInsert] then
begin
Action:= caNone;
ShowMessage(' necessrio Voc Salvar ou Cancelar. ');

54

frmModelo.SetFocus;
end;
end;
end.
Tela de Login

unit UfrmAcesso;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, pngimage;
type
TfrmAcesso = class(TForm)
Panel1: TPanel;
edtUsuario: TEdit;
edtSenha: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
btnEntrar: TButton;
Image1: TImage;
btnSair: TButton;
procedure btnEntrarClick(Sender: TObject);
private
{ Private declarations }
tentativas: Smallint;
function loginValido(const usuario, senha: String): Boolean;
public
{ Public declarations }
end;
var
frmAcesso: TfrmAcesso;
implementation
uses UdmPrincipal, UdmLogin;
{$R *.dfm}
procedure TfrmAcesso.btnEntrarClick(Sender: TObject);
begin
if (edtUsuario.Text = '') then //Verifica se o campo "Usurio" foi preenchido

55

begin
Messagedlg('O campo "Usurio" deve ser preenchido!', mtInformation, [mbOk], 0);
if edtUsuario.CanFocus then
edtUsuario.SetFocus;
Exit;
end;
if (edtSenha.Text = '') then //Verifica se o campo "Senha" foi preenchido
begin
Messagedlg('O campo "Senha" deve ser preenchido!', mtInformation, [mbOk], 0);
if edtSenha.CanFocus then
edtSenha.SetFocus;
Exit;
end;
if loginValido(edtUsuario.Text, edtSenha.Text) then //Verifica se o login vlido
ModalResult := mrOk
else //Caso o login no seja vlido ento
begin
inc(tentativas); //Incrementa em 1 o valor da varivel tentativas
if tentativas < 3 then
begin
MessageDlg(Format('Tentativa %d de 3', [tentativas]), mtError, [mbOk], 0);
if edtSenha.CanFocus then
edtSenha.SetFocus;
end
else

56

begin
MessageDlg(Format('%d tentativa de acesso ao sistema.',
[tentativas]) + #13 + 'A aplicao ser fechada!', mtError,

[mbOk], 0);

ModalResult := mrCancel;
end;
end;
end;
function TfrmAcesso.loginValido(const usuario, senha: String): Boolean;
begin
with DMPrincipal.SQLConnection1, dmLogin.datasetAux do
begin
if not Connected then //Caso o componente ConLOGIN no esteja conectado ao BD
Connected := True;
Close;
CommandText := 'SELECT COUNT(1) FROM USUARIO ' +
'
WHERE
QuotedStr(AnsiUpperCase(Trim(usuario))) +

UPPER(USU_NOME)

' AND USU_SENHA = ' + QuotedStr(Trim(senha));


Open;
Result := (Fields[0].AsInteger > 0);
end;
end;
end.
Datamodulo da tela de Login

unit UdmLogin;
interface
uses
SysUtils, Classes, FMTBcd, DB, SqlExpr;

'

57

type
TdmLogin = class(TDataModule)
datasetAux: TSQLDataSet;
private
{ Private declarations }
public
{ Public declarations }
end;
var
dmLogin: TdmLogin;
implementation
uses UdmPrincipal;
{$R *.dfm}
end.
Tela de Pesquisa

unit UfrmPesquisa;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, db, Grids, DBGrids, StdCtrls;
type
TfrmPesquisa = class(TForm)
cbbCampos: TComboBox;
Label1: TLabel;
edtPesquisar: TEdit;
Label2: TLabel;
dbgPesquisa: TDBGrid;
dts: TDataSource;
procedure FormShow(Sender: TObject);
procedure edtPesquisarKeyPress(Sender: TObject; var Key: Char);
procedure dbgPesquisaDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

58

var
frmPesquisa: TfrmPesquisa;
implementation
uses UdmCliente, UdmPrincipal;
{$R *.dfm}
procedure TfrmPesquisa.dbgPesquisaDblClick(Sender: TObject);
begin
close;
end;
procedure TfrmPesquisa.edtPesquisarKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then // #13 o smbolo que representa a tecla Enter
begin
if (cbbCampos.Text <> EmptyStr) and //Verifico se o comboBox foi preenchido
(edtPesquisar.Text <> EmptyStr) then //verifico se o edtPesquisar possue algum
valor
begin
Dts.DataSet.Filter := 'Upper('+cbbCampos.Text+') like '+ //Passo os valores a
pesquisar na propriede Filter
QuotedStr(UpperCase(edtPesquisar.Text)+'%');
Dts.DataSet.Filtered := True; //Ativo a propriedade Fieltered
if not Dts.DataSet.Active then //Se o filtro no estiver ativo, eu apenas abro o
DataSet
Dts.DataSet.Open;
end;
end;
end;
procedure TfrmPesquisa.FormShow(Sender: TObject);
var
I: Integer;
begin
for I := 0 to (Dts.DataSet.FieldCount)-1 do
begin
if Dts.DataSet.Fields[I].DataType in [ftString,ftWideString,ftFixedChar] then
cbbCampos.Items.Add(Dts.DataSet.Fields[I].FieldName);
end;
end;
end.

CRONOGRAMA

59

Jul.
Introduo do Trabalho

Ago. Set.

Out.

Redao da Monografia com base no


Referencial Terico

Metodologia,
Caractersticas
da
Empresa e Descrio da Tecnologia

Levantamento de Requisitos

Entrega Parcial do TCC

Diagramas

Desenvolvimento
(implementao)

da

Nov.

Aplicao

Testes e Validao
Reviso Final

Entrega Final do TCC

Apresentao do TCC (no plo)

Dez.

60
7 CONCLUSO

A realizao desse software demonstrou-se muito interessante, por


algumas etapas que foram sendo desenvolvidas praticamente ao mesmo tempo:
coleta de dados, arquitetura da informao e a interface do projeto. Esta
desenvolvida atravs de uma srie de especificaes.
Alguns pontos positivos e negativos foram destacados no decorrer
do projeto, como positivo podemos citar o formato das aplicaes que descreve no
formato, cliente servidor, e traz benefcios tanto na parte de economia como na
simplificao dos cdigos, facilidade de manuteno e outros. Quanto aos
profissionais envolvidos formam muito prestativos, pacientes e acolhedores, o
ambiente fsico tambm condicionou para o sucesso do trabalho.
Pontos negativo somente a questo da adaptao, aos padres do
software, que causa certa confuso no inicio, mas tudo apenas questo de
adaptao.
Tambm quero ressaltar a satisfao em estagiar na Mario
Rodrigues de Paes Epp Status modas, desenvolve um trabalho maravilhoso com a
ajuda de todos os seus funcionrios.

61

REFERNCIAS
BERTALANFFY, L. Von. Teoria Geral dos Sistemas. Rio de Janeiro: Ed. Vozes,
1975.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML. 2
edio. Rio de Janeiro: Elsevier, 2007.
EMBARCADEIRO
DELPHI

WIKIPEDIA.
Disponvel
<http://pt.wikipedia.org/wiki/Embarcadero_Delphi>. Acesso em: 04 set. 2013.

em:

FREITAS, H.e LESCA, H. Competitividade Empresarial na Era da Informao.


Revista de Administrao. So Paulo, v.27, n3, jul/set 1992, p.92-102.
REZENDE, Denis Alcides. Planejamento de Sistemas de Informao e
Informtica. So Paulo: Atlas, 2003.
________, Denis Alcides. Tecnologia da Informao Integrada Inteligncia
Empresarial. So Paulo: Atlas, 2002.
REFERENCIAS
BERTALANFFY, L. Von. Teoria Geral dos Sistemas. Rio de Janeiro: Ed. Vozes,
1975.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML. 2
edio. Rio de Janeiro: Elsevier, 2007.
FREITAS, H.e LESCA, H. Competitividade Empresarial na Era da Informao.
Revista de Administrao. So Paulo, v.27, n3, jul/set 1992, p.92-102.
HISATOMI, Marcos Ikuro Projeto de sistemas. So Paulo: Pearson Education do
Brasil, 2010.
REZENDE, Denis Alcides. Planejamento de Sistemas de Informao e
Informtica. So Paulo: Atlas, 2003.
________, Denis Alcides. Tecnologia da Informao Integrada Inteligncia
Empresarial. So Paulo: Atlas, 2002.
Tipos
de
Sistemas
Operacionais.
Disponvel
em:
http://forum.imasters.com.br/topic/333787-tipos-de-sistemas-operacionais/
Acesso em: 06 maio 2013.

62

BERTALANFFY, L. Von. Teoria Geral dos Sistemas. Rio de Janeiro: Ed. Vozes,
1975.
BEZERRA, Eduardo. Princpios de Anlise e Projeto de Sistemas com UML. 2
edio. Rio de Janeiro: Elsevier, 2007.
FREITAS, H.e LESCA, H. Competitividade Empresarial na Era da Informao.
Revista de Administrao. So Paulo, v.27, n3, jul/set 1992, p.92-102.
REZENDE, Denis Alcides. Planejamento de Sistemas de Informao e
Informtica. So Paulo: Atlas, 2003.
________, Denis Alcides. Tecnologia da Informao Integrada Inteligncia
Empresarial. So Paulo: Atlas, 2002.

Você também pode gostar