244
UFSC - UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMEMENTO DE INFORMÁTICA E ESTATÍTISTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO DESENVOLVIMENTO DE UM SOFTWARE DE GERENCIAMENTO DE CAMPEONATOS DE FUTEBOL Fernando Peron Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação Florianópolis - SC 2005/1

5.1 Programa de Controle de Campeonatos de Futebol

Embed Size (px)

Citation preview

Page 1: 5.1 Programa de Controle de Campeonatos de Futebol

UFSC - UNIVERSIDADE FEDERAL DE SANTA CATARINA

DEPARTAMEMENTO DE INFORMÁTICA E

ESTATÍTISTICA

BACHARELADO EM SISTEMAS DE INFORMAÇÃO

DESENVOLVIMENTO DE UM SOFTWARE DE

GERENCIAMENTO DE CAMPEONATOS DE FUTEBOL

Fernando Peron

Trabalho de conclusão de curso apresentado

como parte dos requisitos para obtenção do

grau de Bacharel em Sistemas de Informação

Florianópolis - SC

2005/1

Page 2: 5.1 Programa de Controle de Campeonatos de Futebol

2

Fernando Peron

DESENVOLVIMENTO DE UM SOFTWARE DE

GERENCIAMENTO DE CAMPEONATOS DE FUTEBOL

Trabalho de conclusão de curso apresentado como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação.

_______________________________________________ Orientador: Prof. Fernando Augusto da Silva Cruz, Dr.

Banca Examinadora:

_______________________________________ Prof. Ricardo Pereira e Silva, Dr.

_______________________________________ Prof. Rosvelter Coelho da Costa, Dr.

Page 3: 5.1 Programa de Controle de Campeonatos de Futebol

3

Sumário

SUMÁRIO .......................................................................................................... 3

LISTA DE FIGURAS.......................................................................................... 6

RESUMO ........................................................................................................... 8

1 INTRODUÇÃO............................................................................................... 9

1.1 Objetivos.................................................................................................................................9

1.2 Motivação................................................................................................................................9

1.3 Contextualização do Problema.............................................................................................10

1.4 Organização do Trabalho.....................................................................................................11

2 ORGANIZAÇÃO DOS CAMPEONATOS DE FUTEBOL E REGRAS......... 12

2.1 Campeonatos e Fórmulas de Disputa...................................................................................12

2.2 Pontuação..............................................................................................................................13

2.3 Tabela de Classificação e Cr itér ios de Desempate...............................................................13

2.4 Súmula da par tida de futebol ...............................................................................................14

2.5 Tr ibunal Despor tivo .............................................................................................................14

3 ESTADO DA ARTE ..................................................................................... 16

3.1 Software LeaguePad .............................................................................................................16

3.2 Football League Tracker (LTracker ) - Versão 5.6...............................................................20

3.3 Gerenciador de Campeonato V1.0 - Tr ilikix........................................................................23

4 FUNDAMENTOS TEÓRICOS...................................................................... 26

4.1 Fundamentos Teór icos..........................................................................................................26

4.2 UML ......................................................................................................................................27

4.3 Passos para o Desenvolvimento do Programa......................................................................27

4.3.1 A Fase Planejar e Elaborar ..................................................................................................28

4.3.2 A Fase Construir ...................................................................................................................28

4.3.3 Fase Analisar ........................................................................................................................30

Page 4: 5.1 Programa de Controle de Campeonatos de Futebol

4

4.3.4 Fase Projetar .........................................................................................................................31

4.3.5 Fase Testar ............................................................................................................................31

4.3.6 Fase Instalar .........................................................................................................................31

5 PROPOSTA DO TRABALHO...................................................................... 33

5.1 Programa de Controle de Campeonatos de Futebol ............................................................33

5.2 Definição dos usuár ios do Sistema........................................................................................34

5.3 Definindo as Áreas do Sistema e os Casos de Uso................................................................35

5.3.1 Manutenção de Campeonatos...............................................................................................36

5.3.2 Manutenção de Equipes........................................................................................................38

5.3.3 Manutenção de Estádios.......................................................................................................39

5.3.4 Administração de Temporadas.............................................................................................41

5.3.4.1 Manutenção de Temporadas............................................................................................43

5.3.4.2 Equipes Par ticipantes.......................................................................................................46

5.3.4.3 Manutenção de Jogadores................................................................................................47

5.3.4.4 Manutenção de Árbitros..................................................................................................50

5.3.4.5 Manutenção da Estrutura do Campeonato .....................................................................51

5.3.4.6 Punições............................................................................................................................56

5.3.4.7 Administração de Jogos...................................................................................................58

5.3.4.7.1 Manutenção da Tabela de Jogos......................................................................................60

5.3.4.7.2 Manutenção da Escalação do Jogo...................................................................................62

5.3.4.7.3 Manutenção de Eventos do Jogo......................................................................................65

5.4 O Modelo Conceitual ............................................................................................................68

5.5 Diagramas de Classes de Projeto..........................................................................................70

6 CONSIDERAÇÕES DO PROJETO E IMPLEMENTAÇÃO DO PROG ....... 75

6.1 A Aber tura do Sistema .........................................................................................................75

6.2 Os Cadastros.........................................................................................................................76

6.2.1 Cadastro de Campeonato .....................................................................................................76

6.2.2 Cadastro de Temporada.......................................................................................................77

6.2.3 Cadastro de Equipe..............................................................................................................78

Page 5: 5.1 Programa de Controle de Campeonatos de Futebol

5

6.2.4 Cadastro de Estádios............................................................................................................79

6.3 A Administração de Temporada ..........................................................................................80

6.3.1 Cadastro da Estrutura da Temporada.................................................................................81

6.3.2 Cadastro de Árbitro..............................................................................................................81

6.3.3 Incluir Equipe na Disputa da Temporada............................................................................82

6.3.4 Cadastro de Jogador .............................................................................................................83

6.3.5 Punições do Tr ibunal ............................................................................................................84

6.4 Administração da Tabela de Jogos.......................................................................................85

6.4.1 Manutenção de Jogos............................................................................................................86

6.4.2 Definir Escalação de um Jogo...............................................................................................89

6.4.3 Definir Lances da Par tida.....................................................................................................91

6.5 As Estatísticas.......................................................................................................................91

6.5.1 Tabela de Classificação.........................................................................................................92

6.5.2 Campanha por Equipe..........................................................................................................93

7 CONCLUSÕES E TRABALHOS FUTUROS............................................... 95

BIBLIOGRAFIAS REFERENCIADAS ............................................................. 98

BIBLIOGRAFIAS CONSULTADAS................................................................. 98

ANEXO 1 – BANCO DE DADOS: MODELO LÓGICO E.R. ........................... 99

ANEXO 2 – BANCO DE DADOS: IMPLEMENTAÇÃO FÍSICA .................... 100

ANEXO 3 – CÓDIGO FONTE DO SISTEMA................................................. 105

ANEXO 4 - ARTIGO ...................................................................................... 241

Page 6: 5.1 Programa de Controle de Campeonatos de Futebol

6

Lista de Figuras Figura 3.1. LeguePad: Tela de Abertura.................................................................... 16

Figura 3.2. LeguePad: Tabela de Jogos..................................................................... 17

Figura 3.3. LeguePad: Tabela de Classificação......................................................... 18

Figura 3.4. LeguePad: Baixar base de dados de um campeonato.............................. 19

Figura 3.5. LTracker: Interface inicial do sistema..................................................... 20

Figura 3.6. LTracker: Tabela de classificação........................................................... 21

Figura 3.7. LTracker: Gráfico de desempenho da equipe no campeonato................ 22

Figura 3.8. LTracker: Tabela de jogos....................................................................... 23

Figura 3.9. Trilikix: Tabela de jogos.......................................................................... 24

Figura 3.10. Trilikix: Tabela de classificação............................................................ 25

Figura 5.1. Usuários do Sistema................................................................................ 34

Figura 5.2. Pacote da área do usuário........................................................................ 35

Figura 5.3. Diagrama de caso de uso para Manutenção de Campeonatos................. 36

Figura 5.4. Diagrama de caso de uso para Manutenção de Equipes.......................... 38

Figura 5.5. Diagrama de caso de uso para Manutenção de Estádios......................... 40

Figura 5.6. Pacote da área do usuário com casos de usos definidos.......................... 43

Figura 5.7. Diagrama de caso de uso para Manutenção de Temporadas................... 44

Figura 5.8. Diagrama de caso de uso para Equipes Participantes.............................. 46

Figura 5.9. Diagrama de caso de uso para Manutenção de Jogadores....................... 48

Figura 5.10. Diagrama de caso de uso para Manutenção de Árbitros....................... 50

Figura 5.11. Diagrama de caso de uso para Manutenção da Est. Temporada........... 53

Figura 5.12. Diagrama de caso de uso para Punições................................................ 57

Figura 5.13. Diagrama de caso de uso para Administração de Temporadas............. 59

Figura 5.14. Diagrama de caso de uso para Administração de Jogos........................ 60

Figura 5.15. Diagrama de caso de uso para Manutenção da Tabela de Jogos........... 60

Figura 5.16. Diagrama de caso de uso para Manutenção da Escalação Jogo............ 63

Figura 5.17. Diagrama de caso de uso para Manutenção de Eventos do Jogo.......... 65

Figura 5.18. Diagrama de caso de uso para Administração de Jogos........................ 68

Figura 5.19. Modelo Conceitual................................................................................ 70

Figura 5.20. Diagrama de Classes do Projeto - A...................................................... 72

Figura 5.21. Diagrama de Classes do Projeto - B...................................................... 73

Page 7: 5.1 Programa de Controle de Campeonatos de Futebol

7

Figura 6.1. Sistema: Tela inicial................................................................................ 75

Figura 6.2. Sistema: Cadastro de Campeonatos......................................................... 77

Figura 6.3. Sistema: Cadastro de Temporadas........................................................... 78

Figura 6.4. Sistema: Cadastro de Equipes.................................................................. 79

Figura 6.5. Sistema: Cadastro de Estádios................................................................. 80

Figura 6.6. Sistema: Cadastro da Estrutura da Temporada........................................ 81

Figura 6.7. Sistema: Cadastro de Árbitros................................................................. 82

Figura 6.8. Sistema: Equipes que disputam a Temporada......................................... 83

Figura 6.9. Sistema: Cadastro de Jogadores.............................................................. 84

Figura 6.10. Sistema: Punições do Tribunal.............................................................. 85

Figura 6.11. Sistema: Administração da Tabela de Jogos......................................... 86

Figura 6.12. Sistema: Cadastro de um novo jogo...................................................... 87

Figura 6.13. Sistema: Cadastro de Jogo – Estatísticas............................................... 88

Figura 6.14. Sistema: Cadastro de Jogo - Comentários............................................. 88

Figura 6.15. Sistema: Cadastro de Jogo - Fotos......................................................... 89

Figura 6.16. Sistema: Escalação das Equipes............................................................ 90

Figura 6.17. Sistema: Lances da Partida.................................................................... 91

Figura 6.18. Sistema: Tabela de Classificação.......................................................... 92

Figura 6.19. Sistema: Campanha por Equipe............................................................. 93

Page 8: 5.1 Programa de Controle de Campeonatos de Futebol

8

Resumo O presente trabalho apresenta o desenvolvimento de um sistema de informação

para campeonatos de futebol.

O trabalho contextualiza o leitor para o entendimento do problema e mostra,

resumidamente, uma abordagem para o desenvolvimento de software orientado a

objetos.

Sua finalidade é a da aplicação prática dos conhecimentos adquiridos ao longo

do curso de Sistemas de Informação, além de disponibilizar uma ferramenta com

qualidade que supri algumas deficiências dos sistemas similares no mercado.

Palavras-Chaves: Sistemas de Informação, Desenvolvimento de Software,

Programação Orientada a Objetos, Programa de Controle de Campeonatos de Futebol.

Page 9: 5.1 Programa de Controle de Campeonatos de Futebol

9

Capítulo 1 Introdução Neste capítulo serão destacados o tema e a motivação para o desenvolvimento

deste projeto, contextualizando-o apresentando seus objetivos gerais e específicos, além

da forma como o trabalho será apresentado.

1.1 Objetivos

1.1.1 Objetivo Geral

O objetivo é o desenvolvimento de um programa de computadores exercitando

na prática os conhecimentos adquiridos durante o curso de Sistema de Informação, com

maior ênfase para os conhecimentos de Programação Orientada a Objetos, Análise e

Projeto de Software, Banco de Dados, Engenharia de Usabilidade e Engenharia de

Software. O software será uma aplicação capaz de fazer o gerenciamento completo de

um campeonato de futebol desde controle de tabela de jogos e resultados, além da

geração automática de relatórios, estatísticas e gráficos que permitam ao usuário

entender melhor a competição.

1.1.2 Objetivo Específico

Como objetivo específico, o trabalho tem por finalidade por em prática os

conhecimentos adquiridos durante o transcorrer do Curso de Sistemas de Informação. � Entender o escopo do problema, apresentando os aspectos relevantes de um

campeonato de futebol; � Análise e projeto do sistema utilizando UML – Unified Modeling Language; � Implementação do sistema utilizando linguagem orientada a objetos Delphi

versão 8; � Construção de um modelo relacional ER e implementação utilizando Banco

de Dados Interbase versão 7.1;

O projeto ainda utilizará conhecimentos e a prática de Gerenciamento de

Projetos, Engenharia de Software e Engenharia de Usabilidade.

1.2 Motivação

Page 10: 5.1 Programa de Controle de Campeonatos de Futebol

10

O presente trabalho tem como tema, o desenvolvimento de um sistema de

informação computacional para auxiliar o controle de campeonatos de futebol.

O futebol é o esporte mais popular e praticado no Brasil. É o esporte de maior

interesse seja na programação da televisão quanto em notícias nos jornais; lota estádios.

A paixão pelo esporte é grande e o brasileiro se julga um grande conhecedor do esporte.

O futebol é assunto de discussão em todos os ambientes: bares, empresas, colégios, etc.

Este esporte também movimenta grandes quantias de dinheiro dentro e fora dos

campos. O sucesso de uma equipe num campeonato e certeza de grandes lucros.

Invariavelmente, jogadores e treinadores possuem rendimentos altíssimos. Por outro

lado, fora dos gramados existem loterias pagam prêmios milionários a apostadores que

acertam os resultados dos jogos.

Este trabalho tem por objetivo apresentar-se com uma ferramenta capaz de

auxiliar os fãs do esporte a acompanhar o campeonato com o apoio de grande

quantidade de informações. Além disso, o fã poderá ter nesta ferramenta, uma grande

base de dados do futebol ao seu dispor. Outra finalidade do trabalho é a utilização da

ferramenta por apostadores de loterias que poderão ter nela, uma boa fundamentação de

informações para suas apostas. Por último, ela pode ser utilizada por profissionais do

esporte, como técnicos ou clubes de futebol a fim de organizar as informações dos

campeonatos que disputam.

1.3 Contextualização do Problema

Conforme apresentado nos tópicos anteriores, este trabalho tem por objetivo

criar uma ferramenta para auxiliar desde simples torcedores de futebol, gerentes

profissionais de equipes de futebol até apostadores de loterias, a gerenciar campeonatos

de futebol.

Assim sendo, o sistema deve: � Apresentar soluções para gerenciamento de campeonatos com as mais diferentes

fórmulas de disputa; � Ter a capacidade de gerenciar as informações que o usuário deseja controlar, ou

seja, cada usuário tem um interesse no uso do sistema e ele deve prover

condições de que cada um utilize da forma mais conveniente aos seus objetivos; � Apresentar a maior quantidade de estatísticas que as informações que foram

inseridas no sistema possam gerar.

Page 11: 5.1 Programa de Controle de Campeonatos de Futebol

11

1.4 Organização do Trabalho

Este trabalho, em seu segundo capítulo contextualizará o funcionamento dos

campeonatos de futebol, apresentando as variações de regulamentos de disputa e como

isso afeta um sistema de gerenciamento de campeonatos de futebol. Neste mesmo

capítulo será também apresentado uma visão das funcionalidades que deverão estar

presentes no software, assim como as suas limitações.

O capítulo terceiro mostra algumas ferramentas existentes para controle de

campeonato de futebol e faz uma análise de cada uma delas. O conteúdo deste capítulo,

além de ajudar no entendimento do problema, ajuda também na avaliação do resultado

deste trabalho, à medida que permite uma comparação.

No quarto capítulo, o trabalho apresentada o um processo de desenvolvimento

de software em todas as suas fases. O objetivo é utilizar este processo, com algumas

variações e aplicá-lo no desenvolvimento deste software.

No capítulo cinco, mostra a análise e projeto do sistema. Este capítulo mostra

como o software foi pensado e planejado antes de ser implementado. Já o capítulo seis

apresenta o resultado final da implementação do sistema, onde é possível verificar os

resultados finais do trabalho.

Por fim, são apresentadas uma breve conclusão do trabalho e algumas propostas

para futuros trabalhos relacionados ao tema.

Page 12: 5.1 Programa de Controle de Campeonatos de Futebol

12

Capítulo 2

Organização dos Campeonatos de Futebol e

Regras

Introdução O futebol é conhecido como um esporte com regras conservadoras, ou seja, de

poucas mudanças ao longo do tempo. Ao mesmo tempo, para tornar o futebol mais

atraente para o público, as fórmulas de disputa dos campeonatos de futebol são bastante

diversificadas. O objetivo deste capítulo é apresentar as principais variações das

formulas de disputa dos campeonatos, além de eventuais variações das aplicações da

regra do esporte. Por fim, também são apresentados os pontos fundamentais de

organização do campeonato, como a “Súmula do Jogo” e a influência do Tribunal

Desportivo. Todos os pontos abordados neste capítulo deverão se concretizar em

soluções flexíveis dentro do software desenvolvido.

2.1 Campeonatos e Fórmulas de Disputa

As fórmulas de disputas de um campeonato é o mecanismo que organiza a

maneira de como será disputada a competição. Na fórmula de disputa de uma

competição é definido de que forma será conhecido o campeão da disputa, a ordem de

classificação, os times que serão rebaixados, etc.

Os campeonatos de futebol são organizados por diferentes fórmulas de disputa.

Uma Copa do Mundo, por ser um campeonato disputado num espaço de tempo curto e

possuir uma grande quantidade de equipes participantes, possui uma fórmula de disputa

bastante particular. A Copa do Mundo é dividida em fases. Dentro de cada fase, as

equipes são dividas em Grupos. Os melhores colocados de cada um dos grupos se

classificam para fase seguinte, até a grande final do campeonato, onde o vencedor é o

campeão.

Page 13: 5.1 Programa de Controle de Campeonatos de Futebol

13

Já os campeonatos nacionais, como, por exemplo, o Campeonato Brasileiro de

2004 e Campeonato Inglês, possuem fórmula de disputa mais tradicional, adequado ao

tempo de disputa e ao pequeno número de times participantes. Neste tipo de

campeonato, a disputa é numa única fase e um único grupo. Todos jogam entre si, uma,

duas, três ou quatro vezes dependendo da fórmula de disputa do campeonato. Ao final

do campeonato, o campeão é a equipe que mais acumular pontos ao longo do

campeonato. Neste tipo de fórmula de disputa não existe a grande final.

2.2 Pontuação

Este é outro importante item que pode variar de campeonato para campeonato e

até mesmo, sofrer alterações ao longo do tempo. Basta citar que até 1994, a equipe

vencedora dos jogos ganhava dois pontos pelo feito.

As regras de pontuação adotadas pela FIFA, organização que dirige o futebol no

mundo estabelece as seguintes pontuações: três pontos ao time vencedor ou, em caso de

empate, um ponto para cada time.

Esta pontuação é adota pela maioria dos campeonatos de futebol do mundo.

Porém, até pouco tempo atrás, as regras de pontuação eram diferentes. Até a Copa do

Mundo de 1994, a FIFA estabelecia as seguintes pontuações: dois pontos ao time

vencedor ou, em caso de empate, um ponto para cada time.

Existem ainda algumas variações adotadas por alguns campeonatos, por

exemplo, o campeonato do EUA, os jogos que acabam empatados, existe uma disputa

de Shut-Out, uma espécie de disputa de pênaltis. Este tipo de regra já foi adotado

recentemente no Campeonato Brasileiro. A regra de pontuação deste tipo de

campeonato é a seguinte: três pontos ao time vencedor ou em caso de empate no tempo

normal de jogo, dois pontos ao time vencedor na prorrogação ou nos pênaltis e um

ponto para o time perdedor na prorrogação e nos pênaltis.

2.3 Tabela de Classificação e Cr itér ios de Desempate

A principal informação de um campeonato de futebol, além do resultado da

partida, é a tabela de classificação. A tabela de classificação mostra as somas de pontos

Page 14: 5.1 Programa de Controle de Campeonatos de Futebol

14

alcançadas pelas equipes no campeonato. É ela que determina a posição de cada equipe

no campeonato.

A tabela de classificação de um campeonato também contempla outras

informações. Estas informações, em geral, são os critérios de desempates. Os critérios

de desempate, em geral, são os mesmos em todos os campeonatos. O que muda é a

ordem de importância. Em todos os campeonatos, o primeiro critério é o número de

pontos ganhos. O segundo critério, para o caso de empate é o número de vitórias para

alguns campeonatos, enquanto que em outros campeonatos, o segundo critério é o saldo

de gols. Também são utilizados como critérios de desempate o número de gols

marcados.

2.4 Súmula da par tida de futebol

Para todo jogo de futebol realizado existe um documento oficial intitulado

“Súmula” que possui o resumo dos acontecimentos do jogo. A súmula é preenchida

pelos árbitros da partida. Nela são colocadas as seguintes informações:

Times que disputaram a partida, resultado da partida, data e hora do jogo. Constam

também quais os jogadores marcaram os gols da partida. Além disso, nela há os

jogadores que disputaram a partida e as substituições ocorridas no transcorrer do jogo.

Também estão inclusos neste documento, as penalidades aplicadas pelo árbitro, como

cartões amarelo e vermelho.

O software deste trabalho tem o objetivo fazer um resumo desta súmula da

partida, podendo até mesmo, incluir informações que não constam na súmula oficial,

com a finalidade de gerar uma variedade maior de estatísticas do campeonato.

2.5 Tr ibunal Despor tivo

O Tribunal Desportivo é um órgão responsável por aplicar as leis descritas nas

regras do futebol e no regulamento das competições. O Tribunal Desportivo aplica

sansões as equipes e jogadores do campeonato e muitas destas sanções possuem

influencia direta no campeonato, como por exemplo a perda de pontos, perda de mando

de campo ou suspensão de jogadores.

Page 15: 5.1 Programa de Controle de Campeonatos de Futebol

15

Conclusão A ferramenta proposta neste trabalho deve ter grande flexibilidade para aceitar

que as diferentes competições de futebol possam ser controladas. É aceitável que em

virtude desta flexibilidade, o sistema possa perder qualidade em legibilidade e

usabilidade.

O software também tem por objetivo gerar uma grande quantidade de estatística

do campeonato, das equipes e dos jogadores. Fica evidenciado desta forma, que não

pode simplesmente fazer uma cópia eletrônica da Súmula. É necessário obter outras

informações da partida para gerar tais estatísticas.

Page 16: 5.1 Programa de Controle de Campeonatos de Futebol

16

Capítulo 3

Estado da Ar te

Introdução Este capítulo apresenta três ferramentas disponíveis na Internet para download

que tem objetivos semelhantes à aplicação objeto deste trabalho. O capítulo apresenta os

pontos positivos e negativos de cada uma das ferramentas. O aproveitamento das boas

soluções e a precaução com as franquezas das ferramentas existentes colaboraram para

o desenvolvimento de um software completo e eficiente. Também terá a finalidade de

estabelecer um parâmetro de qualificação do resultado deste trabalho.

3.1 Software LeaguePad

O software LeaguePad, disponível para download gratuito de sua versão trial e

com algumas limitações de recursos em http://www.leaguepad.com/, é uma das

aplicações mais interessantes e conhecidas na internet com a finalidade de administrar

estatísticas de campeonatos de futebol. Suas interfaces com o usuário estão disponíveis

em três diferentes línguas: inglês, francês e espanhol.

Figura 3.1. LeguePad: Tela de Abertura.

Page 17: 5.1 Programa de Controle de Campeonatos de Futebol

17

O LeaguePad é um software extremamente flexível. Através dele é possível

gerenciar qualquer tipo de competição de futebol.

O software também se adapta as necessidades do usuário. Para os usuários que

querem obter grandes quantidades de informações, o software atende a quase tudo que

se possa imaginar. Por outro lado, caso o usuário queira apenas ter a tabela de jogos, os

resultados e a classificação atualizada automaticamente, este software se adapta

perfeitamente. A figura 3.2 mostra a tela do sistema onde o usuário gerencia a tabela de

jogos do sistema. Nela é possível perceber a riqueza de informações de uma partida que

o sistema permite inserir.

Figura 3.2. LeguePad: Tabela de Jogos.

Já a figura 3.3 mostra a tabela de classificação gerada automaticamente pelo

sistema a partir das informações inseridas na tabela de jogos. É outro relatório do

sistema com riqueza de informações. Nesta mesma imagem, é possível observar no

menu do lado direito da interface, a grande quantidade de relatórios e estatísticas

oferecidos pelo sistema. Tanto na figura 3.2 quanto 3.3, percebe-se o cuidado dos

desenvolvedores do software com a interface do sistema, que tem um visual bastante

moderno.

Page 18: 5.1 Programa de Controle de Campeonatos de Futebol

18

Figura 3.3. LeguePad: Tabela de Classificação.

Outro ponto forte é, para o caso dos usuários que não querem inserir as

informações no sistema, o que é uma tarefa bastante trabalhosa, ele permite baixar

atualizações dos campeonatos pela Internet, conforme mostra a figura 3.4. Assim, o

usuário tem a possibilidade de acessar as diversas estatísticas geradas pelo sistema sem

ter qualquer trabalho. Estas atualizações são postadas por usuários que gerenciam seus

campeonatos e compartilham as informações com os demais.

Page 19: 5.1 Programa de Controle de Campeonatos de Futebol

19

Figura 3.4. LeguePad: Baixar base de dados de um campeonato.

Também é interessante o site www.soccerstats.com, que utiliza da base de dados

do sistema para mostrar na Internet as estatísticas para os usuários que não adquiram o

sistema. Porém, nem todas as estatísticas que o software gera são mostradas no site.

O ponto fraco deste software é o fato de ele tratar cada temporada de um

campeonato de forma independente. Isso quer dizer que não é possível fazer uma

análise entre duas temporadas de um campeonato de um determinado país. O mesmo

problema ocorre com as equipes. Elas são tratadas de forma independente dentro de

cada campeonato. Assim, se uma equipe “A” disputa dois campeonatos cadastrados no

sistema. O sistema interpreta com duas equipes distintas, não sendo possível gerar

estatísticas da equipe “A” nestes dois campeonatos que disputou.

A ferramenta foi desenvolvida na França e custa entre �50,00 e

�90,00,

dependendo da versão. Por se tratar de uma ferramenta bastante completa e com

serviços de atualização de dados on-line sem custos adicionais, o valor é justificável.

Porém, para os padrões brasileiros, pode ser considerado um custo elevado.

Page 20: 5.1 Programa de Controle de Campeonatos de Futebol

20

3.2 Football League Tracker (LTracker ) - Versão 5.6

O Football League Tracker é outro bom software que se propõe a fazer o

controle de campeonatos de futebol. Desenvolvido por Sr. Nigel Thomas, o programa é

de origem inglesa e está disponível para download gratuito no endereço

www.ngthomas.co.uk.

Figura 3.5. LTracker: Inter face inicial do sistema – Manutenção de Campeonato.

Este programa também é bastante completo. Abrange quase todas as estatísticas

que o jogo de futebol pode gerar. É possível controlar além da tabela de classificação,

dados a respeito dos jogadores, como, por exemplo, lista de artilheiros e jogadores que

marcaram gols contra. Também é possível acessar uma tabela de informações sobre as

arbitragens do campeonato. Nesta tabela é possível saber quantos cartões o juiz aplicou

durante o campeonato, qual a média de faltas que ele marca por jogo, quantos gols em

média ocorrem durante os jogos que um determinado arbitro apita.

Page 21: 5.1 Programa de Controle de Campeonatos de Futebol

21

Figura 3.6. LTracker: Tabela de classificação.

O software também é repleto de gráficos para mostrar o desempenho das equipes

ao longo do certame. Gráficos que mostram, por exemplo, a posição na classificação de

um determinado time ao longo da competição, conforme a figura 3.7. Outro gráfico

mostra uma comparação de desempenho entre um time e os lideres do campeonato.

Page 22: 5.1 Programa de Controle de Campeonatos de Futebol

22

Figura 3.7. LTracker: Gráfico de desempenho da equipe no campeonato.

O programa deixa a desejar em sua interface de difícil compreensão. Algumas

tabelas possuem seus cabeçalhos com as palavras pela metade, não sendo possível saber

que dado está inserido na coluna da tabela. O procedimento para inserir os jogos e

placares, além das estatísticas também não é simples. Requer bastante trabalho do

usuário para aprender e posteriormente usar. Existe também uma grande quantidade de

menus em algumas interfaces. A figura 3.8 ilustra este problema. Nela observa-se um

menu inferior e outro menu na parte superior da interface.

Page 23: 5.1 Programa de Controle de Campeonatos de Futebol

23

Figura 3.8. LTracker: Tabela de jogos.

O maior problema do software está no fato de ter sido projetado para

acompanhar exclusivamente campeonatos com fórmulas de disputa semelhante aos

disputados pelos campeonatos nacionais disputado na Europa. É inviável inserir no

sistema campeonatos organizados por Fase e Grupos. Outro problema semelhante ao

LeguePad é o fato do sistema interpretar cada campeonato de forma independente.

3.3 Gerenciador de Campeonato V1.0 - Tr ilikix

O Gerenciador de Campeonato Versão 1.0, disponível para download em versão

Demo no endereço http://www.trilikix.com/gerenciador.php, é uma ferramenta de

controle de campeonatos de futebol desenvolvida no Brasil.

É um software mais simples que o LeaguePad e o LTracker. Suas

funcionalidades basicamente servem para o acompanhamento da tabela de jogos e seus

respectivos resultados e a geração automática da tabela de classificação a partir dos

placares inseridos nos jogos.

Page 24: 5.1 Programa de Controle de Campeonatos de Futebol

24

Figura 3.9. Trilikix: Tabela de jogos.

Como o programa somente insere placar do resultado do jogo, não tendo a

possibilidade de inserir estatísticas da partida ou escalação das equipes, a qualidade das

informações geradas pelo sistema é ruim. As estatísticas são feitas exclusivamente sobre

os resultados dos jogos.

O software não consegue gerenciar as diferentes fórmulas de disputas de

campeonatos. Está adaptado exclusivamente para os campeonatos com fórmula de

disputa semelhante aos dos campeonatos nacionais disputados na Europa. Nestes

campeonatos, as equipes jogam entre si e a que somar mais pontos é a campeã. No caso

de haver interesse por inserir um campeonato onde as equipes são organizadas em

Grupos e a competição tem diferentes fases de disputa, o software não gerencia estas

situações.

Page 25: 5.1 Programa de Controle de Campeonatos de Futebol

25

Figura 3.10. Trilikix: Tabela de classificação.

Mesmo sendo um software com muitos defeitos e poucas qualidades, o custo

para aquisição da versão licenciada é de R$ 149,90.

Conclusão Existem ferramentas disponíveis no mercado com a finalidade de gerenciar

campeonatos de futebol. Embora algumas delas possuam boas qualidades, não foi

identificada nenhuma ferramenta completa. Os valores para aquisição deste programas

também não são baratos. Um software bom deve ter a capacidade de se adaptar as

diferentes fórmulas de disputa dos campeonatos. Também deve ser capaz de administrar

todas as informações inerentes a realização de um jogo, mas deixando a critério do

usuário fazer uso destas informações ou não. Gerar boa qualidade de estatísticas

preferencialmente não tratando cada campeonato ou equipe de forma individualizada. E

por fim, ter um custo mais acessível ao mercado nacional.

Page 26: 5.1 Programa de Controle de Campeonatos de Futebol

26

Capítulo 4

Fundamentos Teór icos

Introdução Neste capítulo é apresentada a fundamentação teórica que se utilizará para o

desenvolvimento do programa de Controle de Campeonatos. São descritos os conceitos

e uma seqüência de atividades que resultarão em um sistema orientado a objetos bem

projetado.

4.1 Fundamentos Teór icos

A Programação Orientada a Objetos é uma extensão natural da programação

estruturada. Sua essência é a reutilização de código. Uma vez que você cria um objeto

para uma aplicação, este objeto poderá (e deverá) ser utilizado em novas aplicações

[SIL 00].

Conforme descrito no capítulo 1 deste trabalho, o objetivo específico é de

construir um programa para computadores utilizando os conceitos de programação

orientada a objetos. Porém, a construção de um bom programa orientado a objetos vai

além de saber o dominar uma linguagem orientada a objetos, como por exemplo, Java

ou Delphi. Este é apenas o primeiro passo para construção. É fundamental para

obtenção do sucesso do trabalho uma boa análise e um bom projeto.

Assim, o trabalho se baseará na metodologia proposta pelo livro de Craig

Larman: Utilizando UML e Padrões. Este livro apresenta um exemplo de processo de

desenvolvimento, o qual descreve uma possível ordem de atividades e um ciclo de vida

de desenvolvimento. Contudo, ele não prescreve um processo ou metodologia

definitiva; ele fornece um exemplo de passos comuns.

Porém, antes de apresentar a metodologia proposta por Craig Larman, o trabalho

fará uma breve explicação sobre UML.

Page 27: 5.1 Programa de Controle de Campeonatos de Futebol

27

4.2 UML

Unified Modeling Leaguage – Linguagem de Modelagem Unificada – ou

somente UML é uma linguagem visual para modelar sistemas computacionais

orientados a objetos. Possui um sistema de notação – incluindo semântica para suas

notações – dirigida a modelagem de sistemas, usando conceitos orientados a objeto. A

UML é uma linguagem para especificar, visualizar e construir os artefatos de sistema de

software.

UML tem o poder de transformar idéias em modelos reais. É uma linguagem

destina estruturação de projetos. Um dos principais objetivos da UML é tornar todo o

processo de desenvolvimento totalmente transparente e organizado [SOA 01].

A UML é uma notação gráfica usada para expressar a análise e criação de

projetos de software e para comunicá-los a outros. A UML é independente de

linguagem, mas destina-se a descrever projetos orientados a linguagem. Como

enfatizam os criadores da UML, ela não é uma metodologia em si; pode ser usada como

ferramenta descritiva independente de qual seu processo de projeto [CAN 00].

Para Craig Larman, “...os autores da UML – Booch, Jocobson e Rumbaugh – prestaram

um grande serviço à comunidade da tecnologia orientada a objetos ao criar uma

linguagem de modelagem padronizada que é elegante, expressiva e flexível.” e

prossegue “... UML recebeu a aprovação de facto pela indústria, uma vez que seus

criadores representam métodos de análise e / ou projeto de primeira geração muito

populares.” .

Porém, Craig Larman adverte que “UML é uma linguagem para modelagem; ela

não guia um desenvolvedor em como fazer análise e projeto orientados a objetos, ou

qual processo de desenvolvimento a ser seguido. Conseqüentemente, os metodologistas

continuarão a definir métodos, modelagem e processos de desenvolvimento para a

criação efetiva de sistemas de software; no entanto, agora, podem fazê-lo, usando uma

linguagem comum – UML”.

4.3 Passos para o Desenvolvimento do Programa

Em sua metodologia, Craig Larman esclarece que “Em um nível alto, os

principais passos até a entregar uma aplicação incluem os seguintes:

Page 28: 5.1 Programa de Controle de Campeonatos de Futebol

28

1. Planejar e Elaborar – Planejamento, definição de requisitos, construção de

protótipos e assim por diante.

2. Construir – A construção do sistema.

3. Instalar – A implantação do sistema para uso” .

Ele complementa dizendo que “Um processo de desenvolvimento de software é

um método para organizar as atividades relacionadas com a criação, entrega e

manutenção de sistemas de software” .

4.3.1 A Fase Planejar e Elaborar

Para Craig Larman, “A fase Planejar e Elaborar de um projeto inclui a

concepção inicial, a investigação de alternativas, o planejamento, a especificação de

requisitos e assim por diante” .

Uma lista de artefatos que esta fase do projeto deve gerar é listada abaixo:

1. Plano – cronograma, recursos, orçamento, etc.

2. Relatório de Investigação Preliminar – motivação, alternativas, necessidades

de negócio.

3. Especificação de Requisitos: exposição declarativa dos requisitos;

4. Casos de Uso: descrição em prosa de processos do domínio;

5. Diagramas de Casos de Uso: ilustração de todos os casos de uso e seus

relacionamentos.

6. Rascunho do modelo conceitual: um modelo conceitual preliminar

aproximado, para ajuda na sua compreensão de como ele se relaciona com os casos de

uso e a especificação dos requisitos.

A construção dos artefatos cima listados não deve ser feita em ordem linear.

Pelo contrário. Será freqüente às vezes em que duas ou mais tarefas serão desenvolvidas

em paralelo, embora em alguns casos fique evidente a necessidade de uma tarefa antevir

a outra, como por exemplo, a definição dos casos de uso vir a ser feita antes do

rascunho do modelo conceitual.

4.3.2 A Fase Construir

A fase construir envolve a implementação do projeto em software e em

hardware. Envolve repetidos ciclos de desenvolvimento (provavelmente limitadas em

Page 29: 5.1 Programa de Controle de Campeonatos de Futebol

29

tempo), dentro dos quais o sistema é estendido. O objetivo final é um sistema de

software em operação que atenda corretamente os requisitos.

Um ciclo de desenvolvimento na fase construir compreende as seguintes etapas:

refinar plano, sincronizar artefatos, analisar, projetar, construir, testar.

Antes de falar sobre cada uma das etapas da fase construir, é importante definir

um ciclo de desenvolvimento do projeto. Craig Larman propõe um ciclo de

desenvolvimento chamado de Iterativo.

Um Ciclo de Desenvolvimento, ou também chamado de ciclo de vida, Iterativo

se baseia no aumento e no refinamento sucessivo de um sistema através de múltiplos

ciclos de desenvolvimentos de análise, de projeto, de implementação e de testes.

O sistema cresce pelo acréscimo de novas funções em cada ciclo de

desenvolvimento. Depois de uma fase preliminar de Planejar e Elaborar, o

desenvolvimento continua numa fase Construir através de uma série de ciclos de

desenvolvimento.

Cada ciclo trata de um conjunto relativamente pequeno de requisitos,

procedendo através da análise, do projeto, da construção e do teste. O sistema cresce

incrementalmente, à medida que cada ciclo é completado.

O desenvolvimento iterativo não significa desenvolver um trabalho banal por um

tempo, atingir um marco no projeto e, então, experimentar mais um pouco. Uma

definição do desenvolvimento iterativo é que ele é um processo planejado para voltar a

uma área repetidamente, cada vez, complementando o sistema. Ele é um processo

formalmente planejado e escalonado, e não algo que acontece ao acaso.

A definição de desenvolvimento incremental é adicionar funcionalidades a um

sistema durante vários ciclos de liberação de produto; cada incremental (nova versão do

produto) contém mais funcionalidades. É importante não confundir: uma versão

incremental é composta de múltiplos ciclos de desenvolvimento.

A principal desvantagem do desenvolvimento iterativo e incremental é o

aumento das expectativas. Uma vez que esse processo permite que sejam efetuadas

demonstrações, logo tende-se a pensar que o sistema está “quase pronto” .

Um Caso de Uso é uma descrição narrativa de um processo do domínio. Ciclos

de desenvolvimento interativos são organizados por requisitos de casos de uso.

Os Casos de Uso deveriam ser priorizados, e os de alta prioridade deveriam ser

atacados nos ciclos de desenvolvimentos iniciais. A estratégia abrangente é, primeiro,

pegar os casos de uso que influenciam significativamente o núcleo da arquitetura,

Page 30: 5.1 Programa de Controle de Campeonatos de Futebol

30

materializando as camadas do domínio e dos serviços de alto nível, ou aqueles que são

de uso críticos de alto risco.

Os dois principais passos da fase construir - analisar e projetar – são as fases

abordadas no livro de Craig Larman com grande ênfase. Abaixo é apresentado em

detalhes o desenvolvimento de cada uma destas duas etapas.

“Para criar um software de uma aplicação, é necessária uma descrição do

problema e dos seus requisitos – o que é o problema e o que o sistema deve fazer. A

análise enfatiza uma investigação do problema, de como uma solução é definida” .

“Para desenvolver uma aplicação também é necessário ter descrições de alto

nível e descrições detalhadas da solução lógica e de como ela atende os requisitos e as

restrições. O projeto enfatiza uma solução lógica, ou seja, como o sistema atende os

requisitos, afinal, projetos devem ser implementados em software e hardware” .

4.3.3 Fase Analisar

Segundo Craig Larman, “A essência da análise e do projeto orientados a objeto é

enfatizar a consideração de um domínio de problema e uma solução lógica, segundo a

perspectiva de objetos (coisas, conceitos ou entidades). Na análise orientada a objetos,

há uma ênfase na descoberta e na descrição dos objetos – ou conceitos – do domínio do

problema”.

A Fase Analisar deve abranger as seguintes etapas:

1. Construir um modelo conceitual inicial, identificando os conceitos, atributos e

suas corretas associações.

2. Fazer Diagrama de seqüência para os casos de uso identificando os eventos e

as operações do sistema. Este diagrama de seqüências mostrado por Craig Larman não

pertence à notação UML, porém será um importante artefato para a construção do

Diagrama de Interação da UML na fase Projetar.

3. Criar contratos para as operações do sistema que é um documento o que uma

operação se compromete a atingir. Usualmente, ele segue um estilo declarativo,

enfatizando o que acontecerá, em vez de como será conseguido. È comum em termos de

mudanças de estado definidas por pré-condições e pós-condições. Um contrato pode ser

escrito para um método individual de uma classe de software ou para uma operação

mais abrangente do sistema.

Page 31: 5.1 Programa de Controle de Campeonatos de Futebol

31

Durante um ciclo de desenvolvimento iterativo, é possível passar para a fase de

projeto desde que estes documentos de análise estejam completos.

4.3.4 Fase Projetar

Para Craig Larman “Durante o projeto orientado a objetos existe uma ênfase na

definição de elementos lógicos de software, os quais, em última instância, serão

implementados em uma linguagem de programação orientada a objetos. Estes objetos de

software têm atributos e métodos. Finalmente, durante a construção ou programação

orientada a objetos, os componentes do projeto são implementados, tais como uma

classe” .

Durante este passo, é desenvolvida uma solução lógica baseada no paradigma

orientado a objetos. O coração desta solução é a criação de diagramas de interação, os

quais ilustram como os objetos devem se comunicar de maneira a atender os requisitos.

Em seguida à geração de diagramas de interações, podem ser desenhados diagramas de

classes, os quais sumarizam a definição das classes (e interfaces) que devem ser

implementadas em software.

A criação de diagramas de interação requer a aplicação de princípios para a

atribuição de responsabilidades e visibilidades.

4.3.5 Fase Testar

A fase Testar tem por objetivo verificar eventuais falhas de desenvolvimento no

sistema. Devem avaliar basicamente três quesitos: funcionalidade (o sistema executa

corretamente suas funções normais), recuperação (o sistema recupera-se adequadamente

em caso de falha); desempenho (o sistema apresenta tempo de resposta adequado).

Geralmente, a fase Testar é entendida com o último passo dentro de um ciclo de

desenvolvimento. Porém, recomenda-se que seja uma atividade permanente durante a

fase Construir.

4.3.6 Fase Instalar

A fase instalar envolve a colocação do sistema em produção. Para o software

desenvolvimento com finalidades comerciais, isso significa que ele já está à venda e

Page 32: 5.1 Programa de Controle de Campeonatos de Futebol

32

disponível para os clientes; para o software desenvolvido em uma instalação, significa

que ele está em uso operacional.

Conclusão Possuir conhecimentos avançados de uma linguagem de programação orientada

a objetos ou mesmo de UML não garante a produção de bom programa de computador.

São apenas requisitos. Para o desenvolvimento de grandes projetos com sucesso, é

necessário uma metodologia de desenvolvimento de software. A metodologia propõe

um processo de desenvolvimento de software iterativo, incremental e guiado por casos

de usos. Este estabelece ciclos de desenvolvimentos dentro de janelas de tempo de

forma a organizar o projeto. Por ser uma metodologia criada para ajudar estudantes e

desenvolvedores a criar melhores projetos orientados a objetos, será a metodologia

seguida no desenvolvimento deste trabalho.

Page 33: 5.1 Programa de Controle de Campeonatos de Futebol

33

Capítulo 5

Proposta do Trabalho

Introdução Nos capítulos 2 foram apresentadas informações do domínio do problema acerca

do funcionamento de um campeonato de futebol. No capítulo 3, foram apresentados três

softwares que são solução para administrar a complexidade dos campeonatos de futebol.

Este capítulo tem por função apresentar o que se deseja construir neste software para

gerenciar os campeonato, aproveitando-se dos conhecimentos obtidos no capítulo 2 e 3.

Além disso, neste capítulo também é descrito os resultados obtidos das fases de análise

e planejamento do sistema, para no próximo capitulo demonstrar o resultado final.

5.1 Programa de Controle de Campeonatos de Futebol

A proposta deste trabalho é a criação de um programa de computador para fazer

o controle de campeonatos de futebol.

De acordo com a literatura apresentada no capítulo 3 deste trabalho, um bom

sistema de controle de campeonatos deve ser capaz de gerenciar vários campeonatos de

futebol. Dentro de cada campeonato, deve ser possível incluir as equipes que disputam a

competição e os jogadores inscritos por estas equipes. Também fazem parte de um

campeonato, os árbitros que apitam um jogo e o sistema também deve abranger este

fato.

Um sistema robusto para controle de campeonatos, deve principalmente ser

capaz de aceitar o gerenciamento dos mais diferentes tipos de competições de futebol. É

sabido, conforme explicado no capítulo 2, que cada tipo de competição tem suas

fórmulas de disputa. Uma Copa do Mundo, exemplo, numa primeira fase as equipes são

divididas em grupos. As equipes melhores colocadas avançam para fase seguinte, onde

novamente se organizam em grupos e assim sucessivamente até chegar a grande final.

Já num campeonato nacional disputado em um país da Europa, como por exemplo, o

Campeonato Inglês de Futebol, possui uma fórmula de disputa diferente da fórmula de

Page 34: 5.1 Programa de Controle de Campeonatos de Futebol

34

disputa da Copa do Mundo. No Campeonato Inglês, as equipes jogam todas entre si em

uma única fase em um único grupo. A que somar mais pontos é a grande campeã.

Também a de se esperar de um bom software de Controle de Campeonatos a

possibilidade de gerenciar os jogos dentro da competição, incluindo a escalação das

equipes e juizes. Além do simples placar do jogo, deve ser possível inserir no sistema as

diversas estatísticas inerentes a uma partida de futebol. Em contrapartida, é desejável

que este sistema nos mostre de forma automática, uma porca de relatórios estatísticos

que nos ajudem a compreender a competição.

Desta forma, o que se pretende neste capítulo é fazer uma descrição detalhada

das funcionalidades esperadas pelo software que será desenvolvido neste trabalho.

Estas funcionalidades do software podem ser divididas em duas partes: Módulo

de Gerenciamento do Campeonato e Módulo de Geração de Relatórios e Gráficos. No

Módulo de Gerenciamento do Campeonato é onde as informações do campeonato são

incluídas no sistema. Já o Módulo de Geração de Relatórios e Gráficos é a parte do

sistema que abastecido das informações entradas na área de Gerenciamento do

Campeonato, gera os relatórios e gráficos. Abaixo veremos uma descrição mais

detalhada do que cada parte do sistema compreende.

5.2 Definição dos usuár ios do Sistema

O sistema não exige grandes preocupações com controles de acesso. Por se tratar

de informações facilmente encontradas em periódicos e na Internet, não existe qualquer

controle a ser feito quanto à restrição de acesso as informações. Assim, podemos

imaginar um único usuário interagindo com o sistema, sendo capaz de realizar todas as

operações disponíveis.

Assim, no seguimento deste trabalho, as interações deste usuário com o sistema

serão representados da seguinte forma:

Figura 5.1. Usuários do Sistema.

Page 35: 5.1 Programa de Controle de Campeonatos de Futebol

35

5.3 Definindo as Áreas do Sistema e os Casos de Uso

O sistema deve ser capaz de suportar o controle de diversos campeonatos. Os

campeonatos são disputados em sua grande maioria anualmente. Cada edição de um

campeonato recebe o nome de Temporada. Assim, um campeonato deve ser cadastrado

uma única vez. Por exemplo, o Campeonato Brasileiro da Série A corresponde a um

único cadastro. Cada edição deste campeonato corresponde a uma temporada. Esta

separação entre Campeonato e Temporada permitirá ao sistema gerar informações de

um Campeonato ao longo das diversas Edições. Com isso, o conceito de campeonato no

sistema é bastante simples, entretanto o conceito de Temporada é muito mais complexo,

pois é na temporada que efetivamente registradas as tabelas de jogos e implicações.

Suas funções serão descritas com maiores detalhes ainda neste capítulo.

Outros dois importantes conceitos que o sistema administrará de forma única são

as Equipes e os Estádios. Assim como os campeonatos, uma Equipe e um Estádio serão

cadastrados uma única vez. Desta forma será possível gerar todas as informações

referentes a uma Equipe ao longo das diferentes competições que disputou.

Assim, a área de acesso do sistema de um usuário pode ser dividida, inicialmente

em quatro diferentes atividades, conforme demonstra a Figura 5.2.

Figura 5.2. Pacote da área do usuário.

A seguir, cada um dos pacotes será detalhado, descrevendo seus casos de usos,

para melhorar o entendimento de cada área do sistema. Para cada caso de uso descrito

ao longo deste capítulo, foi implementado um diagrama de seqüência, porém, para

facilitar a compreensão do trabalho, eles não serão descritos neste capítulo.

Page 36: 5.1 Programa de Controle de Campeonatos de Futebol

36

5.3.1 Manutenção de Campeonatos

A Manutenção de Campeonatos é a área onde o usuário efetuará o cadastro das

diferentes competições. Nesta área, as três principais tarefas a serem realizadas são a

Criação de novo campeonato, a Alteração dos dados de um campeonato e a Exclusão de

um Campeonato do sistema.

Figura 5.3. Diagrama de caso de uso para Manutenção de Campeonatos.

Abaixo é descrito cada um destes processos em detalhes:

Criar um novo Campeonato

Procedimentos:

1. O sistema exibe o formulário para cadastro de novo campeonato.

2. O usuário informa os dados do Campeonato (Nome do Campeonato e o País

onde é disputado), escolhe o Tipo de Competição (Campeonato Nacional,

Campeonato Internacional de Clubes, Campeonato de Seleções ou Demais

Campeonatos) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar um Campeonato

Page 37: 5.1 Programa de Controle de Campeonatos de Futebol

37

Procedimentos:

1. O sistema exibe a lista de Campeonatos Cadastrados.

2. O Usuário seleciona o Campeonato desejado e escolhe a opção de manutenção

(Alterar Dados ou Excluir Campeonato).

Alternativas:

1. Não existem Campeonatos cadastrados. O sistema desabilita as funções de

manutenção de Campeonato, não permitindo ao usuário Alterar Dados ou

Excluir Campeonato.

Alterar dados de um Campeonato

Procedimentos:

1. O sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O Usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do campeonato selecionado não existem ou estão corrompidos. O

sistema exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir um Campeonato

Procedimentos:

1. O sistema solicita a confirmação da exclusão do Campeonato.

2. Após a confirmação do usuário o sistema exclui o Campeonato do banco de

dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão do Campeonato. O sistema não

procede à operação de exclusão do Campeonato.

2. O Campeonato já possui uma Temporada cadastrada, sendo referenciado por

outros dados. O sistema alerta o usuário da impossibilidade de exclusão do

Campeonato.

Page 38: 5.1 Programa de Controle de Campeonatos de Futebol

38

5.3.2 Manutenção de Equipes

A Manutenção de Equipes é a área onde o usuário efetuará o cadastro das

Equipes. Nesta área, as três principais tarefas a serem realizadas são a Criação de nova

Equipe, a Alteração dos dados de uma Equipe e a Exclusão de uma Equipe do sistema.

Figura 5.4. Diagrama de caso de uso para Manutenção de Equipes.

Abaixo é descrito cada um destes processos em detalhes:

Criar uma nova Equipe

Procedimentos:

1. O sistema exibe o formulário para cadastro de nova Equipe.

2. O usuário informa os dados da Equipe (Nome, Nome Completo, Cidade, País,

Data de Fundação, Nome do Estádio e a imagem do Escudo), escolhe o Tipo de

Equipe (Equipe ou Seleção) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar uma Equipe

Procedimentos:

1. O sistema exibe a lista de Equipes Cadastradas.

Page 39: 5.1 Programa de Controle de Campeonatos de Futebol

39

2. O Usuário seleciona a Equipe desejada e escolhe a opção de manutenção

(Alterar Dados ou Excluir Equipe).

Alternativas:

1. Não existem Equipes cadastradas. O sistema desabilita as funções de

manutenção de Equipes, não permitindo ao usuário Alterar Dados ou Excluir

Equipe.

Alterar dados de uma Equipe

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O Usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados da Equipe selecionada não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir uma Equipe

Procedimentos:

1. O sistema solicita a confirmação da exclusão da Equipe.

2. Após a confirmação do usuário o sistema exclui a Equipe do banco de dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão da Equipe. O sistema não

procede à operação de exclusão da Equipe.

2. A Equipe já está inclusa na disputa de uma Temporada de um Campeonato,

sendo referenciado por outros dados. O sistema alerta o usuário da

impossibilidade de exclusão da Equipe.

5.3.3 Manutenção de Estádios

A Manutenção de Estádios é a área onde o usuário efetuará o cadastro dos

Estádios de Futebol. Nesta área, as três principais tarefas a serem realizadas são a

Page 40: 5.1 Programa de Controle de Campeonatos de Futebol

40

Criação de novo Estádio, a Alteração dos dados de um Estádio e a Exclusão de um

Estádio do sistema.

Figura 5.5. Diagrama de caso de uso para Manutenção de Estádios.

Abaixo é descrito cada um destes processos em detalhes:

Criar um novo Estádio

Procedimentos:

1. O sistema exibe o formulário para cadastro de novo Estádio.

2. O usuário informa os dados do Estádio (Nome Usual do Estádio, Nome Oficial,

Capacidade, Cidade, País e a Foto) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar um Estádio

Procedimentos:

1. O sistema exibe a lista de Estádios cadastrados.

2. O Usuário seleciona o Estádio desejado e escolhe a opção de manutenção

(Alterar Dados ou Excluir Estádio).

Alternativas:

Page 41: 5.1 Programa de Controle de Campeonatos de Futebol

41

1. Não existem Estádios cadastrados. O sistema desabilita as funções de

manutenção de Estádio, não permitindo ao usuário Alterar Dados ou Excluir

Estádio.

Alterar dados de um Estádio

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O Usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do Estádio selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir um Estádio

Procedimentos:

1. O sistema solicita a confirmação da exclusão do Estádio.

2. Após a confirmação do usuário o sistema exclui o Estádio do banco de dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão do Estádio. O sistema não

procede à operação de exclusão do Estádio.

2. O Estádio já está vinculado a uma Equipe, sendo referenciado por outros dados.

O sistema alerta o usuário da impossibilidade de exclusão do Estádio.

3. O Estádio já está vinculado a um Jogo, sendo referenciado por outros dados. O

sistema alerta o usuário da impossibilidade de exclusão do Estádio.

5.3.4 Administração de Temporadas

Esta é uma atividade das mais complexas no sistema e é nesta tarefa onde se

efetivamente controlara os campeonatos de futebol gerando as respectivas estatísticas.

Por isso, precisa ser divida em outras tarefas menores.

Page 42: 5.1 Programa de Controle de Campeonatos de Futebol

42

Entre as atividades que compõem a Administração de Temporadas, a primeira

dela é a Manutenção de Temporadas. É nesta tarefa que as temporadas serão cadastradas

e parametrizadas. Toda Temporada estará relacionada a um Campeonato previamente

cadastrado.

Outro conceito a ser tratado na Administração de Temporadas é a Estrutura da

disputa da competição. É nesta área do sistema, denominada Manutenção da Estrutura

da Temporada, que o usuário irá configurar as Fases, Grupos e Rodadas que a

Temporada irá ter.

Ainda uma área para incluir as Equipes participantes de uma temporada, haja

visto que um campeonato a cada Temporada possui diferentes Equipes na disputa.

Um requisito importante do sistema é que gere estatísticas tanto das equipes

quanto dos jogadores. Desta forma, é necessário termos uma área no sistema onde o

usuário entre com o cadastro dos jogadores de cada equipe. Por uma opção de projeto,

ao contrário das estatísticas das equipes, onde é se deseja obter informações

independentes de temporadas, exigindo um cadastro único, para os Jogadores, somente

será necessário obter as estatísticas dentro de uma determinada Temporada, como por

exemplo, número de cartões recebidos, gols feitos, partidas jogadas, etc. Assim, um

jogador será cadastrado uma vez para cada temporada de campeonato que dispute.

Outra área do sistema que tem requisitos análogos ao dos Jogadores é a de

Manutenção de Árbitros. É desejável que fique registrado nas partidas de futebol

inseridos no sistema qual árbitro apitou e que estas informações gerem estatísticas.

O Tribunal Desportivo de um Campeonato aplica diversas sanções aos clubes.

Destas sanções, um tipo específico de sanção implica na perda ou ganho de pontos na

tabela de classificação. Desta forma, o sistema deve ter uma área onde estas decisões do

tribunal sejam refletidas inseridas. A área responsável por esta tarefa é denominada

Punições.

Por fim, a mais importante da Administração de Temporadas é a Administração

dos Jogos. Esta também é uma área complexa do sistema que para ser mais bem

compreendida será divida em áreas menores será adiante explicada. Na Figura 5.6

ilustra a análise feita até o momento.

Page 43: 5.1 Programa de Controle de Campeonatos de Futebol

43

Figura 5.6. Pacote da área do usuário com casos de usos definidos.

Abaixo é descrito cada um destes processos em detalhes:

5.3.4.1 Manutenção de Temporadas

A Manutenção de Temporadas é a área onde o usuário efetuará o cadastro de

cada uma das edições de um Campeonato. Desta forma, é exigido que para se cadastrar

uma temporada, já exista o respectivo Campeonato Cadastrado. Nesta área, as três

principais tarefas a serem realizadas são a Criação de novo Estádio, a Alteração dos

dados de um Estádio e a Exclusão de um Estádio do sistema.

Page 44: 5.1 Programa de Controle de Campeonatos de Futebol

44

Figura 5.7. Diagrama de caso de uso para Manutenção de Temporadas.

Abaixo é descrito cada um destes casos de uso em detalhes:

Criar uma nova Temporada

Procedimentos:

1. O sistema exibe o formulário para cadastro de nova Temporada.

2. O usuário informa os dados da Temporada (nome da temporada, escolha do

campeonato a que se refere, descrição da fórmula de disputa, pontos por vitória

no tempo normal, na prorrogação e nos pênaltis, pontos por empate no tempo

normal e na prorrogação, pontos por derrota na prorrogação e nos pênaltis,

critério de desempate da tabela de classificação, número de equipes promovidas

para divisão superior, número de equipes classificadas para competição 1,

número de equipes classificadas para competição 2, número de equipes para

disputa do play-off de rebaixamento e número de equipes rebaixadas para

divisão inferior) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Page 45: 5.1 Programa de Controle de Campeonatos de Futebol

45

Selecionar uma Temporada

Procedimentos:

1. O sistema exibe a lista das Temporadas cadastradas.

2. O Usuário seleciona a Temporada desejada e escolhe a opção de manutenção

(Alterar Dados ou Excluir Temporada).

Alternativas:

1. Não existe temporada cadastrada. O sistema desabilita as funções de

manutenção de temporada, não permitindo ao usuário alterar dados ou excluir

temporada.

Alterar dados de uma Temporada

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O Usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados da temporada selecionada não existem ou estão corrompidos. O

sistema exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir uma Temporada

Procedimentos:

1. O sistema solicita a confirmação da exclusão da Temporada.

2. Após a confirmação do usuário o sistema exclui a Temporada do banco de

dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão da Temporada. O sistema não

procede à operação de exclusão da Temporada.

2. A Temporada já possui equipes incluídas na disputa, ou árbitros cadastrados, ou

Estrutura da Temporada, sendo referenciado por outros dados. O sistema alerta o

usuário da impossibilidade de exclusão da Temporada.

Page 46: 5.1 Programa de Controle de Campeonatos de Futebol

46

Abrir Dados de uma Temporada

Procedimentos:

1. O sistema opera com uma temporada aberta. Limpa os dados da Temporada

anteriormente aberta. Ele seta seus valores para nova temporada aberta

apresentando suas informações.

Alternativas:

1. Não existe nenhuma temporada cadastrada. O sistema desabilita a possibilidade

de abrir uma temporada. Apresenta os dados em branco e não permite as demais

operações da Administração de Temporada.

5.3.4.2 Equipes Par ticipantes

Nesta área do sistema, o usuário deverá determinar, entre as equipes já

cadastradas no sistema, quais disputaram a temporada do campeonato. O sistema só

permitirá inserir jogos na temporada das equipes incluídas na disputa. As principais

tarefas a serem realizadas são a inclusão de equipe na disputa da temporada e a exclusão

da equipe da disputa da temporada.

Figura 5.8. Diagrama de caso de uso para Equipes Participantes.

Abaixo é descrito cada um dos casos de uso em detalhes:

Selecionar uma Equipe Cadastrada

Procedimentos:

1. O sistema exibe a lista das equipes cadastradas que não estão disputando a

temporadas a qual está sendo incluída.

2. O usuário seleciona a temporada desejada e escolhe a opção de inclusão.

Alternativas:

Page 47: 5.1 Programa de Controle de Campeonatos de Futebol

47

1. Não existe equipe cadastrada que não já não esteja incluída no campeonato. O

sistema desabilita a operação de inclusão de equipe na disputa da temporada.

Incluir Equipe na Disputa da Temporada

Procedimentos:

1. O usuário seleciona a equipe e solicita a inclusão na disputa da temporada.

2. O sistema efetiva a inclusão da equipe na disputa da temporada no sistema.

Selecionar uma Equipe que Disputa a Temporada

Procedimentos:

1. O sistema exibe a lista das equipes que estão disputando a temporada aberta.

2. O usuário seleciona a equipe desejada e escolhe a opção de excluir da disputa.

Alternativas:

1. Não existe nenhuma equipe incluída na disputa da temporada. O sistema

desabilita a operação de exclusão da equipe na disputa da temporada

Excluir Equipe da Disputa da Temporada

Procedimentos:

1. O usuário seleciona a equipe e solicita a da exclusão da disputa da Temporada.

3. Após a confirmação do usuário o sistema exclui a Temporada do banco de

dados.

Alternativas:

1. A equipe já possui jogadores cadastrados, sendo referenciado por outros dados.

O sistema alerta o usuário da impossibilidade de exclusão da equipe.

2. A equipe já possui jogos cadastrados, sendo referenciado por outros dados. O

sistema alerta o usuário da impossibilidade de exclusão da equipe.

3. A equipe já possui punições no sistema, sendo referenciado por outros dados. O

sistema alerta o usuário da impossibilidade de exclusão da equipe.

5.3.4.3 Manutenção de Jogadores

Nesta área do sistema, o usuário deverá determinar, entre as equipes incluídas na

disputa da temporada, os jogadores inscritos por elas para disputa da temporada. Nesta

Page 48: 5.1 Programa de Controle de Campeonatos de Futebol

48

área, as três principais tarefas a serem realizadas são a Criação de um novo Jogador, a

Alteração dos dados de um Jogador e a Exclusão de um Jogador do sistema.

Figura 5.9. Diagrama de caso de uso para Manutenção de Jogadores.

Abaixo é descrito cada um dos casos de uso em detalhes:

Selecionar uma Equipe que Disputa a Temporada

Procedimentos:

1. O sistema exibe a lista das equipes que estão disputando a temporada aberta.

2. O usuário seleciona a equipe desejada.

3. O sistema apresenta a lista dos jogadores já cadastrados da equipe para a

temporada aberta no sistema.

Alternativas:

1. Não existe nenhuma equipe inclusa na disputa da temporada. O sistema

desabilita a operação de criar de novo jogador.

Criar um novo Jogador

Procedimentos:

1. O sistema exibe o formulário para cadastro de novo jogador.

2. O usuário informa os dados do jogador (apelido, nome completo, número da

camisa, posição, nacionalidade, data de nascimento, e-mail e fotografia) e

solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

Page 49: 5.1 Programa de Controle de Campeonatos de Futebol

49

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar um Jogador

Procedimentos:

1. O sistema exibe a lista dos jogadores que estão cadastrados para disputa da

temporada pela equipes selecionada.

2. O usuário seleciona o jogador desejado e escolhe a opção de manutenção (alterar

dados ou excluir um jogador).

Alternativas:

2. Não existe nenhum jogador cadastrado para a equipe na disputa da temporada. O

sistema desabilita as operações de alteração de dados ou exclusão de jogador.

Alterar dados de um Jogador

Procedimentos:

1. O Sistema busca no banco de dados o cadastro e exibe em um formulário.

2. O Usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do jogador selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

3. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir um Jogador

Procedimentos:

1. O sistema solicita a confirmação da exclusão do jogador.

2. Após a confirmação do usuário o sistema exclui o jogador do banco de dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão do jogador. O sistema não

procede à operação de exclusão do jogador.

3. O jogador já possui participação em um jogo, sendo referenciado por outros

dados. O sistema alerta o usuário da impossibilidade de exclusão do jogador.

Page 50: 5.1 Programa de Controle de Campeonatos de Futebol

50

5.3.4.4 Manutenção de Árbitros

A Manutenção de Árbitros é a área onde o usuário efetuará o cadastro dos

Árbitros da Temporada. Nesta área, as três principais tarefas a serem realizadas são a

Criação de novo Árbitro, a Alteração dos dados de um Árbitro e a Exclusão de um

Árbitro do sistema.

Figura 5.10. Diagrama de caso de uso para Manutenção de Árbitros.

Abaixo é descrito cada um destes processos em detalhes:

Criar um novo Árbitro

Procedimentos:

1. O sistema exibe o formulário para cadastro de novo árbitro.

2. O usuário informa os dados do Árbitro (nome, data de nascimento e fotografia) e

solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar um Árbitro

Procedimentos:

Page 51: 5.1 Programa de Controle de Campeonatos de Futebol

51

1. O sistema exibe a lista dos Árbitros cadastrados para a temporada aberta.

2. O usuário seleciona o árbitro desejado e escolhe a opção de manutenção (alterar

dados ou excluir árbitro).

Alternativas:

1. Não existem árbitros cadastrados na temporada aberta. O sistema desabilita as

funções de manutenção de árbitro, não permitindo ao usuário alterar dados ou

excluir cadastro.

Alterar dados de um Árbitro

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do árbitro selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir um Árbitro

Procedimentos:

1. O sistema solicita a confirmação da exclusão do árbitro.

2. Após a confirmação do usuário o sistema exclui o árbitro do banco de dados.

Alternativas:

1. O usuário não confirma a intenção de exclusão do árbitro. O sistema não

procede à operação de exclusão do árbitro.

2. O árbitro já está vinculado a um jogo, sendo referenciado por outros dados. O

sistema alerta o usuário da impossibilidade de exclusão do arbitro.

5.3.4.5 Manutenção da Estrutura do Campeonato

Esta é uma área do sistema de grande complexidade a ser administrada. Em

virtude da grande variedade de fórmulas de disputas já criadas e as que ainda poderão

Page 52: 5.1 Programa de Controle de Campeonatos de Futebol

52

ser criadas. A idéia é de que um bom software de controle de campeonatos tenha a

capacidade de gerenciar toda e qualquer fórmula de disputa de campeonato.

No estudo das fórmulas de disputadas de diversos campeonatos realizado nos

mais diversos paises e tempos, ficou observado que, em geral, as fórmulas de disputa

seguem a seguinte estrutura, semelhante à de uma árvore:

Uma Temporada de um Campeonato de futebol é dividida em Fases: alguns

campeonatos possuem apenas uma fase – campeonatos nacionais disputados nos paises

da Europa - enquanto outros possuem diversas fases – Copa do Mundo.

Uma Fase divide as equipes em grupos: é verdade que nos campeonatos

nacionais disputados na Europa não existe divisão de equipes em grupos, mas mesmo

assim, podemos dizer que as equipes são dividas em um único Grupo. Já em

Campeonatos como a Copa do Mundo, a divisão das equipes em grupos sempre ocorre.

Dentro de uma Fase e um Grupo, ocorrem várias Rodadas: Em uma rodada,

todas as equipes jogam dentro de seu grupo entre si.

Assim, o software deve gerenciar as fórmulas de disputa e esta rotina será uma

das diferenças do programa deste trabalho em relação aos demais software existentes no

mercado para esta mesma finalidade.

Page 53: 5.1 Programa de Controle de Campeonatos de Futebol

53

Figura 5.11. Diagrama de caso de uso para Manutenção da Estrutura Temporada.

Abaixo é descrito cada um destes processos em detalhes:

Criar uma nova Fase

Procedimentos:

1. O sistema exibe o formulário para cadastro de nova fase.

2. O usuário informa o nome da fase e solicita a gravação do cadastro.

3. O sistema verifica se o nome foi preenchido. Caso esteja, o cadastro é efetivado

no sistema.

Alternativas:

1. O nome da fase não foi preenchido. O sistema informa ao usuário e solicita ao

usuário que corrija o erro.

Page 54: 5.1 Programa de Controle de Campeonatos de Futebol

54

Selecionar uma Fase

Procedimentos:

1. O sistema exibe a lista das fases cadastradas para a temporada aberta.

2. O usuário seleciona a fase desejada e escolhe a opção de manutenção (alterar

dados ou excluir fase).

3. Quando o usuário seleciona a fase, realiza o procedimento de abertura da fase,

mostrando todos os grupos cadastrados nesta fase.

Alternativas:

1. Não existem fases cadastradas na temporada aberta. O sistema desabilita as

funções de manutenção de fase, não permitindo ao usuário alterar dados ou

excluir cadastro de uma fase ou criar uma nova rodada.

Alterar dados de uma Fase

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados da fase selecionada não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os dados obrigatórios não foram preenchidos. O sistema informa ao

usuário quais os campos que não foram preenchidos e solicita ao usuário que

corrija o erro.

Excluir uma Fase

Procedimentos:

1. Após a solicitação do usuário o sistema exclui a fase do banco de dados.

Alternativas:

1. A fase já está possui grupos cadastrados, sendo referenciado por outros dados. O

sistema alerta o usuário da impossibilidade de exclusão da fase.

Criar um novo Grupo

Procedimentos:

Page 55: 5.1 Programa de Controle de Campeonatos de Futebol

55

1. O sistema exibe o formulário para cadastro de novo grupo.

2. O usuário informa o nome do grupo e solicita a gravação do cadastro.

2. O sistema verifica se o nome foi preenchido. Caso esteja, o cadastro é efetivado

no sistema.

Alternativas:

1. O nome do grupo não foi preenchido. O sistema informa ao usuário e solicita ao

usuário que corrija o erro.

Selecionar um Grupo

Procedimentos:

1. O sistema exibe a lista dos grupos cadastrados para a fase aberta.

2. O usuário seleciona o grupo desejado e escolhe a opção de manutenção (alterar

dados ou excluir grupo).

3. Quando o usuário seleciona a grupo, realiza o procedimento de abertura do

grupo, mostrando todas as rodadas cadastradas neste grupo.

Alternativas:

1. Não existem grupos cadastrados na fase aberta. O sistema desabilita as funções

de manutenção de grupo, não permitindo ao usuário alterar dados, excluir grupo

e criar rodadas.

Alterar dados de um Grupo

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do grupo selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os dados obrigatórios não foram preenchidos. O sistema informa ao

usuário quais os campos que não foram preenchidos e solicita ao usuário que

corrija o erro.

Excluir um Grupo

Procedimentos:

Page 56: 5.1 Programa de Controle de Campeonatos de Futebol

56

1. Após a solicitação do usuário o sistema exclui o grupo do banco de dados.

Alternativas:

1. O grupo já está possui rodadas cadastradas, sendo referenciado por outros dados.

O sistema alerta o usuário da impossibilidade de exclusão do grupo.

Adicionar uma nova Rodada

Procedimentos:

1. O usuário informa o solicita a criação de uma nova rodada.

2. O sistema cria uma nova rodada com numero seguinte a última rodada

cadastrada no grupo selecionado.

Diminuir uma Rodada

Procedimentos:

1. O usuário solicita a diminuição de uma rodada.

2. O sistema exclui a ultima rodada do grupo aberto do banco de dados.

Alternativas:

1. A rodada já está possui jogos cadastrados, sendo referenciado por outros dados.

O sistema alerta o usuário da impossibilidade de exclusão da rodada.

5.3.4.6 Punições

Esta é uma área do sistema responsável por aplicar no sistema as decisões dos

tribunais desportivos com perda de pontos para um time e ganho de pontos por outros.

Está área possui três importantes procedimentos: criar uma nova punição, alterar dados

de uma punição e excluir uma punição. A inclusão de uma punição no sistema deve

refletir automaticamente na tabela de classificação do campeonato.

Page 57: 5.1 Programa de Controle de Campeonatos de Futebol

57

Figura 5.12. Diagrama de caso de uso para Punições.

Abaixo é descrito cada um destes processos em detalhes:

Criar uma nova Punição

Procedimentos:

1. O sistema exibe o formulário para cadastro de uma nova punição.

2. O usuário informa os dados da punição (estrutura da temporada que ocorreu a

punição, a equipe, a data da punição, o número de pontos diminuídos ou ganhos

e o motivo da punição) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar uma Punição

Procedimentos:

1. O sistema exibe a lista das punições cadastradas na temporada aberta.

2. O usuário seleciona a punição e escolhe a opção de manutenção (alterar dados

ou excluir uma punição).

Alternativas:

Page 58: 5.1 Programa de Controle de Campeonatos de Futebol

58

1. Não existem punições cadastradas na temporada aberta. O sistema desabilita os

procedimentos de manutenção de punições, não permitindo ao usuário alterar

dados ou excluir punições.

Alterar dados de uma Punição

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do árbitro selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Excluir uma Punição

Procedimentos:

1. O usuário solicita a da exclusão de uma punição

2. O sistema exclui a punição do banco de dados.

5.3.4.7 Administração de Jogos

Mais uma vez, dado a grande complexidade da tarefa e sua fundamental

importância para o sistema, faz-se necessário dividir esta área do sistema em pequenos

procedimentos. A área de Administração de Jogos deve compreender as atividades de

Manutenção da Tabela de Jogos, onde todos os confrontos são cadastrados no sistema

sejam eles já realizados, com o placar do jogo já definido ou ainda por realizar. O

sistema inda deve contemplar uma área para inclusão das escalações das equipes de um

jogo e por fim a inclusão dos principais eventos do jogo, como por exemplo, quais

jogadores anotaram os gols do confronto, receberam cartões, etc. Estas duas áreas do

sistema são intituladas Manutenção de Escalação e Manutenção de Eventos

respectivamente.

Page 59: 5.1 Programa de Controle de Campeonatos de Futebol

59

A figura 5.13 representa os estudos de casos de usos realizados na área de

Administração de Temporadas.

Figura 5.13. Diagrama de caso de uso para Administração de Temporadas.

A última área do sistema, de Administração de Jogos, demonstrada na figura

5.14, é descrita em detalhes em detalhes abaixo.

Page 60: 5.1 Programa de Controle de Campeonatos de Futebol

60

Figura 5.14. Diagrama de caso de uso para Administração de Jogos.

5.3.4.7.1 Manutenção da Tabela de Jogos

A Manutenção de Tabela de Jogos é a onde o usuário efetuará o

acompanhamento da do calendário de jogos do campeonato, incluído seus jogos e todas

as principais informações da súmula da partida. A figura 5.15 ilustra os casos de uso

desta atividade e cada um deles é descrito em abaixo.

Figura 5.15. Diagrama de caso de uso para Manutenção da Tabela de Jogos.

Selecionar uma Estrutura da Temporada (Rodada)

Procedimentos:

1. O sistema exibe a lista das fases da temporada aberta.

2. O usuário seleciona a fase desejada.

Page 61: 5.1 Programa de Controle de Campeonatos de Futebol

61

3. O sistema exibe a lista dos grupos da fase selecionada pelo usuário.

4. O usuário seleciona o grupo desejado.

5. O sistema exibe a lista das rodadas do grupo selecionado pelo usuário.

6. O usuário seleciona a rodada.

7. O sistema exibe a tabela de jogos da rodada selecionada pelo usuário e ele

escolhe a opção de Criar um novo Jogo ou selecionar um Jogo.

Alternativas:

1. Não existem fases cadastradas na temporada aberta, ou grupos cadastrados na

fase selecionada, ou rodadas cadastradas no grupo selecionado. Em qualquer

destes casos, o sistema impossibilita a inclusão de um novo jogo.

Criar um novo Jogo

Procedimentos:

1. O sistema exibe o formulário para cadastro de um novo jogo.

2. O usuário informa os dados do jogo (Equipe Anfitriã, Equipe Visitante,

Resultado do Jogo, Data e Hora, Estádio, Árbitro, TV, Estatísticas, Comentário

do Jogo, e Fotos) e solicita a gravação do cadastro.

3. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os obrigatórios não foram preenchidos. O sistema informa ao usuário

quais os campos que não foram preenchidos e solicita ao usuário que corrija o

erro.

Selecionar um Jogo

Procedimentos:

1. O sistema exibe a lista dos jogos cadastradas na rodada aberta.

2. O usuário seleciona o jogo e escolhe a opção de manutenção (alterar dados de

um jogo, excluir um jogo, definir a escalação das equipes de um jogo, definir os

eventos de um jogo).

Alternativas:

1. Não existem jogos cadastrados na rodada selecionada. O sistema desabilita os

procedimentos de manutenção de manutenção de jogo.

Page 62: 5.1 Programa de Controle de Campeonatos de Futebol

62

Alterar dados de um Jogo

Procedimentos:

1. O Sistema busca no banco de dados os dados do cadastro e exibe em um

formulário.

2. O usuário altera os dados desejados e solicita a gravação das alterações.

Alternativas:

1. Os dados do jogo selecionado não existem ou estão corrompidos. O sistema

exibe uma mensagem de alerta quanto ao problema encontrado.

2. Todos os dados obrigatórios não foram preenchidos. O sistema informa ao

usuário quais os campos que não foram preenchidos e solicita ao usuário que

corrija o erro.

Excluir um Jogo

Procedimentos:

1. O usuário solicita a exclusão do jogo selecionado.

2. O sistema exclui o jogo do banco de dados.

Alternativas:

1. O jogo possui escalação definida e ou eventos, sendo referenciados por estes

dados. O sistema alerta o usuário, e pede a confirmação da intenção de excluir o

jogo.

2. O usuário confirma a intenção de excluir o jogo.

3. O sistema excluir o jogo, a escalação do jogo e todos os eventos do jogo, do

banco de dados.

4. Caso o usuário não confirme a intenção de excluir a partida, o sistema não

procede a exclusão dos dados.

5.3.4.7.2 Manutenção da Escalação do Jogo

Está é a área onde o usuário poderá definir a escalação das equipes em um

confronto. A consistência destas informações é importante para geração dos relatórios

estatísticos dos jogadores na temporada. Está área, além de requerer a inclusão de onze

jogadores titulares de cada equipe, ainda solicita ao usuário as três possíveis

substituições efetuadas pela equipe no decorrer da partida. A figura 5.16 ilustra as

interações do usuário com o sistema pra a definição da escalação.

Page 63: 5.1 Programa de Controle de Campeonatos de Futebol

63

Figura 5.16. Diagrama de caso de uso para Manutenção da Escalação do Jogo.

Observa-se na figura 5.16, que os casos de uso se repetem com o mesmo nome,

mudando apenas o fato de a operação ser feita no time da casa ou no time visitante. Na

seqüência do trabalho serão descritos apenas os casos de uso do time da casa, haja visto

que os casos de uso são iguais, re-salvando a substituição do time da casa pelo visitante

para o entendimento dos casos de usos não descritos.

Também há de se observar que não será obrigatória a inclusão, no sistema, da

escalação das equipes. Apenas as estatísticas referentes aos jogadores é que não serão

obtidas, sendo garantida a exibição daquelas estatísticas que não sofrem influência da

escalação das equipes.

Selecionar Jogador do Time da Casa

Procedimentos:

1. O sistema exibe a lista dos jogadores cadastrados na temporada do time da casa

do jogo selecionado.

Page 64: 5.1 Programa de Controle de Campeonatos de Futebol

64

2. O usuário seleciona o jogador desejado e escolhe a opção de escalar jogador

como titular.

Alternativas:

1. Não existem jogadores cadastrados do time da casa na temporada. O sistema

impossibilita a inclusão de um jogador como titular e substituição de jogador.

Incluir Jogador Titular no Time da Casa

Procedimentos:

1. O usuário solicita a inclusão do jogador selecionado na escalação como titular

do time da casa no jogo.

2. A inclusão é efetivada pelo sistema.

Alternativas:

1. Já foram inclusos todos os onze jogadores titulares do time da casa no jogo. O

sistema não procede a inclusão do jogador, informando o usuário do erro.

Selecionar Jogador Escalado do Time da Casa

Procedimentos:

1. O sistema exibe a lista dos jogadores do time da casa escalados no jogo

selecionado.

2. O usuário seleciona o jogador desejado e escolhe a opção de excluir a escalação

do jogador.

Alternativas:

1. Não existem jogadores escalados no time da casa. O sistema impossibilita as

ações de excluir escalação de jogador do time da casa e substituir jogador.

Excluir Escalação de Jogador do Time da Casa

Procedimentos:

1. O usuário solicita a exclusão da escalação do jogador selecionado.

2. A exclusão é efetivada pelo sistema.

Alternativas:

1. O jogador selecionado já foi substituído por outro jogador. O sistema

impossibilita sua exclusão da escalação, informando ao usuário da necessidade

de desfazer primeiro a substituição para depois efetuar a exclusão da escalação.

Page 65: 5.1 Programa de Controle de Campeonatos de Futebol

65

Substituir Jogador do Time da Casa

Procedimentos:

1. O usuário seleciona um jogador não escalado e um jogador escalado do time da

casa no jogo selecionado, informa o tempo de jogo em que ocorreu a

substituição e solicita que o sistema proceda a substituição.

2. A substituição é efetivada pelo sistema.

Exibir Substituições Realizadas pelo Time da Casa

Procedimentos:

1. O Sistema exibe até três substituições efetuadas no time da casa.

2. O usuário solicita desfazer uma das substituições efetuadas.

Alternativas:

1. Não foram efetuadas substituições. O sistema impossibilita a operação de o

usuário desfazer substituição.

Desfazer Substituição do Time da Casa

Procedimentos:

1. O usuário solicita a exclusão de uma substituição do time da Casa

2. O sistema exclui a substituição.

5.3.4.7.3 Manutenção de Eventos do Jogo

Nesta área do sistema, o usuário informará os eventos ocorridos na partida,

como por exemplo, o jogador que anotou um gol e em que minuto ocorreu ou o jogador

que recebeu um cartão. As três principais atividades desta tarefa são criar um novo

evento e excluir um evento. O diagrama de caso de uso é apresentado na figura 5.17.

Page 66: 5.1 Programa de Controle de Campeonatos de Futebol

66

Figura 5.17. Diagrama de caso de uso para Manutenção de Eventos do Jogo.

Também se observa na figura 5.17, casos de uso que se repetem com o mesmo

nome, mudando apenas o fato de a operação ser feita no time da casa ou no time

visitante. Na descrição dos casos de uso, apenas os casos de uso do time da casa serão

descritos. Para compreensão dos casos de uso do Time Visitante, basta a substituição do

termo time da casa pelo termo time visitante para o entendimento dos casos de usos não

descritos.

Também há de se observar que não será obrigatória a inclusão, no sistema, dos

eventos da partida. Apenas as estatísticas referentes aos eventos é que não serão obtidas

neste caso, sendo garantida a exibição das outras estatísticas.

Definir Eventos

Procedimentos:

1. O sistema exibe o formulário para definição de eventos para o time da casa e

para o time visitante.

2. O usuário efetua a ação de incluir um evento ou excluir um evento no jogo

selecionado.

Procedimentos:

1. O jogo não foi realizado. O sistema impossibilita a inclusão de qualquer evento.

Selecionar Jogador do Time da Casa

Procedimentos:

1. O sistema exibe a lista dos jogadores cadastrados na temporada do time da casa

do jogo selecionado.

2. O usuário seleciona o jogador desejado e escolhe a faz a inclusão de um evento.

Page 67: 5.1 Programa de Controle de Campeonatos de Futebol

67

Alternativas:

1. Não existem jogadores cadastrados do time da casa na temporada. O sistema

impossibilita a inclusão de um evento.

2. O sistema apresenta a lista de todos os jogadores cadastrados pelo time ou

apenas dos escalados no jogo.

Criar um novo Evento do Time da Casa

Procedimentos:

1. O usuário seleciona um jogador do time que esta incluindo o evento, informa o

tipo de evento (gol, gol de pênalti, gol contra, cartão amarelo, cartão amarelo e

vermelho e cartão vermelho) e o tempo de jogo, e solicita a gravação.

2. O sistema verifica se todos os dados foram informados e se estão corretos. Caso

estejam, o cadastro é efetivado no sistema.

Alternativas:

1. Todos os eventos de gol já foram inseridos, e o usuário solicita a inclusão de

outro gol. O sistema informa o usuário do erro e não inclui o evento.

Selecionar Evento do Jogo

Procedimentos:

1. O sistema exibe a lista dos eventos cadastrados no jogo selecionado.

2. O usuário seleciona o evento desejado a opção de excluir evento.

Alternativas:

1. Não existem eventos cadastrados. O sistema impossibilita a exclusão de um

evento.

Excluir um evento

Procedimentos:

1. O usuário seleciona um evento e solicita a exclusão do evento

2. O sistema exclui o evento da base de dados.

Assim, com a conclusão das descrições dos casos de uso, o pacote da área de

administração de jogos é ilustrado na figura 5.18.

Page 68: 5.1 Programa de Controle de Campeonatos de Futebol

68

Figura 5.18. Diagrama de caso de uso para Administração de Jogos.

5.4 O Modelo Conceitual

O Modelo Conceitual é uma representação de conceitos em um domínio de

problema. Ele deve ser uma representação de coisas do mundo real e não de

componentes de software. Sua criação é feita a partir dos casos de uso e de outros

documentos da análise, de onde são identificados conceitos (objetos).

O Modelo Conceitual apresenta conceitos, associações entre conceitos e

atributos de conceitos. Por não ser um modelo de projeto de software, os métodos não

são descritos nele.

Page 69: 5.1 Programa de Controle de Campeonatos de Futebol

69

O objetivo do Modelo Conceitual é capturar as abstrações essenciais e as

informações requeridas para compreender o domínio, no contexto dos requisitos

presentes.

A figura 5.19 ilustra o Modelo Conceitual para o sistema de gerenciamento de

campeonatos de futebol, construído a partir do estudo dos casos de uso anteriormente

abortado, identificando os principais conceitos envolvidos e as associações. Também

neste modelo, são apresentados os atributos que foram claramente identificados como

necessários para a correta implementação dos casos de uso. Este modelo é

especialmente preparado para auxiliar no desenvolvimento dos diagramas de seqüências

que, eventualmente pode sugerir mudanças ou outros conceitos ainda não identificados

que se refletirão no Diagrama de Classes que será apresentado no próximo tópico deste

capítulo.

Page 70: 5.1 Programa de Controle de Campeonatos de Futebol

70

Figura 5.19. Modelo Conceitual.

5.5 Diagramas de Classes de Projeto

Um diagrama de classes de projeto ilustra as especificações para as classes de

software e de interfaces de uma aplicação. [LAR 00]. A diferença entre o modelo

conceitual e o diagrama de classes, é que o primeiro é uma abstração de um conceito do

mundo real a qual se está interessado em fazer afirmações e estabelecer definições e o

segundo expressa a definição de classes como componentes de software.

Page 71: 5.1 Programa de Controle de Campeonatos de Futebol

71

Após ter sido completado a construção dos diagramas de interação, que podem

ser visualizados no Anexo 1 deste trabalho, é possível identificar as classes de software,

seus atributos e métodos. Porém, antes de apresentar o diagrama de classes, é necessário

fazer algumas considerações para que o diagrama seja facilmente compreendido.

Primeiramente é necessário explicar que o diagrama de classes foi dividido em

duas figuras. Na verdade, as duas figuras representam um único diagrama de classes.

Esta adaptação foi necessária para que para que pudesse ter uma melhor legibilidade do

diagrama. As figuras foram centradas em dois enfoques. Na primeira, a relação de todas

as classes com a classe Temporada. Na segunda figura, a relação de todas as classes

com a classe Jogo. Desta forma, as classes que possuem relação com ambas, são

apresentadas nas duas figuras de forma repetida, mas no diagrama original, representam

a implementação de uma única classe no sistema.

Também cabe ressaltar que os parâmetros dos métodos e o retorno não são

apresentados nas duas também para dar melhor legibilidade ao diagrama. Por fim, os

métodos de acesso as variáveis protegidas das classes, métodos de construção e

destruição das classes, atributos de acesso ao banco de dados e classes de interfaces

também não estão presentes nos diagrama de classes apresentados neste trabalho.

Abaixo é apresentado, nas figuras 5.20 e 5.21, o diagrama de classes do projeto.

Page 72: 5.1 Programa de Controle de Campeonatos de Futebol

72

Figura 5.20. Diagrama de Classes do Projeto - A.

Page 73: 5.1 Programa de Controle de Campeonatos de Futebol

73

Figura 5.21. Diagrama de Classes do Projeto - B.

Conclusão Este capítulo mostrou o resultado do trabalho das fases de projeto e análise do

sistema. Cabe destacar que o resultado apresentado nos diagramas não foi

imediatamente obtido após uma única fase de análise. Na verdade, este foi o resultado

Page 74: 5.1 Programa de Controle de Campeonatos de Futebol

74

final após vários ciclos de desenvolvimento do sistema, onde, em cada ciclo,

compreendia a fase de análise e projeto e implementação além de uma pequena

transição entre eles. Em cada ciclo, uma quantidade maior de informações surgia e

novas descobertas eram feitas, além de algumas mudanças, inevitavelmente haviam de

ser realizadas naquilo que já estava pronto.

O próximo capítulo do trabalho apresenta ficou o sistema após a sua

implementação.

Page 75: 5.1 Programa de Controle de Campeonatos de Futebol

75

Capítulo 6

Considerações do Projeto e Implementação

do Programa

Introdução Este capítulo do trabalho tem por objetivo apresentar como ficou o software

após o seu desenvolvimento. Serão ilustradas as interfaces e explicadas como procedem

as rotinas e a importância de cada uma delas para o sistema.

6.1 A Aber tura do Sistema

O sistema de controle de campeonato, já em sua tela inicial de abertura,

apresenta os dados do último campeonato aberto no sistema. Sua tela já apresenta as

principais informações do campeonato, ou seja, a tabela de jogos e a classificação

resumida. A partir da tela inicial, mostrada pela figura 6.1, o usuário poderá ter acesso

as demais funcionalidades do sistema.

Figura 6.1. Sistema: Tela inicial.

A figura 6.1 mostra que o campeonato as informações do Campeonato Brasileiro

– Série A, Temporada 2005 que está aberto Para abrir os dados de um outro campeonato

Page 76: 5.1 Programa de Controle de Campeonatos de Futebol

76

basta que o usuário selecione, na parte superior da figura, o campeonato desejado na

lista dos campeonatos cadastrados e clique no botão abrir. Na mesma figura, podemos

observar no lado direito, a estrutura da temporada, ou seja, as fases, grupos e rodadas

cadastradas para a temporada aberta. No centro da tela, está a tabela de jogos com os

botões de manutenção e ao lado esquerdo, a tabela de classificação resumida da

estrutura da temporada selecionada.

Na mesma Figura podemos observar os menus superiores, onde são realizados

os principais cadastros de gerenciamento do sistema, que são mostradas na seqüência do

trabalho.

6.2 Os Cadastros

O menu cadastro disponibiliza ao usuário as seguintes funções: Cadastro de

Campeonato, Temporada, Equipes e Estádio.

6.2.1 Cadastro de Campeonato

A figura 6.2 apresenta o formulário de cadastro de campeonatos, que a interface

pelo qual o usuário efetua os cadastros dos campeonatos que deseja controlar no

sistema. Conforme explicado nos capítulos anteriores, os campeonatos são cadastrados

uma única vez no sistema e para fazer o controle de um campeonato ainda é necessário

que o usuário cadastre a temporada do campeonato que deseja controlar. Uma vez feito

o cadastro do campeonato, podem ser controladas quantas temporadas forem desejadas

e, desta forma, o sistema fica apto a fazer relações e apresentar estatísticas de um

campeonato ao longo da disputa de diferentes temporadas.

Page 77: 5.1 Programa de Controle de Campeonatos de Futebol

77

Figura 6.2. Sistema: Cadastro de Campeonatos.

A figura 6.2 apresenta em seu lado esquerdo a lista dos campeonatos cadastrados

no sistema e os botões que permitem as três operações de manutenção: incluir um novo

campeonato, alterar dados de um campeonato e excluir um campeonato. Já no lado

esquerdo, a figura apresenta um cadastro sendo editado. O sistema permite ao usuário

gravar as alterações ou cancelar além de fechar a tela.

6.2.2 Cadastro de Temporada

Para efetuar o cadastro de uma temporada, é necessário que o campeonato já

esteja cadastrado. A figura 6.3 apresenta como foi desenvolvido o formulário de

cadastro de temporadas. É após o cadastro da temporada efetuar os cadastros de todos

os dados relativos a disputa dela.

Page 78: 5.1 Programa de Controle de Campeonatos de Futebol

78

Figura 6.3. Sistema: Cadastro de Temporadas.

A figura 6.3 apresenta em seu lado esquerdo a lista das temporadas cadastradas e

abaixo da lista, os botões de manutenção. No lado esquerdo da mesma interface, está o

formulário propriamente dito. Na figura estão sendo editados os dados da Temporada

2005 do Campeonato Brasileiro – Série B. O usuário deve responder aos parâmetros

para que o sistema controle corretamente as informações da temporada.

6.2.3 Cadastro de Equipe

A figura 6.4 mostra a interface do sistema onde o usuário pode efetuar o cadastro

das equipes. Assim como os campeonatos, as equipes são cadastradas uma única vez no

sistema. Isso permite ao sistema gerar dados estatísticos referentes a diferentes

competições que participou, desde que tenham sido inseridas no sistema.

Page 79: 5.1 Programa de Controle de Campeonatos de Futebol

79

Figura 6.4. Sistema: Cadastro de Equipes.

No lado esquerdo da figura 6.4 está a lista das equipes já cadastradas no sistema

e logo abaixo da lista estão os botões de manutenção de cadastro. No lado direito está o

formulário do cadastro de equipe. Na figura, está em edição o cadastro do Grêmio. Um

dos itens do formulário do cadastro de equipes é referente ao estádio, de preenchimento

opcional. Para o preenchimento deste campo, é necessário o cadastro do estádio em

outro formulário do sistema, que será visto no item seguinte deste capítulo.

6.2.4 Cadastro de Estádios

O último dos menus de cadastros do sistema é o de cadastro de estádios. O

cadastro de estádios só se faz necessário para os usuários que desejarem obter

informações do local de realização das partidas e, eventualmente, de alguns relatórios

estatísticos gerados pelo sistema. Para os usuários que não tiverem interesse neste tipo

de informação, não é necessário este cadastro, pois em momento algum o sistema

exigira do usuário esta informação.

Page 80: 5.1 Programa de Controle de Campeonatos de Futebol

80

Figura 6.5. Sistema: Cadastro de Estádios.

A figura 6.5 apresenta como foi desenvolvido no sistema a interface para

cadastro de estádios: ao lado esquerdo da figura estão listados os estádios cadastrados e

abaixo da lista os botões de manutenção de cadastro. No lado direito da figura, o

formulário de cadastro de estádio, que está em edição o registro do Estádio Orlando

Scarpelli.

6.3 A Administração de Temporada

O menu superior Temporada da interface do sistema apresenta as principais

funções de administração de temporada. Acessando este menu, o usuário poderá

selecionar as seguintes operações: Cadastrado da Estrutura da Temporada (Fases,

Grupos e Rodadas), Cadastro de Árbitros, Incluir uma equipe na disputa da temporada,

incluir os jogadores inscritos pelas equipes para disputa da competição e, finalmente,

registrar as punições do tribunal desportivo. Todas as operações realizadas neste menu

serão concretizadas na temporada atualmente aberta no sistema.

A administração da tabela de jogos é feita diretamente na tela principal do

sistema que será detalhadamente explicada na seqüência do trabalho.

Page 81: 5.1 Programa de Controle de Campeonatos de Futebol

81

6.3.1 Cadastro da Estrutura da Temporada

É nesta interface do sistema que são definidas as fases, os grupos e as rodadas

que compõem a temporada aberta.

Figura 6.6. Sistema: Cadastro da Estrutura da Temporada.

A figura 6.5 mostra que em apenas uma interface o usuário pode efetuar o

cadastro de fases, grupos e rodadas. O sistema apresenta uma espécie de hierarquia para

o cadastro da estrutura da temporada. Primeiro é necessário efetuar o cadastro das fases,

mostrado na parte esquerda da figura. Após o cadastro da fase, o usuário a seleciona, e

na parte central da figura, ele efetua o cadastro dos grupos que compõem a fase

selecionada. Por fim, no lado direito da figura, o usuário acrescenta as rodadas do grupo

selecionado.

6.3.2 Cadastro de Árbitro

Nesta área do sistema são efetuados os cadastros dos árbitros credenciados pelos

organizadores do campeonato para dirigirem as partidas. Os árbitros devem ser

cadastrados para cada temporada do sistema, e só é necessário para os usuários que

desejam registrar esta informação para os jogos do campeonato e observar os relatórios

Page 82: 5.1 Programa de Controle de Campeonatos de Futebol

82

estatísticos gerados pelo sistema referente às arbitragens. Para os usuários que não tem

interesse nesta informação, o cadastro de árbitro é dispensável.

Figura 6.7. Sistema: Cadastro de Árbitros.

A figura 6.7 mostra a interface para cadastro de árbitros. Em seu lado esquerdo,

a interface apresenta a lista dos árbitros cadastrados na temporada aberta e os botões

para manutenção de cadastro. No lado direito da interface está o formulário de cadastro.

6.3.3 Incluir Equipe na Disputa da Temporada

É uma função fundamental para o controle da temporada. Nesta rotina, o usuário

define quais equipes, que já foram previamente cadastradas no sistema, disputam a

temporada. Este procedimento é feito, geralmente, uma única vez, logo após o cadastro

da temporada. Seu funcionamento é muito simples. A figura 6.8 ilustra a interface.

Page 83: 5.1 Programa de Controle de Campeonatos de Futebol

83

Figura 6.8. Sistema: Equipes que disputam a Temporada.

Na figura 6.8, a interface apresenta duas listas: a primeira, do lado esquerdo da

imagem, é a lista de todas as equipes cadastradas no sistema e a segunda, do lado direito

da imagem, a lista das equipes que foram selecionadas para a disputada da temporada.

No centro, existem dois botões pelo qual o usuário efetua a inclusão ou exclusão da

equipe da disputa. Ainda existe um atalho para o cadastro de equipes para facilitar a

interação do usuário.

6.3.4 Cadastro de Jogador

Nesta área do sistema é efetuado o cadastro dos jogadores inscritos pelas equipes

para a disputa da temporada que estão participando. Essa operação também é opcional.

Somente é necessário para os usuários que desejam incluir a escalação das equipes nos

jogos que participam ou incluir os lances dó jogo. A partir destas duas informações

inseridas pelo usuário, o sistema possui a capacidade de gerar estatísticas sobre a

participação dos jogadores na competição.

Page 84: 5.1 Programa de Controle de Campeonatos de Futebol

84

Figura 6.9. Sistema: Cadastro de Jogadores.

A figura 6.9 apresenta a interface apresenta a interface do sistema para o

cadastro de jogadores. No lado esquerdo superior da imagem, o primeiro campo é a

seleção da equipe que participa da temporada. No exemplo, a equipe selecionada é o

Goiás. Após a seleção da equipe, o sistema apresenta abaixo a lista dos jogadores

cadastrados e os botões de manutenção do cadastro: incluir um novo jogador, alterar

dados de um jogador ou excluir um jogador. Já no lado esquerdo da figura é apresentado

o formulário que o usuário deve responder para o efetivo cadastro de um jogador.

6.3.5 Punições do Tr ibunal

Esta é uma rotina usada eventualmente pelo usuário, mas por influenciar

diretamente na tabela de classificações, é fundamental a sua existência. O objetivo é

registrar no sistema as decisões do tribunal desportivo da competição que retiram ou

atribuem pontos a determinadas equipes em virtude de comportamentos irregulares no

decorrer da competição.

Page 85: 5.1 Programa de Controle de Campeonatos de Futebol

85

Figura 6.10. Sistema: Punições do Tribunal.

Na figura 6.10 é apresentado como o sistema possibilita o registro destas

punições. Na parte superior são listadas as punições já inseridas no sistema, assim como

os botões de manutenção de punição. Ao incluir um novo registro, o usuário deve

responder ao formulário na parte inferior da imagem. Deve primeiro selecionar a fase e

o grupo que a punição irá refletir na classificação. Logo após, deve selecionar a equipe

que sofreu a punição, a data da decisão do tribunal, os pontos que ganhou ou perdeu e o

motivo.

6.4 Administração da Tabela de Jogos

É nesta atividade que o usuário gastará a maior parte do tempo para o controle

de campeonatos de futebol. Para administração da Tabela de Jogos, são necessários que

os procedimentos de cadastros já estejam efetuados, principalmente os cadastros de

campeonato, temporada, equipes e inclusão das equipes na disputa da temporada. Os

demais cadastros podem ser efetuados a medida que o controle da temporada for sendo

Page 86: 5.1 Programa de Controle de Campeonatos de Futebol

86

realizado. A figura 6.11 mostra a tabela de jogos do Campeonato Brasileiro – Série A

2005. Nesta figura, estão selecionados a fase e grupo único. Os jogos apresentados são

da 7ª rodada. Na área central, a lista dos jogos. Parte dos jogos listados já possui

resultado, ou seja, já foram realizados, enquanto a outra parte só foram agendados, mas

inda não foram realizados e seus resultados ainda não existem. Abaixo da lista de jogos

existem cinco botões de manutenção da tabela de jogos: incluir um novo jogo, alterar

dados de um jogo, excluir um jogo, definir escalação das equipes e definir lances da

partida. Cada uma destas operações é descrita na seqüência deste trabalho.

Figura 6.11. Sistema: Administração da Tabela de Jogos.

6.4.1 Manutenção de Jogos

A rotina de inclusão de jogos permite ao usuário inserir as mais diversas

informações a respeito do jogo. Ao mesmo tempo, para os usuários que estão

interessando em um controle do campeonato, porém, sem gastar muito tempo

preenchendo as informações e obtendo a classificação atualizada, o sistema também tem

uma boa solução, pois não obriga o preenchimento da grande parte das informações.

A rotina de alteração de jogos é semelhante a rotina de inclusão. Todos os dados

são do jogo são apresentados ao usuário que pode editar e salvar as alterações. Os

únicos dados que o sistema não permite alteração, são os dados da parte superior da

figura 6.12. Caso o usuário tenha intenção de modificar uma destas informações, ele

deverá excluir o jogo e cadastrar um novo confronto.

Page 87: 5.1 Programa de Controle de Campeonatos de Futebol

87

Já a rotina de exclusão de um jogo excluirá o confronto do sistema, assim como

suas informações relacionadas: escalação e eventos, que serão detalhadas ainda neste

capítulo.

Ao acessar a rotina de inclusão de um novo jogo, o sistema apresentará a

interface representada pela figura 6.12.

Figura 6.12. Sistema: Cadastro de um novo jogo.

A parte superior da figura 6.12 é onde o usuário informa o confronto: o time

anfitrião – que joga em seu estádio – e a equipe visitante. Quando o jogo já foi

realizado, o usuário ao efetuar o cadastro do confronto, já pode inserir o resultado da

partida. O sistema permite incluir o resultado do jogo no tempo normal e,

opcionalmente, prorrogação e pênaltis.

Na parte inferior da interface, o sistema possui quatro orelhas: geral, estatísticas,

comentários e fotos. Na orelha geral, a selecionada na figura 6.12, o único campo de

preenchimento obrigatório: a data e hora do jogo e mesmo assim, o sistema apresenta

automaticamente a data e hora do último jogo inserido para facilitar o serviço do

usuário. Opcionalmente o usuário pode informar o estádio onde o jogo foi realizado, o

árbitro do jogo, o público e a emissora de tv que transmitirá o jogo. A interface oferece

ao usuário atalhos para o cadastro de um novo estádio e árbitro.

Page 88: 5.1 Programa de Controle de Campeonatos de Futebol

88

Figura 6.13. Sistema: Cadastro de Jogo – Estatísticas.

A orelha seguinte, de estatísticas, é apresentada na figura 6.13. Nesta parte da

interface o usuário pode inserir os números do jogo. A inclusão destes números

possibilita ao sistema gerar relatórios a respeito destas informações.

Figura 6.14. Sistema: Cadastro de Jogo - Comentários.

A figura 6.14 mostra a terceira orelha da interface de cadastro de jogos. Nela o

usuário pode inserir uma notícia, um comentário ou até mesmo, a narração dos eventos

do jogo. O objetivo é de apenas registrar um relato do jogo.

Page 89: 5.1 Programa de Controle de Campeonatos de Futebol

89

Figura 6.15. Sistema: Cadastro de Jogo - Fotos.

Na figura 6.15, a última orelha é apresentada. Nesta parte da interface, o usuário

tem a possibilidade de gravar até duas fotos do jogo no banco de dados do sistema.

6.4.2 Definir Escalação de um Jogo

Após a inclusão de um jogo, o usuário pode definir a escalação das duas equipes.

O sistema possui uma interface específica para esta rotina. Além de servir como um

registro das equipes, a inclusão da escalação no sistema também possibilita ao sistema

gerar relatórios estatísticos dos jogadores.

Page 90: 5.1 Programa de Controle de Campeonatos de Futebol

90

Figura 6.16. Sistema: Escalação das Equipes.

A figura 5.16 demonstra a interface da atividade de definir escalação das

equipes. Existem duas orelhas, uma para cada equipe da partida e com o mesmo aspecto

visual. Para definir a escalação, o sistema apresenta a lista dos jogadores cadastrados no

lado esquerdo. A segunda lista é dos jogadores escalados para o jogo. Na parte inferior

da interface, o usuário pode registrar as substituições ocorridas na partida ou remover

uma das substituições. O sistema ainda tem um atalho para o cadastro de jogadores e no

lado direito, apresenta as informações detalhadas dos jogadores relacionados na partida.

Page 91: 5.1 Programa de Controle de Campeonatos de Futebol

91

6.4.3 Definir Lances da Par tida

Figura 6.17. Sistema: Lances da Partida.

A figura 5.17 demonstra a interface do sistema para inclusão dos lances da

partida. No lado esquerdo está o formulário para inclusão dos lances. O usuário

seleciona a equipe, o jogador que realizou o lance, o tipo do lance, o minuto que ocorreu

e solicita a inclusão do evento. O lado direito da interface apresenta a relação de todos

os eventos já inseridos do jogo.

A inclusão dos eventos do jogo possibilita ao sistema gerar informações como o

artilheiro da competição além de controle de cartões amarelos, porém está rotina é de

preenchimento opcional.

6.5 As Estatísticas

O menu de estatísticas, disponibiliza o usuário consultar as informações

referentes a temporada que está trabalhando. Abaixo são mostrados dois relatórios: A

tabela de classificação e a campanha da equipe. Todos os relatórios estatísticos são

gerados automaticamente pelo sistema, desde que o usuário insira as informações nas

rotinas de manutenção da tabela de jogos.

Page 92: 5.1 Programa de Controle de Campeonatos de Futebol

92

6.5.1 Tabela de Classificação

Figura 6.18. Sistema: Tabela de Classificação.

A figura 6.18 demonstra a tabela de classificação da temporada 2005 do

Campeonato Brasileiro. O sistema permite ao usuário interagir podendo escolher

visualizar a tabela de classificação ordenada por diferentes critérios, conforme é

possível observar na parte esquerda da imagem. Os botões na parte inferior da tabela

permitem ao usuário escolher se os pontos devem ser considerando apenas os jogos

realizados em sua casa ou como visitante.

As cores apresentadas na tabela são resultado dos parâmetros inseridos no

cadastro da temporada. Serem para visualizar quais os times estão classificados para

uma determinada competição e quais estão sendo rebaixados para uma divisão inferior.

Por último, obrigatoriamente o usuário deve selecionar, para parte do lado

direito da interface, qual a fase da competição e o grupo que deseja visualizar a tabela

de classificação.

Page 93: 5.1 Programa de Controle de Campeonatos de Futebol

93

6.5.2 Campanha por Equipe

Figura 6.19. Sistema: Campanha por Equipe.

A figura 6.19 apresenta a campanha da equipe Atlético-MG na temporada 2005

do Campeonato Brasileiro. O usuário pode selecionar nesta interface, a campanha de

qualquer uma das equipes que disputam a temporada, selecionado-a no campo

específico.

Na tabela campanha, o sistema apresenta o desempenho da equipe por meio de

diversos itens, fazendo a comparação com os jogos realizados em sua casa e como

visitante.

Na tabela de jogos são mostrados os compromissos da equipe e os resultados

obtidos. O usuário pode fazer filtros para que o sistema apresente somente os jogos

realizados em casa ou como visitante, ou ainda, apresentar somente os compromissos

em que obteve um determinado resultado.

Conclusão Com a apresentação final do sistema é possível concluir que todas as atividades

inerentes ao controle de campeonatos de futebol foram desenvolvidas. Conforme será

Page 94: 5.1 Programa de Controle de Campeonatos de Futebol

94

discutido mais detalhadamente no capítulo final deste trabalho, percebe-se que o sistema

necessita de um refinamento dos relatórios estatísticos e uma melhoria no visual das

interfaces para dar ao sistema um melhor entendimento das suas rotinas e torná-lo mais

atraente para o usuário final.

Page 95: 5.1 Programa de Controle de Campeonatos de Futebol

95

Capítulo 7

Conclusões e Trabalhos Futuros O presente trabalho apresentou os detalhes que envolvem a disputa de um

campeonato de futebol para servir de base para o desenvolvimento do software. A

conclusão deste trabalho destaca dois distintos conteúdos: o primeiro referente a

metodologia aplicada e o segundo, em relação ao programa propriamente dito.

A metodologia possui bastante conteúdo e auxilia muito na transição das etapas

do desenvolvimento e os resultados a serem obtidos em cada etapa. A fases de projeto e

análise foram importantes. Foi útil para delimitar com exatidão o problema a ser

resolvido. Os casos de uso a serem trabalhados e os requisitos do sistema. Já a fase de

análise diminui a complexidade do problema. O desenvolvimento foi feito em partes. Os

casos de uso são classificados de acordo com a relevância para o sistema. Primeiro são

atacados os casos de usos fundamentais e em seguida os de menores importância e

opcionais. Isso deu segurança ao desenvolvimento, pois os resultados vão aparecendo já

nos primeiros ciclos de desenvolvimento e, em momento algum, se cria dúvidas quanto

ao andamento do projeto.

Conforme descrito no projeto, a ferramenta de desenvolvimento utilizada foi o

Delphi versão 8. A ferramenta Delphi é amplamente conhecida e utilizada no mercado

de desenvolvimento de software, porém, está versão do produto ficou pouco tempo no

mercado, sendo logo substituída pela versão 2005. Isso gerou alguns problemas no

desenvolvimento. Poucos são as referencias na Internet sobre esta versão

especificamente, e o principalmente problema está no fato de não se encontrar

componentes para download compatíveis com está versão. Os componentes Delphi

disponíveis para download na Internet, em geral, enriquecem as possibilidades de

criação de um software e ao mesmo tempo pode reduzir o tempo de desenvolvimento. A

utilização de uma versão inferior, como a versão 5, de uso mais consagrado, ou

posterior, como a versão 2005, possivelmente, teria sido mais eficiente.

Já a escolha do banco de dados Interbase foi bastante interessante. Permite ao

sistema a utilização do conceito de transações, que garante consistência e aumenta a

segurança dos dados do sistema. O desempenho obtido também foi bom. As consultas

são feitas com velocidade. Para fins didáticos ele é mostrou-se muito apropriada. Porém

Page 96: 5.1 Programa de Controle de Campeonatos de Futebol

96

exige que o usuário final do sistema instale o banco de dados no seu computador. Esta

parece ser uma desvantagem em relação aos sistemas similares apresentados no capítulo

3 deste trabalho. Isso porque estes sistemas utilizam o banco de dados Access, que é

mais simples que o Interbase, porém, geralmente já instalado pré-instalado nos

computadores, ou até mesmo arquivos de dados. Para tornar o sistema de

Gerenciamento de Campeonatos um produto comercial, à de se imaginar a possibilidade

da conversão do sistema para o banco de dados Access ou trabalhar com arquivos,

mesmo que a performance do sistema e a segurança dos dados diminuam.

A continuação deste trabalho pode ser realizada, primeiramente, tornando o

produto mais comercial. Para isso, se faz necessário um aperfeiçoamento das interfaces

do usuário, deixando-as mais interessantes visualmente além de auto-explicativas,

permitindo ao usuário uma interação direta, sem maiores auxílios de manuais. Também

é necessário se refinar os relatórios estatísticos dos campeonatos gerando informações

relevantes, objetivo principal de todos os sistemas de informações. Um interessante

refinamento dos relatórios estatísticos é a geração de prognósticos das partidas baseado

no retrospecto. Outro é uma tabela de possibilidades de rebaixamento e classificação. O

sistema, no atual estado de implementação, possivelmente já armazena as informações

históricas para geração destes relatórios, restando apenas a definição de um método

estatístico e a implementação.

Para trabalhos futuros, também é interessante se imaginar uma integração as

informações do software e as páginas da Internet, como a criação de um grande portal

de futebol. Para Internet também é possível imaginar o compartilhamento das

informações, ou seja, ao invés de vários usuários inserirem as informações de um

campeonato, o que requer grande disponibilidade de tempo, um usuário apenas insere os

dados e compartilha com os demais que fazem a atualização destes dados.

Outra proposta interessante para futuros trabalhos é a generalização do domínio

do problema para o controle de campeonatos de diferentes esportes. Podemos imaginar

que para o controle de um campeonato de futebol de salão, que possui domínio do

problema semelhante ao do futebol, para adaptar este software, basta que criemos

alguns parâmetros e algumas linhas de código e estará pronto. Porém, se imaginarmos

campeonatos de Vôlei, Basquete pode não ser tão simples a adaptação. E provavelmente

o desenvolvedor se deparará com a seguinte dúvida: partir deste software para chegar a

uma solução para estes tipos de campeonatos ou construir um novo software do zero.

Nestes casos, o mais correto parece ser a construção de um framework genérico para

Page 97: 5.1 Programa de Controle de Campeonatos de Futebol

97

controle de campeonatos, a partir do sistema de controle de campeonatos de futebol.

Um framework um conjunto de classes reutilizáveis – e usualmente extensíveis – que

fornecem serviços para objetos persistentes. Uma característica importante dos

frameworks é que eles exigem poucas modificações no código existente e devem ser

fáceis de usar pelo programador. Assim, mesmo que seja necessário construir

aplicativos diferentes, o projeto não começa do zero. Na verdade já parte de uma

solução testada e aplicada que, sabidamente, funciona sem erros.

Page 98: 5.1 Programa de Controle de Campeonatos de Futebol

98

Bibliografias Referenciadas [LAR 00] Larman, Craig. Utilizando UML e Padrões – Uma Introdução à

Análise e ao Projeto Orientado a Objetos. Editora Bookman. 2000.

[HEU 01] Heusser, Carlos Alberto. Projeto de Banco de Dados – 4ª Edição.

Editora Sagra Luzzatto. 2001.

[CAN 03] Cantú, Marco. Dominando o Delphi 7: a Bíblia. Editora Person / Makron

Books. 2003

[OLI 00] Oliveira, Wilson José de. Banco de Dados InterBase com Delphi.

Visual Books. 2000.

[SIL 00] Silva, Ivan José de Mecenas Silva. Delphi 5 – Objetos e Herança. Book

Express. 2000.

[SOA 01] Soares, Walace. Crie um Site B2C com PHP 4 e MySQL . Editora

Érica. 2001.

Bibliografias Consultadas Silva, Ricardo Pereira e. Engenharia de Software – Apostila das disciplinas INE5322

e INE 5614. Editora Érica. Mar/03.

Varela, Marcelo. Trabalhando com arquivos .INI no Windows. Site iMasters.

17/Jun/02.

Disponível em: <http://www.imasters.com.br/artigo.php?cn=346&cc=49>

Site: Active Delphi.

Disponível em: < http://www.activedelphi.com.br/>

Site: Planeta Delphi.

Disponível em: < http://www.delphi.eti.br/>

Page 99: 5.1 Programa de Controle de Campeonatos de Futebol

99

Anexo 1

Banco de Dados: Modelo Lógico Entidade Relacionamento

OBS: Muitos atributos das tabelas foram omitidos nesta representação para que a visualização fosse melhor compreendida. A lista completa dos atributos pode ser visualizada no anexo seguinte.

Page 100: 5.1 Programa de Controle de Campeonatos de Futebol

100

Anexo 2

Banco de Dados: Implementação Física ============================================================================================ TABELA ARBI TRO ============================================================================================ CREATE TABLE " ARBI TRO" ( " CODARBI TRO" I NTEGER NOT NULL, " CODTEMPORADA" I NTEGER NOT NULL, " NOMEARBI TRO" VARCHAR( 150) , " DATANASCI MENTO" DATE, " FOTO" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, PRI MARY KEY ( " CODARBI TRO" ) ) ; ALTER TABLE " ARBI TRO" ADD FOREI GN KEY ( " CODTEMPORADA" ) REFERENCES " TEMPORADA" ( " CODTEMPORADA" ) ; ============================================================================================ TABELA CAMPEONATO ============================================================================================ CREATE TABLE " CAMPEONATO" ( " CODCAMPEONATO" I NTEGER NOT NULL, " NOME" VARCHAR( 150) NOT NULL, " TI PO" I NTEGER NOT NULL, " PAI S" VARCHAR( 30) , " ESCUDO" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, PRI MARY KEY ( " CODCAMPEONATO" ) ) ; ============================================================================================ TABELA CLASSI FI CAÇÃO ============================================================================================ CREATE TABLE " CLASSI FI CACAO" ( " CODCLASSI FI CACAO" I NTEGER NOT NULL, " CODESTRUTURATEMPORADA" I NTEGER NOT NULL, " DATAJOGO" DATE NOT NULL, " CODEQUI PE" I NTEGER NOT NULL, " PONTOS" I NTEGER def aul t 0, " VI TORI A" I NTEGER def aul t 0, " EMPATE" I NTEGER def aul t 0, " DERROTA" I NTEGER def aul t 0, " VI TORI APRORROGACAO" I NTEGER def aul t 0, " VI TORI APENALTI S" I NTEGER def aul t 0, " DERROTAPRORROGACAO" I NTEGER def aul t 0, " DERROTAPENALTI S" I NTEGER def aul t 0, " GOLSPRO" I NTEGER def aul t 0, " GOLSCONTRA" I NTEGER def aul t 0, " SALDOGOLS" COMPUTED BY ( Gol sPr o - Gol sCont r a) , " PUBLI CO" I NTEGER, " LOCAL" VARCHAR( 1) NOT NULL, " REALI ZADO" I NTEGER NOT NULL, " JOGOS" I NTEGER, " EMPATEPRORROGACAO" I NTEGER, PRI MARY KEY ( " CODCLASSI FI CACAO" ) ) ; ALTER TABLE " CLASSI FI CACAO" ADD FOREI GN KEY ( " CODESTRUTURATEMPORADA" ) REFERENCES " ESTRUTURATEMPORADA" ( " CODESTRUTURATEMPORADA" ) ; ALTER TABLE " CLASSI FI CACAO" ADD FOREI GN KEY ( " CODEQUI PE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ============================================================================================ TABELA EQUI PE ============================================================================================ CREATE TABLE " EQUI PE"

Page 101: 5.1 Programa de Controle de Campeonatos de Futebol

101

( " CODEQUI PE" I NTEGER NOT NULL, " NOMEEQUI PE" VARCHAR( 50) NOT NULL, " NOMECOMPLETOEQUI PE" VARCHAR( 200) , " DATAFUNDACAO" DATE, " CI DADE" VARCHAR( 30) , " PAI S" VARCHAR( 30) , " TI POEQUI PE" I NTEGER, " ESCUDO" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, " CODESTADI O" I NTEGER, PRI MARY KEY ( " CODEQUI PE" ) ) ; ============================================================================================ TABELA EQUI PECOMPETETEMPORADA ============================================================================================ CREATE TABLE " EQUI PECOMPETETEMPORADA" ( " CODEQUI PE" I NTEGER NOT NULL, " CODTEMPORADA" I NTEGER NOT NULL, PRI MARY KEY ( " CODEQUI PE" , " CODTEMPORADA" ) ) ; ALTER TABLE " EQUI PECOMPETETEMPORADA" ADD FOREI GN KEY ( " CODEQUI PE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ALTER TABLE " EQUI PECOMPETETEMPORADA" ADD FOREI GN KEY ( " CODTEMPORADA" ) REFERENCES " TEMPORADA" ( " CODTEMPORADA" ) ; ============================================================================================ TABELA ESCALACAOJOGO ============================================================================================ CREATE TABLE " ESCALACAOJOGO" ( " CODJOGO" I NTEGER NOT NULL, " CODEQUI PE" I NTEGER NOT NULL, " CODJOGADOR" I NTEGER NOT NULL, " CODJOGADORENTROU" I NTEGER, " STATUS" VARCHAR( 1) , " SAI U" VARCHAR( 1) , " TEMPOJOGADO" I NTEGER, " MI NUTOSUBSTI TUI CAO" I NTEGER, PRI MARY KEY ( " CODJOGO" , " CODEQUI PE" , " CODJOGADOR" ) ) ; ALTER TABLE " ESCALACAOJOGO" ADD FOREI GN KEY ( " CODJOGO" ) REFERENCES " JOGO" ( " CODJOGO" ) ; ALTER TABLE " ESCALACAOJOGO" ADD FOREI GN KEY ( " CODEQUI PE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ALTER TABLE " ESCALACAOJOGO" ADD FOREI GN KEY ( " CODJOGADOR" ) REFERENCES " JOGADOR" ( " CODJOGADOR" ) ; ALTER TABLE " ESCALACAOJOGO" ADD FOREI GN KEY ( " CODJOGADORENTROU" ) REFERENCES " JOGADOR" ( " CODJOGADOR" ) ; ============================================================================================ TABELA ESTADI O ============================================================================================ CREATE TABLE " ESTADI O" ( " CODESTADI O" I NTEGER NOT NULL, " NOMEESTADI O" VARCHAR( 50) NOT NULL, " NOMECOMPLETOESTADI O" VARCHAR( 200) , " CAPACI DADEESTADI O" I NTEGER, " CI DADEESTADI O" VARCHAR( 30) , " FOTO" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, " PAI S" VARCHAR( 30) , PRI MARY KEY ( " CODESTADI O" ) ) ; ============================================================================================ TABELA ESTRUTURATEMPORADA ============================================================================================ CREATE TABLE " ESTRUTURATEMPORADA" ( " CODESTRUTURATEMPORADA" I NTEGER NOT NULL, " CODTEMPORADA" I NTEGER NOT NULL, " NOMEESTRUTURATEMPORADA" VARCHAR( 30) NOT NULL,

Page 102: 5.1 Programa de Controle de Campeonatos de Futebol

102

" CODGRUPO" I NTEGER, " CODFASE" I NTEGER, PRI MARY KEY ( " CODESTRUTURATEMPORADA" ) ) ; ALTER TABLE " ESTRUTURATEMPORADA" ADD FOREI GN KEY ( " CODTEMPORADA" ) REFERENCES " TEMPORADA" ( " CODTEMPORADA" ) ; ============================================================================================ TABELA GERADOR ============================================================================================ CREATE TABLE " GERADOR" ( " OI D" I NTEGER NOT NULL, PRI MARY KEY ( " OI D" ) ) ; ============================================================================================ TABELA JOGADOR ============================================================================================ CREATE TABLE " JOGADOR" ( " CODJOGADOR" I NTEGER NOT NULL, " CODEQUI PE" I NTEGER NOT NULL, " CODTEMPORADA" I NTEGER NOT NULL, " APELI DOJOGADOR" VARCHAR( 150) NOT NULL, " NOMEJOGADOR" VARCHAR( 150) , " NUMEROCAMI SA" I NTEGER, " DATANASCI MENTO" DATE, " NACI ONALI DADE" VARCHAR( 30) , " POSI CAO" I NTEGER, " STATUS" VARCHAR( 1) def aul t ' A' , " EMAI L" VARCHAR( 100) , " FOTO" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, PRI MARY KEY ( " CODJOGADOR" ) ) ; ALTER TABLE " JOGADOR" ADD FOREI GN KEY ( " CODEQUI PE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ALTER TABLE " JOGADOR" ADD FOREI GN KEY ( " CODTEMPORADA" ) REFERENCES " TEMPORADA" ( " CODTEMPORADA" ) ; ============================================================================================ TABELA JOGO ============================================================================================ CREATE TABLE " JOGO" ( " CODJOGO" I NTEGER NOT NULL, " CODESTRUTURATEMPORADA" I NTEGER NOT NULL, " CODEQUI PECASA" I NTEGER NOT NULL, " CODEQUI PEFORA" I NTEGER NOT NULL, " TV" VARCHAR( 10) , " NOMEESTADI O" VARCHAR( 30) , " GOLSTI MECASA" I NTEGER, " GOLSTI MEFORA" I NTEGER, " GOLSTI MECASAPRI TEM" I NTEGER, " GOLSTI MEFORAPRI TEM" I NTEGER, " PRORROGACAO" I NTEGER def aul t 0, " PENALTI S" I NTEGER def aul t 0, " GOLSTI MECASAPRORROGACAO" I NTEGER, " GOLSTI MEFORAPRORROGACAO" I NTEGER, " GOLSTI MECASAPENALTI S" I NTEGER, " GOLSTI MEFORAPENALTI S" I NTEGER, " PUBLI CO" I NTEGER, " NOTI CI A" BLOB SUB_TYPE TEXT SEGMENT SI ZE 80, " REALI ZADO" I NTEGER NOT NULL, " ESTATCHUTECASA" I NTEGER def aul t 0, " ESTATCHUTEFORA" I NTEGER def aul t 0, " ESTATFALTACASA" I NTEGER def aul t 0, " ESTATFALTAFORA" I NTEGER def aul t 0, " ESTATESCANTEI OCASA" I NTEGER def aul t 0, " ESTATESCANTEI OFORA" I NTEGER def aul t 0, " ESTATI MPEDI MENTOCASA" I NTEGER def aul t 0, " ESTATI MPEDI MENTOFORA" I NTEGER def aul t 0, " DATAHORAJOGO" TI MESTAMP, " CODARBI TRO" I NTEGER, " CODESTADI O" I NTEGER,

Page 103: 5.1 Programa de Controle de Campeonatos de Futebol

103

" FOTO1" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, " FOTO2" BLOB SUB_TYPE - 1 SEGMENT SI ZE 80, " CODCLASSI FI CACAOTI MECASA" I NTEGER NOT NULL, " CODCLASSI FI CACAOTI MEFORA" I NTEGER NOT NULL, PRI MARY KEY ( " CODJOGO" ) ) ; ALTER TABLE " JOGO" ADD FOREI GN KEY ( " CODESTRUTURATEMPORADA" ) REFERENCES " ESTRUTURATEMPORADA" ( " CODESTRUTURATEMPORADA" ) ; ALTER TABLE " JOGO" ADD FOREI GN KEY ( " CODEQUI PECASA" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ALTER TABLE " JOGO" ADD FOREI GN KEY ( " CODEQUI PEFORA" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ============================================================================================ TABELA LANCEPARTI DA ============================================================================================ CREATE TABLE " LANCEPARTI DA" ( " CODLANCEPARTI DA" I NTEGER NOT NULL, " CODJOGO" I NTEGER NOT NULL, " CODJOGADOR" I NTEGER NOT NULL, " TI POLANCE" I NTEGER NOT NULL, " MI NUTO" I NTEGER, " CODEQUI PELANCE" I NTEGER NOT NULL, " CODEQUI PEJOGADOR" I NTEGER NOT NULL, PRI MARY KEY ( " CODLANCEPARTI DA" ) ) ; ALTER TABLE " LANCEPARTI DA" ADD FOREI GN KEY ( " CODEQUI PELANCE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ALTER TABLE " LANCEPARTI DA" ADD FOREI GN KEY ( " CODJOGO" ) REFERENCES " JOGO" ( " CODJOGO" ) ; ALTER TABLE " LANCEPARTI DA" ADD FOREI GN KEY ( " CODJOGADOR" ) REFERENCES " JOGADOR" ( " CODJOGADOR" ) ; ============================================================================================ TABELA NARRACAO ============================================================================================ CREATE TABLE " NARRACAO" ( " CODNARRACAO" I NTEGER NOT NULL, " CODJOGO" I NTEGER NOT NULL, " MI NUTO" I NTEGER, " NARRACAO" BLOB SUB_TYPE TEXT SEGMENT SI ZE 80, PRI MARY KEY ( " CODNARRACAO" ) ) ; ALTER TABLE " NARRACAO" ADD FOREI GN KEY ( " CODJOGO" ) REFERENCES " JOGO" ( " CODJOGO" ) ; ============================================================================================ TABELA PUNI CAO ============================================================================================ CREATE TABLE " PUNI CAO" ( " CODPUNI CAO" I NTEGER NOT NULL, " CODESTRUTURATEMPORADA" I NTEGER NOT NULL, " CODEQUI PE" I NTEGER NOT NULL, " PONTOS" I NTEGER NOT NULL, " MOTI VO" VARCHAR( 100) , " DATA" DATE, " CODCLASSI FI CACAO" I NTEGER NOT NULL, PRI MARY KEY ( " CODPUNI CAO" ) ) ; ALTER TABLE " PUNI CAO" ADD FOREI GN KEY ( " CODESTRUTURATEMPORADA" ) REFERENCES " ESTRUTURATEMPORADA" ( " CODESTRUTURATEMPORADA" ) ; ALTER TABLE " PUNI CAO" ADD FOREI GN KEY ( " CODEQUI PE" ) REFERENCES " EQUI PE" ( " CODEQUI PE" ) ; ============================================================================================ TABELA TEMPORADA ============================================================================================ CREATE TABLE " TEMPORADA" ( " CODTEMPORADA" I NTEGER NOT NULL, " CODCAMPEONATO" I NTEGER NOT NULL, " NOMETEMPORADA" VARCHAR( 150) NOT NULL, " PONTOSVI TORI A" I NTEGER def aul t 3, " PONTOSEMPATE" I NTEGER def aul t 1, " PONTOSVI TORI APRORROGACAO" I NTEGER def aul t 0,

Page 104: 5.1 Programa de Controle de Campeonatos de Futebol

104

" PONTOSVI TORI APENALTI S" I NTEGER def aul t 0, " PONTOSDERROTAPRORROGACAO" I NTEGER def aul t 0, " PONTOSDERROTAPENALTI S" I NTEGER def aul t 0, " DESCRI CAO" BLOB SUB_TYPE TEXT SEGMENT SI ZE 80, " NUMTI MEREBAI XADO" I NTEGER def aul t 0, " NUMTI MEPROMOVI DO" I NTEGER def aul t 0, " PONTOSEMPATEPRORROGACAO" I NTEGER, " SQLDESEMPATE" VARCHAR( 100) NOT NULL, " NUMTI MECOMPET1" I NTEGER NOT NULL, " NUMTI MECOMPET2" I NTEGER NOT NULL, " NUMTI MEPOREBAI XAMENTO" I NTEGER NOT NULL, PRI MARY KEY ( " CODTEMPORADA" ) ) ; ALTER TABLE " TEMPORADA" ADD FOREI GN KEY ( " CODCAMPEONATO" ) REFERENCES " CAMPEONATO" ( " CODCAMPEONATO" ) ; ============================================================================================

Page 105: 5.1 Programa de Controle de Campeonatos de Futebol

105

Anexo 3

Código Fonte do Sistema ============================================================================================ ARQUI VO: UTempor ada. pas ============================================================================================ uni t UTempor ada; i nt er f ace Uses UDMDados, SysUt i l s , Bor l and. Vcl . Cl asses, UEqui pe, UEst adi o, UAr bi t r o, UEst r ut ur aTempor ada, UDMCl asses, UCampeonat o, UPuni cao; t ype TTempor ada = c l ass pr i vat e pr ot ect ed BD: TDt Mdl Cl asses; conBD: TDt Mdl Dados; CodTempor ada: I nt eger ; Campeonat o: TCampeonat o; NomeTempor ada: St r i ng; Pont osVi t or i a: I nt eger ; Pont osEmpat e: I nt eger ; Pont osVi t or i aPr or r ogacao: I nt eger ; Pont osVi t or i aPenal t i s : I nt eger ; Pont osDer r ot aPr or r ogacao: I nt eger ; Pont osDer r ot aPenal t i s : I nt eger ; Pont osEmpat ePr or r ogacao: I nt eger ; Descr i cao: St r i ng; NumTi meRebai xado: I nt eger ; NumTi meCompet 1: I nt eger ; NumTi meCompet 2: I nt eger ; NumTi mePORebai xament o: I nt eger ; NumTi mePr omovi do: I nt eger ; SQLDesempat e: St r i ng; NumFases: I nt eger ; publ i c pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( Cod: I nt eger ) ; pr ocedur e NovaTempor ada( CodCamp, Pt sVi t TN, Pt sEmpTN, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb: I nt eger ; NomeTemp, Descr , Cr i t er i o: St r i ng) ; pr ocedur e Al t er ar Tempor ada( CodCamp, Pt sVi t TN, Pt sEmpTN, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb: I nt eger ; NomeTemp, Descr , Cr i t er i o: St r i ng) ; f unct i on Get CodTempor ada: I nt eger ; f unct i on Get Pont osVi t or i a: I nt eger ; f unct i on Get NumTi mePr omovi do: I nt eger ; f unct i on Get NumTi meCompet 1: I nt eger ; f unct i on Get NumTi meCompet 2: I nt eger ; f unct i on Get NumTi mePORebai xament o: I nt eger ; f unct i on Get NumTi meRebai xado: I nt eger ; f unct i on Get NomeTempor ada: St r i ng; f unct i on Get SQLDesempat e: St r i ng; f unct i on NovoJogo( CodEst Temp, CodTi meCasa, CodTi meFor a: I nt eger ; Dat aHor aJogo: TDat eTi me; CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a: I nt eger ; Not i c i a, TV: St r i ng; Fot o1, Fot o2: TMemor ySt r eam) : Bool ean;

Page 106: 5.1 Programa de Controle de Campeonatos de Futebol

106

f unct i on Al t er ar Jogo( CodJogo, CodEst Temp, CodTi meCasa, CodTi meFor a : I nt eger ; Dat aHor aJogo : TDat eTi me; CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a: I nt eger ; Not i c i a, TV: St r i ng; Fot o1, Fot o2: TMemor ySt r eam) : Bool ean; pr ocedur e Al t er aDat aRodada ( umCodRodada: I nt eger ; umaDat aHor aJogo: TDat eTi me; SeTodos: St r i ng) ; dest r uct or Dest r oy; Over r i de; pr ocedur e Al t er ar Ar bi t r o( codAr bi t r o: I nt eger ; umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; pr ocedur e I nc l ui r Ar bi t r o( umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; pr ocedur e I nc l ui r Fase( umNome: St r i ng) ; pr ocedur e Al t er ar Fase( umCodFase: I nt eger ; umNome: St r i ng) ; pr ocedur e I nc l ui r Gr upo( umNome: St r i ng; umCodFase: I nt eger ) ; pr ocedur e Al t er ar Gr upo( umCodGr upo: I nt eger ; umNome: St r i ng) ; pr ocedur e I nc l ui r Rodada( umNome: St r i ng; umCodFase, umCodGr upo: I nt eger ) ; f unct i on Excl ui r Est r ut ur aTempor ada( umCod: I nt eger ) : Bool ean; pr ocedur e I nc l ui r Equi peNaDi sput a( Equi pe: TEqui pe) ; f unct i on Excl ui r Equi peDaDi sput a( Equi pe: TEqui pe) : Bool ean; pr ocedur e I nc l ui r Puni cao ( CodEst Temp, CodEqui pe, Pt s: I nt eger ; Dat aPuni cao: TDat eTi me; Mot i vo: St r i ng) ; pr ocedur e Al t er ar Puni cao ( CodPuni cao, CodEst Temp, CodEqui pe, Pt s: I nt eger ; Dat aPuni cao: TDat eTi me; Mot i vo: St r i ng) ; pr ocedur e Excl ui r Puni cao ( CodPuni cao: I nt eger ) ; end; i mpl ement at i on pr ocedur e TTempor ada. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; f unct i on TTempor ada. Get CodTempor ada : I nt eger ; begi n Get CodTempor ada : = CodTempor ada; end; pr ocedur e TTempor ada. Mat er i al i zar ( Cod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM TEMPORADA WHERE CODTEMPORADA = ' + I nt ToSt r ( Cod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; codTempor ada : = Fi el dByName( ' CodTempor ada' ) . asI nt eger ; Campeonat o : = TCampeonat o. Cr eat e; Campeonat o. Set BD( ConBD) ; Campeonat o. Mat er i al i zar ( Fi el dByName( ' CodCampeonat o' ) . asI nt eger ) ; NomeTempor ada : = Fi el dByName( ' NomeTempor ada' ) . asSt r i ng; Pont osVi t or i a : = Fi el dByName( ' Pont osVi t or i a' ) . asI nt eger ; Pont osEmpat e : = Fi el dByName( ' Pont osEmpat e' ) . asI nt eger ; Pont osVi t or i aPr or r ogacao : = Fi el dByName( ' Pont osVi t or i aPr or r ogacao' ) . asI nt eger ; Pont osVi t or i aPenal t i s : = Fi el dByName( ' Pont osVi t or i aPenal t i s ' ) . asI nt eger ; Pont osDer r ot aPr or r ogacao : = Fi el dByName( ' Pont osDer r ot aPr or r ogacao' ) . asI nt eger ; Pont osDer r ot aPenal t i s : = Fi el dByName( ' Pont osDer r ot aPenal t i s ' ) . asI nt eger ; Pont osEmpat ePr or r ogacao : = Fi el dByName( ' Pont osEmpat ePr or r ogacao' ) . asI nt eger ; Descr i cao : = Fi el dByName( ' Descr i cao' ) . asSt r i ng; NumTi meRebai xado : = Fi el dByName( ' NumTi meRebai xado' ) . asI nt eger ; NumTi mePr omovi do : = Fi el dByName( ' NumTi mePr omovi do' ) . asI nt eger ; NumTi meCompet 1 : = Fi el dByName( ' NumTi meCompet 1' ) . asI nt eger ; NumTi meCompet 2 : = Fi el dByName( ' NumTi meCompet 2' ) . asI nt eger ; NumTi mePORebai xament o : = Fi el dByName( ' NumTi mePORebai xament o' ) . asI nt eger ; SQLDesempat e : = Fi el dByName( ' SQLDesempat e' ) . asSt r i ng; end; end; pr ocedur e TTempor ada. NovaTempor ada( CodCamp, Pt sVi t TN, Pt sEmpTN, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o,

Page 107: 5.1 Programa de Controle de Campeonatos de Futebol

107

Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb: I nt eger ; NomeTemp, Descr , Cr i t er i o: St r i ng) ; var SQL: St r i ng; begi n Campeonat o : = TCampeonat o. Cr eat e; Campeonat o. Set BD( ConBD) ; Campeonat o. Mat er i al i zar ( CodCamp) ; NomeTempor ada : = NomeTemp; Pont osVi t or i a : = Pt sVi t TN; Pont osEmpat e : = Pt sEmpTN; Pont osVi t or i aPr or r ogacao : = Pt sVi t Pr o; Pont osEmpat ePr or r ogacao : = Pt sEmpPr o; Pont osDer r ot aPr or r ogacao : = Pt sDer Pr o; Pont osVi t or i aPenal t i s : = Pt sVi t Pen; Pont osDer r ot aPenal t i s : = Pt sDer Pen; Descr i cao : = Descr ; NumTi meRebai xado : = NumReb; NumTi meCompet 1 : = NumComp1; NumTi meCompet 2 : = NumComp2; NumTi mePORebai xament o : = NumPOReb; NumTi mePr omovi do : = NumPr o; SQLDesempat e : = Cr i t er i o; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodTempor ada : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I nser t i nt o TEMPORADA ( CODTEMPORADA, CODCAMPEONATO, NOMETEMPORADA, PONTOSVI TORI A, PONTOSEMPATE, ' ; SQL : = SQL + ' PONTOSVI TORI APRORROGACAO, PONTOSEMPATEPRORROGACAO, PONTOSDERROTAPRORROGACAO, ' ; SQL : = SQL + ' PONTOSVI TORI APENALTI S, PONTOSDERROTAPENALTI S, NUMTI MEREBAI XADO, NUMTI MEPOREBAI XAMENTO, ' ; SQL : = SQL + ' NUMTI MEPROMOVI DO, NUMTI MECOMPET1, NUMTI MECOMPET2, SQLDESEMPATE, DESCRI CAO) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodTempor ada) + ' , ' ; SQL : = SQL + I nt ToSt r ( Campeonat o. Get CodCampeonat o) + ' , ' ; SQL : = SQL + ' ' ' ' + NomeTempor ada + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osVi t or i a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osEmpat e) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osVi t or i aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osEmpat ePr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osDer r ot aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osVi t or i aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont osDer r ot aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( NumTi meRebai xado) + ' , ' ; SQL : = SQL + I nt ToSt r ( NumTi mePORebai xament o) + ' , ' ; SQL : = SQL + I nt ToSt r ( NumTi mePr omovi do) + ' , ' ; SQL : = SQL + I nt ToSt r ( NumTi meCompet 1) + ' , ' ; SQL : = SQL + I nt ToSt r ( NumTi meCompet 2) + ' , ' ; SQL : = SQL + ' ' ' ' + SQLDesempat e + ' ' ' , : Desc) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Desc ' ) . asMemo : = Descr i cao; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TTempor ada. Al t er ar Tempor ada( CodCamp, Pt sVi t TN, Pt sEmpTN, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb: I nt eger ; NomeTemp, Descr , Cr i t er i o: St r i ng) ; var SQL: St r i ng; begi n Campeonat o : = TCampeonat o. Cr eat e; Campeonat o. Set BD( ConBD) ; Campeonat o. Mat er i al i zar ( CodCamp) ; NomeTempor ada : = NomeTemp; Pont osVi t or i a : = Pt sVi t TN; Pont osEmpat e : = Pt sEmpTN; Pont osVi t or i aPr or r ogacao : = Pt sVi t Pr o; Pont osEmpat ePr or r ogacao : = Pt sEmpPr o; Pont osDer r ot aPr or r ogacao : = Pt sDer Pr o;

Page 108: 5.1 Programa de Controle de Campeonatos de Futebol

108

Pont osVi t or i aPenal t i s : = Pt sVi t Pen; Pont osDer r ot aPenal t i s : = Pt sDer Pen; Descr i cao : = Descr ; NumTi meRebai xado : = NumReb; NumTi meCompet 1 : = NumComp1; NumTi meCompet 2 : = NumComp2; NumTi mePORebai xament o : = NumPOReb; NumTi mePr omovi do : = NumPr o; SQLDesempat e : = Cr i t er i o; SQL : = ' Updat e TEMPORADA set ' ; SQL : = SQL + ' CODCAMPEONATO=' + I nt ToSt r ( Campeonat o. Get CodCampeonat o) + ' , ' ; SQL : = SQL + ' NOMETEMPORADA=' ' ' + NomeTempor ada + ' ' ' , ' ; SQL : = SQL + ' PONTOSVI TORI A=' + I nt ToSt r ( Pont osVi t or i a) + ' , ' ; SQL : = SQL + ' PONTOSEMPATE=' + I nt ToSt r ( Pont osEmpat e) + ' , ' ; SQL : = SQL + ' PONTOSVI TORI APRORROGACAO=' + I nt ToSt r ( Pont osVi t or i aPr or r ogacao) + ' , ' ; SQL : = SQL + ' PONTOSEMPATEPRORROGACAO=' + I nt ToSt r ( Pont osEmpat ePr or r ogacao) + ' , ' ; SQL : = SQL + ' PONTOSDERROTAPRORROGACAO=' + I nt ToSt r ( Pont osDer r ot aPr or r ogacao) + ' , ' ; SQL : = SQL + ' PONTOSVI TORI APENALTI S=' + I nt ToSt r ( Pont osVi t or i aPenal t i s) + ' , ' ; SQL : = SQL + ' PONTOSDERROTAPENALTI S=' + I nt ToSt r ( Pont osDer r ot aPenal t i s) + ' , ' ; SQL : = SQL + ' NUMTI MEREBAI XADO=' + I nt ToSt r ( NumTi meRebai xado) + ' , ' ; SQL : = SQL + ' NUMTI MEPOREBAI XAMENTO=' + I nt ToSt r ( NumTi mePORebai xament o) + ' , ' ; SQL : = SQL + ' NUMTI MEPROMOVI DO=' + I nt ToSt r ( NumTi mePr omovi do) + ' , ' ; SQL : = SQL + ' NUMTI MECOMPET1=' + I nt ToSt r ( NumTi meCompet 1) + ' , ' ; SQL : = SQL + ' NUMTI MECOMPET2=' + I nt ToSt r ( NumTi meCompet 2) + ' , ' ; SQL : = SQL + ' SQLDESEMPATE=' ' ' + SQLDesempat e + ' ' ' , DESCRI CAO=: Desc ' ; SQL : = SQL + ' Wher e CodTempor ada=' + I nt ToSt r ( CodTempor ada) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Desc ' ) . asMemo : = Descr i cao; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TTempor ada. NovoJogo( CodEst Temp, CodTi meCasa, CodTi meFor a : I nt eger ; Dat aHor aJogo : TDat eTi me; CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a: I nt eger ; Not i c i a, TV: St r i ng; Fot o1, Fot o2: TMemor ySt r eam) : Bool ean; var Equi peCasa, Equi peFor a : TEqui pe; Ar bi t r o : TAr bi t r o; Est adi o : TEst adi o; Est r ut ur aTempor ada : TEst r ut ur aTempor ada; begi n Equi peCasa : = TEqui pe. Cr eat e; Equi peCasa. Set BD( ConBD) ; Equi peCasa. Mat er i al i zar ( CodTi meCasa) ; Equi peFor a : =TEqui pe. Cr eat e; Equi peFor a. Set BD( ConBD) ; Equi peFor a. Mat er i al i zar ( CodTi meFor a) ; Ar bi t r o : = TAr bi t r o. Cr eat e; Ar bi t r o. Set BD( ConBD) ; Ar bi t r o. Mat er i al i zar ( CodAr bi t r o) ; Est adi o : = TEst adi o. Cr eat e; Est adi o. Set BD( ConBD) ; Est adi o. Mat er i al i zar ( CodEst adi o) ; Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( CodEst Temp) ; Est r ut ur aTempor ada. NovoJogo ( Equi peCasa, Equi peFor a, Dat aHor aJogo, Ar bi t r o, Est adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a, Not i c i a, TV, Fot o1, Fot o2, Pont osVi t or i a, Pont osEmpat e, Pont osVi t or i aPr or r ogacao, Pont osEmpat ePr or r ogacao, Pont osDer r ot aPr or r ogacao, Pont osVi t or i aPenal t i s , Pont osDer r ot aPenal t i s) ; Equi peCasa. Dest r oy; Equi peFor a. Dest r oy; Ar bi t r o. Dest r oy;

Page 109: 5.1 Programa de Controle de Campeonatos de Futebol

109

Est adi o. Dest r oy; Fot o1. Fr ee; Fot o2. Fr ee; Est r ut ur aTempor ada. Dest r oy; end; f unct i on TTempor ada. Al t er ar Jogo( CodJogo, CodEst Temp, CodTi meCasa, CodTi meFor a : I nt eger ; Dat aHor aJogo : TDat eTi me; CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a: I nt eger ; Not i c i a, TV: St r i ng; Fot o1, Fot o2: TMemor ySt r eam) : Bool ean; var Equi peCasa, Equi peFor a : TEqui pe; Ar bi t r o : TAr bi t r o; Est adi o : TEst adi o; Est r ut ur aTempor ada : TEst r ut ur aTempor ada; begi n Equi peCasa : = TEqui pe. Cr eat e; Equi peCasa. Set BD( ConBD) ; Equi peCasa. Mat er i al i zar ( CodTi meCasa) ; Equi peFor a : =TEqui pe. Cr eat e; Equi peFor a. Set BD( ConBD) ; Equi peFor a. Mat er i al i zar ( CodTi meFor a) ; Ar bi t r o : = TAr bi t r o. Cr eat e; Ar bi t r o. Set BD( ConBD) ; Ar bi t r o. Mat er i al i zar ( CodAr bi t r o) ; Est adi o : = TEst adi o. Cr eat e; Est adi o. Set BD( ConBD) ; Est adi o. Mat er i al i zar ( CodEst adi o) ; Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( CodEst Temp) ; Est r ut ur aTempor ada. Al t er ar Jogo ( CodJogo, Equi peCasa, Equi peFor a, Dat aHor aJogo, Ar bi t r o, Est adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a, Not i c i a, TV, Fot o1, Fot o2, Pont osVi t or i a, Pont osEmpat e, Pont osVi t or i aPr or r ogacao, Pont osEmpat ePr or r ogacao, Pont osDer r ot aPr or r ogacao, Pont osVi t or i aPenal t i s , Pont osDer r ot aPenal t i s) ; Equi peCasa. Dest r oy; Equi peFor a. Dest r oy; Ar bi t r o. Dest r oy; Est adi o. Dest r oy; Fot o1. Fr ee; Fot o2. Fr ee; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. Al t er aDat aRodada ( umCodRodada: I nt eger ; umaDat aHor aJogo: TDat eTi me; SeTodos: St r i ng) ; var Est r ut ur aTempor ada : TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( umCodRodada) ; Est r ut ur aTempor ada. Al t er ar Dat aRodada ( umaDat aHor aJogo, SeTodos) ; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. I nc l ui r Ar bi t r o ( umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var Ar bi t r o: TAr bi t r o; begi n Ar bi t r o : = TAr bi t r o. Cr eat e; Ar bi t r o. Set BD( ConBD) ; Ar bi t r o. NovoAr bi t r o( CodTempor ada, umNome, umaDat a, Fot o) ; Ar bi t r o. Dest r oy; end;

Page 110: 5.1 Programa de Controle de Campeonatos de Futebol

110

pr ocedur e TTempor ada. Al t er ar Ar bi t r o ( codAr bi t r o: I nt eger ; umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var Ar bi t r o: TAr bi t r o; begi n Ar bi t r o : = TAr bi t r o. Cr eat e; Ar bi t r o. Set BD( ConBD) ; Ar bi t r o. Mat er i al i zar ( CodAr bi t r o) ; Ar bi t r o. Al t er ar Ar bi t r o( umNome, umaDat a, Fot o) ; Ar bi t r o. Dest r oy; end; dest r uct or TTempor ada. Dest r oy; begi n Campeonat o. Dest r oy; end; pr ocedur e TTempor ada. I nc l ui r Fase( umNome: St r i ng) ; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. NovaFase( CodTempor ada, umNome) ; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. Al t er ar Fase( umCodFase: I nt eger ; umNome: St r i ng) ; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( umCodFase) ; Est r ut ur aTempor ada. Al t er ar Fase( umNome) ; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. I nc l ui r Gr upo( umNome: St r i ng; umCodFase: I nt eger ) ; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. NovoGr upo( CodTempor ada, umCodFase, umNome) ; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. Al t er ar Gr upo( umCodGr upo: I nt eger ; umNome: St r i ng) ; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( umCodGr upo) ; Est r ut ur aTempor ada. Al t er ar Gr upo( umNome) ; Est r ut ur aTempor ada. Dest r oy; end; pr ocedur e TTempor ada. I nc l ui r Rodada( umNome: St r i ng; umCodFase, umCodGr upo: I nt eger ) ; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. NovaRodada( CodTempor ada, umCodFase, umCodGr upo, umNome) ; Est r ut ur aTempor ada. Dest r oy; end; f unct i on TTempor ada. Excl ui r Est r ut ur aTempor ada( umCod: I nt eger ) : Bool ean; var Est r ut ur aTempor ada: TEst r ut ur aTempor ada; begi n Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( umCod) ; Excl ui r Est r ut ur aTempor ada : = Est r ut ur aTempor ada. Excl ui r Est r ut ur aTempor ada; Est r ut ur aTempor ada. Dest r oy; end; f unct i on TTempor ada. Get NomeTempor ada : St r i ng; begi n Get NomeTempor ada : = Campeonat o. Get NomeCampeonat o + ' ' + NomeTempor ada; end;

Page 111: 5.1 Programa de Controle de Campeonatos de Futebol

111

pr ocedur e TTempor ada. I nc l ui r Equi peNaDi sput a( Equi pe: TEqui pe) ; var SQL: St r i ng; begi n SQL : = ' I nser t i nt o EQUI PECOMPETETEMPORADA ( CODEQUI PE, CODTEMPORADA) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodTempor ada) + ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TTempor ada. Excl ui r Equi peDaDi sput a( Equi pe: TEqui pe) : Bool ean; var SQL: St r i ng; begi n SQL : = ' Sel ect Count ( * ) f r om JOGO J, ESTRUTURATEMPORADA ET wher e ( J. CODEQUI PECASA=' ; SQL : = SQL + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' or J . CODEQUI PEFORA=' + I nt ToSt r ( Equi pe. Get CodEqui pe) ; SQL : = SQL + ' ) and ET. CODTEMPORADA=' + I nt ToSt r ( CodTempor ada) ; SQL : = SQL + ' and J. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA' ; BD. SQLDt St Dados. CommandText : = SQL; BD. Cl nt Dt St Dados. Cl ose; BD. Cl nt Dt St Dados. Open; i f BD. Cl nt Dt St Dados. Fi el dByName( ' COUNT' ) . AsI nt eger = 0 t hen begi n SQL : = ' Del et e f r om EQUI PECOMPETETEMPORADA wher e ' ; SQL : = SQL + ' CODEQUI PE=' + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' and ' ; SQL : = SQL + ' CODTEMPORADA=' + I nt ToSt r ( CodTempor ada) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; Excl ui r Equi peDaDi sput a : = Tr ue; end el se begi n Excl ui r Equi peDaDi sput a : = Fal se; end; end; pr ocedur e TTempor ada. I nc l ui r Puni cao ( CodEst Temp, CodEqui pe, Pt s: I nt eger ; Dat aPuni cao: TDat eTi me; Mot i vo: St r i ng) ; var Est Temp: TEst r ut ur aTempor ada; Equi pe: TEqui pe; Puni cao: TPuni cao; begi n Est Temp : = TEst r ut ur aTempor ada. Cr eat e; Est Temp. Set BD( ConBD) ; Est Temp. Mat er i al i zar ( CodEst Temp) ; Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( CodEqui pe) ; Puni cao : = TPuni cao. Cr eat e; Puni cao. Set BD( ConBD) ; Puni cao. NovaPuni cao( Est Temp, Equi pe, Dat aPuni cao, Pt s, Mot i vo) ; Puni cao. Dest r oy; Equi pe. Dest r oy; Est Temp. Dest r oy; end; pr ocedur e TTempor ada. Al t er ar Puni cao ( CodPuni cao, CodEst Temp, CodEqui pe, Pt s: I nt eger ; Dat aPuni cao: TDat eTi me; Mot i vo: St r i ng) ; var Est Temp: TEst r ut ur aTempor ada; Equi pe: TEqui pe; Puni cao: TPuni cao; begi n Est Temp : = TEst r ut ur aTempor ada. Cr eat e; Est Temp. Set BD( ConBD) ; Est Temp. Mat er i al i zar ( CodEst Temp) ; Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( CodEqui pe) ; Puni cao : = TPuni cao. Cr eat e; Puni cao. Set BD( ConBD) ; Puni cao. Mat er i al i zar ( CodPuni cao) ; Puni cao. Al t er ar Puni cao( Est Temp, Equi pe, Dat aPuni cao, Pt s, Mot i vo) ; Puni cao. Dest r oy; Equi pe. Dest r oy; Est Temp. Dest r oy; end; pr ocedur e TTempor ada. Excl ui r Puni cao ( CodPuni cao: I nt eger ) ; var Puni cao: TPuni cao; begi n

Page 112: 5.1 Programa de Controle de Campeonatos de Futebol

112

Puni cao : = TPuni cao. Cr eat e; Puni cao. Set BD( ConBD) ; Puni cao. Mat er i al i zar ( CodPuni cao) ; Puni cao. Excl ui r Puni cao; Puni cao. Dest r oy; end; f unct i on TTempor ada. Get NumTi mePr omovi do: I nt eger ; begi n Get NumTi mePr omovi do : = NumTi mePr omovi do; end; f unct i on TTempor ada. Get NumTi meCompet 1: I nt eger ; begi n Get NumTi meCompet 1 : = NumTi meCompet 1; end; f unct i on TTempor ada. Get NumTi meCompet 2: I nt eger ; begi n Get NumTi meCompet 2 : = NumTi meCompet 2; end; f unct i on TTempor ada. Get NumTi mePORebai xament o: I nt eger ; begi n Get NumTi mePORebai xament o : = NumTi mePORebai xament o; end; f unct i on TTempor ada. Get NumTi meRebai xado: I nt eger ; begi n Get NumTi meRebai xado : = NumTi meRebai xado; end; f unct i on TTempor ada. Get SQLDesempat e: St r i ng; var Text o: St r i ng; i : I nt eger ; begi n Text o : = ' ' ; f or i : =1 t o Lengt h( SQLDesempat e) do begi n i f SQLDesempat e[ i ] = ' 1' t hen begi n Text o : = Text o + ' 8 DESC' ; end el se begi n i f SQLDesempat e[ i ] = ' 2' t hen begi n Text o : = Text o + ' 3 DESC' ; end el se begi n i f SQLDesempat e[ i ] = ' 3' t hen begi n Text o : = Text o + ' 6 DESC' ; end el se begi n i f SQLDesempat e[ i ] = ' 4' t hen begi n Text o : = Text o + ' 6 DESC' ; / / Cor r i gi r : Gol s na casa do adver sar i o end; end; end; end; i f i <> 4 t hen begi n Text o : = Text o + ' , ' ; end; end; Get SQLDesempat e : = Text o; end; f unct i on TTempor ada. Get Pont osVi t or i a: I nt eger ; begi n Get Pont osVi t or i a : = Pont osVi t or i a; end; end. ============================================================================================ ARQUI VO: UPuni cao. pas ============================================================================================ uni t UPuni cao; i nt er f ace Uses

Page 113: 5.1 Programa de Controle de Campeonatos de Futebol

113

UDMDados, SysUt i l s , UMeuUt i l s , UDMCl asses, Bor l and. Vcl . Cl asses, UEst r ut ur aTempor ada, UEqui pe, UCl assi f i cacao; t ype TPuni cao = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodPuni cao: I nt eger ; Est r ut ur aTempor ada: TEst r ut ur aTempor ada; Equi pe: TEqui pe; Dat aPuni cao: TDat eTi me; Cl assi f i cacao: TCl assi f i cacao; Pont os: I nt eger ; Mot i vo: St r i ng; publ i c const r uct or Cr eat e; over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( Cod: I nt eger ) ; f unct i on Get CodPuni cao : I nt eger ; Dest r uct or Dest r oy; over r i de; pr ocedur e NovaPuni cao( Est Temp: TEst r ut ur aTempor ada; umaEqui pe: TEqui pe; umaDat a: TDat eTi me; osPont os: I nt eger ; umMot i vo: St r i ng) ; pr ocedur e Al t er ar Puni cao( Est Temp: TEst r ut ur aTempor ada; umaEqui pe: TEqui pe; umaDat a: TDat eTi me; osPont os: I nt eger ; umMot i vo: St r i ng) ; pr ocedur e Excl ui r Puni cao; end; i mpl ement at i on const r uct or TPuni cao. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TPuni cao. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TPuni cao. Mat er i al i zar ( Cod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM PUNI CAO WHERE CODPUNI CAO=' + I nt ToSt r ( Cod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodPuni cao : = Fi el dByName( ' CodPuni cao' ) . asI nt eger ; Est r ut ur aTempor ada : = TEst r ut ur aTempor ada. Cr eat e; Est r ut ur aTempor ada. Set BD( ConBD) ; Est r ut ur aTempor ada. Mat er i al i zar ( Fi el dByName( ' CodEst r ut ur aTempor ada' ) . asI nt eger ) ; Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( Fi el dByName( ' CodEqui pe' ) . asI nt eger ) ; Dat aPuni cao : = Fi el dByName( ' Dat a' ) . asDat eTi me; Cl assi f i cacao : = TCl assi f i cacao. Cr eat e; Cl assi f i cacao. Set BD( ConBD) ; Cl assi f i cacao. Mat er i al i zar ( Fi el dByName( ' CodCl assi f i cacao' ) . asI nt eger ) ; Pont os : = Fi el dByName( ' Pont os ' ) . asI nt eger ; Mot i vo : = Fi el dByName( ' Mot i vo' ) . asSt r i ng; end; end; pr ocedur e TPuni cao. NovaPuni cao( Est Temp: TEst r ut ur aTempor ada; umaEqui pe: TEqui pe; umaDat a: TDat eTi me; osPont os: I nt eger ; umMot i vo: St r i ng) ; var SQL: St r i ng; begi n Est r ut ur aTempor ada : = Est Temp; Equi pe : = umaEqui pe; Dat aPuni cao : = umaDat a; Pont os : = osPont os; Mot i vo : = umMot i vo; Dat aPuni cao : = umaDat a; Cl assi f i cacao : = TCl assi f i cacao. Cr eat e; Cl assi f i cacao. Set BD( ConBD) ;

Page 114: 5.1 Programa de Controle de Campeonatos de Futebol

114

Cl assi f i cacao. NovaCl assi f i cacaoPuni cao( Est r ut ur aTempor ada. Get CodEst r ut ur aTempor ada, Dat aPuni cao, Equi pe, Pont os) ; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodPuni cao : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I nser t i nt o PUNI CAO ( CODPUNI CAO, CODESTRUTURATEMPORADA, CODEQUI PE, CODCLASSI FI CACAO, PONTOS, MOTI VO, DATA) val ues ( ' ; SQL : = SQL + I nt ToSt r ( CodPuni cao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est r ut ur aTempor ada. Get CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Cl assi f i cacao. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont os) + ' , ' ; SQL : = SQL + ' ' ' ' + Mot i vo + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aPuni cao) + ' ' ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TPuni cao. Al t er ar Puni cao( Est Temp: TEst r ut ur aTempor ada; umaEqui pe: TEqui pe; umaDat a: TDat eTi me; osPont os: I nt eger ; umMot i vo: St r i ng) ; var SQL: St r i ng; begi n Est r ut ur aTempor ada : = Est Temp; Equi pe : = umaEqui pe; Dat aPuni cao : = umaDat a; Pont os : = osPont os; Mot i vo : = umMot i vo; Dat aPuni cao : = umaDat a; Cl assi f i cacao. Al t er ar Cl assi f i cacaoPuni cao( Est r ut ur aTempor ada. Get CodEst r ut ur aTempor ada, Dat aPuni cao, Equi pe, Pont os) ; SQL : = ' Updat e PUNI CAO set ' ; SQL : = SQL + ' CODESTRUTURATEMPORADA=' + I nt ToSt r ( Est r ut ur aTempor ada. Get CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' CODEQUI PE=' + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' CODCLASSI FI CACAO=' + I nt ToSt r ( Cl assi f i cacao. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + ' PONTOS=' + I nt ToSt r ( Pont os) + ' , ' ; SQL : = SQL + ' MOTI VO=' ' ' + Mot i vo + ' ' ' , ' ; SQL : = SQL + ' DATA=' ' ' + MeusUt i l s . Dat aPar aBD( Dat aPuni cao) + ' ' ' ' ; SQL : = SQL + ' wher e CODPUNI CAO=' + I nt ToSt r ( CodPuni cao) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TPuni cao. Excl ui r Puni cao; var SQL: St r i ng; begi n Cl assi f i cacao. Excl ui r Cl assi f i cacao; SQL : = ' Del et e f r om PUNI CAO wher e CODPUNI CAO=' + I nt ToSt r ( CodPuni cao) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TPuni cao. Get CodPuni cao : I nt eger ; begi n Get CodPuni cao : = CodPuni cao; end; dest r uct or TPuni cao. Dest r oy; begi n BD. Dest r oy; Cl assi f i cacao. Dest r oy; Equi pe. Dest r oy; Est r ut ur aTempor ada. Dest r oy; end; end. ============================================================================================

Page 115: 5.1 Programa de Controle de Campeonatos de Futebol

115

ARQUI VO: UMeuUt i l s . pas ============================================================================================ uni t UMeuUt i l s ; i nt er f ace Uses SysUt i l s , Bor l and. Vcl . Cont r ol s , Bor l and. Vcl . I ni Fi l es; t ype TMeusUt i l s = c l ass pr i vat e pr ot ect ed posi cao: I nt eger ; publ i c const r uct or Cr eat e; over l oad; f unct i on Ger aPosi cao: St r i ng; f unct i on Di aDaSemana ( aDat a : TDat e) : s t r i ng; f unct i on Dat aPar aBD ( aDat a : TDat eTi me) : St r i ng; f unct i on Dat aHor aPar aBD ( aDat a : TDat eTi me) : St r i ng; f unct i on Cal cAnos( Dat aOr i gem: TDat eTi me) : i nt eger ; pr ocedur e Gr avaI ni ( NomeAr q: St r i ng) ; end; i mpl ement at i on const r uct or TMeusUt i l s . Cr eat e; begi n i nher i t ed; Posi cao : = 0; end; f unct i on TMeusUt i l s . Ger aPosi cao: St r i ng; begi n Posi cao : = Posi cao + 1; Ger aPosi cao : = I nt ToSt r ( Posi cao) + ' º ' ; end; f unct i on TMeusUt i l s . Di aDaSemana ( aDat a : TDat e) : s t r i ng; var Di a: I nt eger ; begi n Di a : = DayOf Week ( i nt ( aDat a) ) ; case Di a of 1 : Di aDaSemana : = ' DOM' ; 2 : Di aDaSemana : = ' SEG' ; 3 : Di aDaSemana : = ' TER' ; 4 : Di aDaSemana : = ' QUA' ; 5 : Di aDaSemana : = ' QUI ' ; 6 : Di aDaSemana : = ' SEX' ; 7 : Di aDaSemana : = ' SAB' ; end; end; f unct i on TMeusUt i l s . Dat aPar aBD ( aDat a : TDat eTi me) : St r i ng; var Di a, Mes, Ano : St r i ng; begi n Dat eTi meToSt r i ng( Di a, ' dd' , aDat a) ; Dat eTi meToSt r i ng( Mes, ' mmm' , aDat a) ; Dat eTi meToSt r i ng( Ano, ' yyyy ' , aDat a) ; i f Mes = ' f ev ' t hen Mes : = ' FEB' ; i f Mes = ' abr ' t hen Mes : = ' APR' ; i f Mes = ' mai ' t hen Mes : = ' MAY' ; i f Mes = ' ago' t hen Mes : = ' AUG' ; i f Mes = ' set ' t hen Mes : = ' SEP' ; i f Mes = ' out ' t hen Mes : = ' OCT' ; i f Mes = ' dez ' t hen Mes : = ' DEC' ; Dat aPar aBD : = Di a + ' - ' + Mes + ' - ' + Ano; end; f unct i on TMeusUt i l s . Dat aHor aPar aBD ( aDat a : TDat eTi me) : St r i ng; var Di a, Mes, Ano, Hor a, Mi nut o : St r i ng;

Page 116: 5.1 Programa de Controle de Campeonatos de Futebol

116

begi n Dat eTi meToSt r i ng( Di a, ' dd' , aDat a) ; Dat eTi meToSt r i ng( Mes, ' mmm' , aDat a) ; Dat eTi meToSt r i ng( Ano, ' yyyy ' , aDat a) ; Dat eTi meToSt r i ng( Hor a, ' hh' , aDat a) ; Dat eTi meToSt r i ng( Mi nut o, ' nn' , aDat a) ; i f Mes = ' f ev ' t hen Mes : = ' FEB' ; i f Mes = ' abr ' t hen Mes : = ' APR' ; i f Mes = ' mai ' t hen Mes : = ' MAY' ; i f Mes = ' ago' t hen Mes : = ' AUG' ; i f Mes = ' set ' t hen Mes : = ' SEP' ; i f Mes = ' out ' t hen Mes : = ' OCT' ; i f Mes = ' dez ' t hen Mes : = ' DEC' ; Dat aHor aPar aBD : = Di a + ' - ' + Mes + ' - ' + Ano + ' ' + Hor a + ' : ' + Mi nut o + ' : 00' ; end; f unct i on TMeusUt i l s . Cal cAnos( Dat aOr i gem: TDat eTi me) : i nt eger ; var D1, M1, A1, D2, M2, A2: Wor d; begi n DecodeDat e( Dat aOr i gem, A1, M1, D1) ; DecodeDat e( Dat e, A2, M2, D2) ; Resul t : = A2 - A1; i f ( M1 > M2) or ( ( M1 = M2) and ( D1 > D2) ) t hen Dec( Resul t ) ; end; pr ocedur e TMeusUt i l s . Gr avaI ni ( NomeAr q: St r i ng) ; var Ar qI ni : TI ni Fi l e; begi n i f not Fi l eExi st s ( NomeAr q) t hen begi n Ar qI ni : = TI ni Fi l e. Cr eat e( NomeAr q) ; Tr y Ar qI ni . Wr i t eSt r i ng( ' CadJogo' , ' Dat a' , Dat eToSt r ( Dat e) ) ; Ar qI ni . Wr i t eSt r i ng( ' CadJogo' , ' Hor a' , Ti meToSt r ( Ti me) ) ; Ar qI ni . Wr i t eI nt eger ( ' Tempor ada' , ' At ual ' , 0) ; Fi nal l y Ar qI ni . Fr ee; end; end; end; end. ============================================================================================ ARQUI VO: ULanceJogo. pas ============================================================================================ uni t ULanceJogo; i nt er f ace Uses UDMDados, SysUt i l s , Bor l and. Vcl . Cl asses, Bor l and. Vcl . DBXpr ess, UMeuUt i l s , Bor l and. Vcl . Db, UDMCl asses, UJogador , UEqui pe; t ype TLanceJogo = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodLancePar t i da: I nt eger ; CodJogo: I nt eger ; Equi peLance: TEqui pe; Equi peJogador : TEqui pe; Jogador : TJogador ; Ti poLance: I nt eger ; / / 1: Gol ; 2: Gol Penal t i ; 3: Gol Cont r a; 4: Amar el o; 5- AmaVer ; 5: Ver mel ho. Mi nut o: I nt eger ; publ i c const r uct or Cr eat e; Over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( umCod: I nt eger ) ; dest r uct or Dest r oy; Over r i de;

Page 117: 5.1 Programa de Controle de Campeonatos de Futebol

117

f unct i on Get CodLancePar t i da : I nt eger ; pr ocedur e NovoLancePar t i da ( umCodJogo: I nt eger ; umaEqui peLance, umaEqui peJogador : TEqui pe; CodJogador , umTi poLance, oMi nut o: I nt eger ) ; pr ocedur e Excl ui r LancePar t i da; f unct i on Get Ti poLance : I nt eger ; f unct i on Get CodEqui peLance : I nt eger ; end; i mpl ement at i on const r uct or TLanceJogo. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TLanceJogo. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TLanceJogo. Mat er i al i zar ( umCod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM LANCEPARTI DA WHERE CODLANCEPARTI DA=' + I nt ToSt r ( umCod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodLancePar t i da : = Fi el dByName( ' CodLancePar t i da' ) . asI nt eger ; CodJogo : = Fi el dByName( ' CodJogo' ) . asI nt eger ; Equi peLance : = TEqui pe. Cr eat e; Equi peLance. Set BD( ConBD) ; Equi peLance. Mat er i al i zar ( Fi el dByName( ' CodEqui peLance' ) . asI nt eger ) ; Equi peJogador : = TEqui pe. Cr eat e; Equi peJogador . Set BD( ConBD) ; Equi peJogador . Mat er i al i zar ( Fi el dByName( ' CodEqui peJogador ' ) . asI nt eger ) ; Jogador : = Equi peJogador . Get Jogador ( Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; Ti poLance : = Fi el dByName( ' Ti poLance' ) . asI nt eger ; Mi nut o : = Fi el dByName( ' Mi nut o' ) . asI nt eger ; end; end; pr ocedur e TLanceJogo. NovoLancePar t i da ( umCodJogo: I nt eger ; umaEqui peLance, umaEqui peJogador : TEqui pe; CodJogador , umTi poLance, oMi nut o: I nt eger ) ; var SQL: St r i ng; begi n BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodLancePar t i da : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; CodJogo : = umCodJogo; Equi peLance : = umaEqui peLance; Equi peJogador : = umaEqui peJogador ; Jogador : = Equi peJogador . Get Jogador ( CodJogador ) ; Ti poLance : = umTi poLance; Mi nut o : = oMi nut o; SQL : = ' I nser t i nt o LANCEPARTI DA ( CODLANCEPARTI DA, CODJOGO, CODEQUI PELANCE, CODEQUI PEJOGADOR, CODJOGADOR, TI POLANCE, MI NUTO) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodLancePar t i da) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodJogo) + ' , ' ; SQL : = SQL + I nt ToSt r ( Equi peLance. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Equi peJogador . Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Jogador . Get CodJogador ) + ' , ' ; SQL : = SQL + I nt ToSt r ( Ti poLance) + ' , ' ; SQL : = SQL + I nt ToSt r ( Mi nut o) + ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end;

Page 118: 5.1 Programa de Controle de Campeonatos de Futebol

118

pr ocedur e TLanceJogo. Excl ui r LancePar t i da; var SQL: St r i ng; begi n BD. SQLDt St Dados. CommandText : = ' Del et e f r om LANCEPARTI DA wher e CODLANCEPARTI DA=' + I nt ToSt r ( CodLancePar t i da) ; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TLanceJogo. Get CodLancePar t i da : I nt eger ; begi n Get CodLancePar t i da : = CodLancePar t i da; end; dest r uct or TLanceJogo. Dest r oy; begi n BD. Dest r oy; MeusUt i l s . Fr ee; Equi peLance. Dest r oy; Equi peJogador . Dest r oy; Jogador . Dest r oy; end; f unct i on TLanceJogo. Get Ti poLance : I nt eger ; begi n Get Ti poLance : = Ti poLance; end; f unct i on TLanceJogo. Get CodEqui peLance : I nt eger ; begi n Get CodEqui peLance : = Equi peLance. Get CodEqui pe; end; end. ============================================================================================ ARQUI VO: UJogo. pas ============================================================================================ uni t UJogo; i nt er f ace Uses UDMDados, SysUt i l s , UEqui pe, UAr bi t r o, UEst adi o, Bor l and. Vcl . Cl asses, UCl assi f i cacao, Bor l and. Vcl . DBXpr ess, UMeuUt i l s , Bor l and. Vcl . Db, UDMCl asses, UI t emEscal acao, ULanceJogo, UJogador ; t ype TJogo = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodJogo: I nt eger ; CodEst r ut ur aTempor ada: I nt eger ; Equi peCasa: TEqui pe; Equi peFor a: TEqui pe; Dat aHor aJogo: TDat eTi me; Ar bi t r o: TAr bi t r o; TV: St r i ng; Est adi o: TEst adi o; NomeEst adi o: St r i ng; Gol sTi meCasa: I nt eger ; Gol sTi meFor a: I nt eger ; Gol sTi meCasaPr i Tem: I nt eger ; Gol sTi meFor aPr i Tem: I nt eger ; Real i zado: I nt eger ; Pr or r ogacao: I nt eger ; Penal t i s : I nt eger ; Gol sTi meCasaPr or r ogacao: I nt eger ; Gol sTi meFor aPr or r ogacao: I nt eger ; Gol sTi meCasaPenal t i s : I nt eger ; Gol sTi meFor aPenal t i s : I nt eger ; Publ i co: I nt eger ;

Page 119: 5.1 Programa de Controle de Campeonatos de Futebol

119

Not i c i a: St r i ng; Est at Chut eCasa: I nt eger ; Est at Chut eFor a: I nt eger ; Est at Fal t aCasa: I nt eger ; Est at Fal t aFor a: I nt eger ; Est at Escant ei oCasa: I nt eger ; Est at Escant ei oFor a: I nt eger ; Est at I mpedi ment oCasa: I nt eger ; Est at I mpedi ment oFor a: I nt eger ; / / Var i ávei s da Cl assi f i cacao Cl assi f i cacaoTi meCasa: TCl assi f i cacao; Cl assi f i cacaoTi meFor a: TCl assi f i cacao; / / Var i ávei s da Escal acao NumTi t TC, NumTi t TF, NumSubst TC, NumSubst TF: I nt eger ; Escal acaoTC : Ar r ay [ 1. . 14] of TI t emEscal acao; Escal acaoTF : Ar r ay [ 1. . 14] of TI t emEscal acao; / / Var i ávei s LanceJogo LancesJogo: Ar r ay [ 1. . 50] of TLanceJogo; NumLancesJogo: I nt eger ; NumLancesGol sTC, NumLancesGol sTF: I nt eger ; publ i c const r uct or Cr eat e; Over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( Cod: I nt eger ) ; f unct i on NovoJogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; var Fot o1, Fot o2: TMemor ySt r eam; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) : bool ean; f unct i on Al t er ar Jogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; var Fot o1, Fot o2: TMemor ySt r eam; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) : bool ean; f unct i on Excl ui r Jogo : Bool ean; f unct i on Possui Event os : Bool ean; pr ocedur e Cal cul ar Jogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; / / Mét odos de Escal acao pr ocedur e Mat er i al i zar Escal acao; pr ocedur e Escal ar Jogador ( umCodEqui pe, umCodJogador , TempoJogado: I nt eger ) ; pr ocedur e Remover Escal acaoJogador ( umCodEqui pe, umCodJogador : I nt eger ) ; pr ocedur e Pr omover Subst ( umCodEqui pe, CodJogador Sai u, TempoJogadoSai u, CodJogador Ent r ou, TempoJogadoEnt r ou, Mi nut oSubst : I nt eger ) ; pr ocedur e Remover Subst i t ui cao ( umCodEqui pe, CodJogador Sai u, CodJogador Ent r ou, TempoJogado: I nt eger ) ; / / Mét odos LancePar t i da

Page 120: 5.1 Programa de Controle de Campeonatos de Futebol

120

pr ocedur e I nc l ui r LancePar t i da ( umCodEqui peLance, umCodEqui peJogador , CodJogador , Ti poLance, Mi nut o: I nt eger ) ; pr ocedur e Excl ui r LancePar t i da ( umCodLance: I nt eger ) ; pr ocedur e Mat er i al i zar LancesJogo; f unct i on Get NumLancesGol sTC: I nt eger ; f unct i on Get Gol sTi meCasa: I nt eger ; f unct i on Get Gol sTi meFor a: I nt eger ; f unct i on Get NumLancesGol sTF: I nt eger ; f unct i on Get Gol sTi meCasaPr or r ogacao: I nt eger ; f unct i on Get Gol sTi meFor aPr or r ogacao: I nt eger ; dest r uct or Dest r oy; over r i de; end; i mpl ement at i on const r uct or TJogo. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TJogo. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) ; Cl assi f i cacaoTi meCasa : = TCl assi f i cacao. cr eat e; Cl assi f i cacaoTi meCasa. Set BD( ConBD) ; Cl assi f i cacaoTi meFor a : = TCl assi f i cacao. cr eat e; Cl assi f i cacaoTi meFor a. Set BD( ConBD) ; end; pr ocedur e TJogo. Mat er i al i zar ( Cod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM JOGO WHERE CODJOGO = ' + I nt ToSt r ( Cod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodJogo : = Fi el dByName( ' CodJogo' ) . asI nt eger ; CodEst r ut ur aTempor ada : = Fi el dByName( ' CodEst r ut ur aTempor ada' ) . asI nt eger ; Equi peCasa : = TEqui pe. Cr eat e; Equi peCasa. Set BD( ConBD) ; Equi peCasa. Mat er i al i zar ( Fi el dByName( ' CodEqui peCasa' ) . asI nt eger ) ; Equi peFor a : = TEqui pe. Cr eat e; Equi peFor a. Set BD( ConBD) ; Equi peFor a. Mat er i al i zar ( Fi el dByName( ' CodEqui peFor a' ) . asI nt eger ) ; Dat aHor aJogo : = Fi el dByName( ' Dat aHor aJogo' ) . asDat eTi me; Ar bi t r o : = TAr bi t r o. Cr eat e; Ar bi t r o. Set BD( ConBD) ; Ar bi t r o. Mat er i al i zar ( Fi el dByName( ' CodAr bi t r o' ) . asI nt eger ) ; TV : = Fi el dByName( ' TV' ) . asSt r i ng; Est adi o : = TEst adi o. Cr eat e; Est adi o. Set BD( ConBD) ; Est adi o. Mat er i al i zar ( Fi el dByName( ' CodEst adi o' ) . asI nt eger ) ; NomeEst adi o : = Fi el dByName( ' NomeEst adi o' ) . asSt r i ng; Gol sTi meCasa : = Fi el dByName( ' Gol sTi meCasa' ) . asI nt eger ; Gol sTi meFor a : = Fi el dByName( ' Gol sTi meFor a' ) . asI nt eger ; Gol sTi meCasaPr i Tem : = Fi el dByName( ' Gol sTi meCasaPr i Tem' ) . asI nt eger ; Gol sTi meFor aPr i Tem : = Fi el dByName( ' Gol sTi meFor aPr i Tem' ) . asI nt eger ; Real i zado : = Fi el dByName( ' Real i zado' ) . asI nt eger ; Pr or r ogacao : = Fi el dByname( ' Pr or r ogacao' ) . asI nt eger ; Penal t i s : = Fi el dByname( ' Penal t i s ' ) . asI nt eger ; Gol sTi meCasaPr or r ogacao : = Fi el dByname( ' Gol sTi meCasaPr or r ogacao' ) . asI nt eger ; Gol sTi meFor aPr or r ogacao : = Fi el dByname( ' Gol sTi meFor aPr or r ogacao' ) . asI nt eger ; Gol sTi meCasaPenal t i s : = Fi el dByname( ' Gol sTi meCasaPenal t i s ' ) . asI nt eger ; Gol sTi meFor aPenal t i s : = Fi el dByname( ' Gol sTi meFor aPenal t i s ' ) . asI nt eger ; Publ i co : = Fi el dByname( ' Publ i co' ) . asI nt eger ; Not i c i a : = Fi el dByname( ' Not i c i a' ) . asSt r i ng; Est at Chut eCasa : = Fi el dByname( ' Est at Chut eCasa' ) . asI nt eger ; Est at Chut eFor a : = Fi el dByname( ' Est at Chut eFor a' ) . asI nt eger ; Est at Fal t aCasa : = Fi el dByname( ' Est at Fal t aCasa' ) . asI nt eger ; Est at Fal t aFor a : = Fi el dByname( ' Est at Fal t aFor a' ) . asI nt eger ; Est at Escant ei oCasa : = Fi el dByname( ' Est at Escant ei oCasa' ) . asI nt eger ; Est at Escant ei oFor a : = Fi el dByname( ' Est at Escant ei oFor a' ) . asI nt eger ; Est at I mpedi ment oCasa : = Fi el dByname( ' Est at I mpedi ment oCasa' ) . asI nt eger ; Est at I mpedi ment oFor a : = Fi el dByname( ' Est at I mpedi ment oFor a' ) . asI nt eger ; Cl assi f i cacaoTi meCasa. Mat er i al i zar ( Fi el dByname( ' CodCl assi f i cacaoTi meCasa' ) . asI nt eger ) ; Cl assi f i cacaoTi meFor a. Mat er i al i zar ( Fi el dByname( ' CodCl assi f i cacaoTi meFor a' ) . asI nt eger ) ;

Page 121: 5.1 Programa de Controle de Campeonatos de Futebol

121

end; Sel f . Mat er i al i zar Escal acao; Sel f . Mat er i al i zar LancesJogo; end; pr ocedur e TJogo. Mat er i al i zar Escal acao; var SQL: St r i ng; umI t emEscal acao: TI t emEscal acao; begi n NumTi t TC : = 0; NumSubst TC : = 0; BD. SQLDt St Dados. CommandText : = ' SELECT * FROM ESCALACAOJOGO WHERE CODJOGO=' + I nt ToSt r ( CodJogo) + ' AND CODEQUI PE=' + I nt ToSt r ( Equi peCasa. Get CodEqui pe) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n umI t emEscal acao : = TI t emEscal acao. Cr eat e; umI t emEscal acao. Set BD( ConBD) ; umI t emEscal acao. Mat er i al i zar ( CodJogo, Fi el dByName( ' CodJogador ' ) . asI nt eger , Equi peCasa. Get CodEqui pe) ; i f Fi el dByName( ' St at us ' ) . asSt r i ng = ' T' t hen begi n NumTi t TC : = NumTi t TC + 1; end el se begi n NumSubst TC : = NumSubst TC + 1; end; Escal acaoTC[ NumTi t TC+NumSubst TC] : = umI t emEscal acao; Next ; end; end; NumTi t TF : = 0; NumSubst TF : = 0; BD. SQLDt St Dados. CommandText : = ' SELECT * FROM ESCALACAOJOGO WHERE CODJOGO=' + I nt ToSt r ( CodJogo) + ' AND CODEQUI PE=' + I nt ToSt r ( Equi peFor a. Get CodEqui pe) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n umI t emEscal acao : = TI t emEscal acao. Cr eat e; umI t emEscal acao. Set BD( ConBD) ; umI t emEscal acao. Mat er i al i zar ( CodJogo, Fi el dByName( ' CodJogador ' ) . asI nt eger , Equi peFor a. Get CodEqui pe) ; i f Fi el dByName( ' St at us ' ) . asSt r i ng = ' T' t hen begi n NumTi t TF : = NumTi t TF + 1; end el se begi n NumSubst TF : = NumSubst TF + 1; end; Escal acaoTF[ NumTi t TF+NumSubst TF] : = umI t emEscal acao; Next ; end; end; end; pr ocedur e TJogo. Mat er i al i zar LancesJogo; var SQL: St r i ng; umLanceJogo: TLanceJogo; begi n NumLancesJogo : = 0; NumLancesGol sTC : = 0; NumLancesGol sTF : = 0; SQL : = ' Sel ect COUNT( * ) f r om LANCEPARTI DA wher e ( ( CODEQUI PELANCE=' + I nt ToSt r ( Equi peCasa. Get CodEqui pe) + ' ) and ' ; SQL : = SQL + ' ( ( TI POLANCE=1) or ( TI POLANCE=2) or ( TI POLANCE=3) ) ) and CodJogo=' + I nt ToSt r ( CodJogo) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumLancesGol sTC : = Fi el dByName( ' COUNT' ) . asI nt eger ; end; SQL : = ' Sel ect COUNT( * ) f r om LANCEPARTI DA wher e ( ( CODEQUI PELANCE=' + I nt ToSt r ( Equi peFor a. Get CodEqui pe) + ' ) and ' ; SQL : = SQL + ' ( ( TI POLANCE=1) or ( TI POLANCE=2) or ( TI POLANCE=3) ) ) and CodJogo=' + I nt ToSt r ( CodJogo) ; ;

Page 122: 5.1 Programa de Controle de Campeonatos de Futebol

122

BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumLancesGol sTF : = Fi el dByName( ' COUNT' ) . asI nt eger ; end; SQL : = ' Sel ect * f r om LANCEPARTI DA wher e CODJOGO=' + I nt ToSt r ( CodJogo) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n umLanceJogo : = TLanceJogo. Cr eat e; umLanceJogo. Set BD( ConBD) ; umLanceJogo. Mat er i al i zar ( Fi el dByName( ' CodLancePar t i da' ) . asI nt eger ) ; NumLancesJogo : = NumLancesJogo + 1; LancesJogo[ NumLancesJogo] : = umLanceJogo; Next ; end; end; end; f unct i on TJogo. NovoJogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; var Fot o1, Fot o2: TMemor ySt r eam; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) : bool ean; var SQL: St r i ng; begi n Sel f . Cal cul ar Jogo ( codEst Temp, umTi meCasa, umTi meFor a, umaDat aHor aJogo, umAr bi t r o, umEst adi o, umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a, umaNot i c i a, umaTV, Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodJogo : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; Cl assi f i cacaoTi meCasa : = TCl assi f i cacao. cr eat e; Cl assi f i cacaoTi meCasa. Set BD( ConBD) ; Cl assi f i cacaoTi meFor a : = TCl assi f i cacao. cr eat e; Cl assi f i cacaoTi meFor a. Set BD( ConBD) ; Cl assi f i cacaoTi meCasa. NovaCl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, Equi peCasa, umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, ' C' , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; Cl assi f i cacaoTi meFor a. NovaCl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, Equi peFor a, umReal i zado, osGol sTi meFor a, osGol sTi meCasa, umPr or r ogacao, osGol sTi meFor aPr or r og,

Page 123: 5.1 Programa de Controle de Campeonatos de Futebol

123

osGol sTi meCasaPr or r og, umPenal t i s , osGol sTi meFor aPen, osGol sTi meCasaPen, umPubl i co, ' F' , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; SQL : = ' I NSERT I NTO JOGO ( CODJOGO, CODESTRUTURATEMPORADA, CODEQUI PECASA, CODEQUI PEFORA, DATAHORAJOGO, CODARBI TRO, ' ; SQL : = SQL + ' TV, NOMEESTADI O, CODESTADI O, GOLSTI MECASA, GOLSTI MEFORA, GOLSTI MECASAPRI TEM, GOLSTI MEFORAPRI TEM, ' ; SQL : = SQL + ' PRORROGACAO, PENALTI S, GOLSTI MECASAPRORROGACAO, GOLSTI MEFORAPRORROGACAO, GOLSTI MECASAPENALTI S, ' ; SQL : = SQL + ' GOLSTI MEFORAPENALTI S, PUBLI CO, NOTI CI A, REALI ZADO, ESTATCHUTECASA, ESTATCHUTEFORA, ESTATFALTACASA, ' ; SQL : = SQL + ' ESTATFALTAFORA, ESTATESCANTEI OCASA, ESTATESCANTEI OFORA, ESTATI MPEDI MENTOCASA, ESTATI MPEDI MENTOFORA, ' ; SQL : = SQL + ' CODCLASSI FI CACAOTI MECASA, CODCLASSI FI CACAOTI MEFORA, FOTO1, FOTO2) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodJogo) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + I nt ToSt r ( Equi peCasa. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Equi peFor a. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aHor aPar aBD ( Dat aHor aJogo) + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Ar bi t r o. Get CodAr bi t r o) + ' , ' ; SQL : = SQL + ' ' ' ' + TV + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + NomeEst adi o + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Est adi o. Get CodEst adi o) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meCasa) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meFor a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meCasaPr i Tem) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meFor aPr i Tem) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Penal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meCasaPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meFor aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meCasaPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sTi meFor aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Publ i co) + ' , ' ; SQL : = SQL + ' : Not i c i a, ' ; SQL : = SQL + I nt ToSt r ( Real i zado) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Chut eCasa) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Chut eFor a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Fal t aCasa) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Fal t aFor a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Escant ei oCasa) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at Escant ei oFor a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at I mpedi ment oCasa) + ' , ' ; SQL : = SQL + I nt ToSt r ( Est at I mpedi ment oFor a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Cl assi f i cacaoTi meCasa. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Cl assi f i cacaoTi meFor a. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + ' : Fot o1, : Fot o2) ; ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Not i c i a' ) . asMemo : = Not i c i a; BD. SQLDt St Dados. Par amByName( ' Fot o1' ) . LoadFr omSt r eam( Fot o1, f t Bl ob) ; BD. SQLDt St Dados. Par amByName( ' Fot o2' ) . LoadFr omSt r eam( Fot o2, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; Fot o1. Fr ee; Fot o2. Fr ee; end; f unct i on TJogo. Excl ui r Jogo : Bool ean; var i , k : I nt eger ; SQL: St r i ng; begi n Cl assi f i cacaoTi meCasa. Excl ui r Cl assi f i cacao; Cl assi f i cacaoTi meFor a. Excl ui r Cl assi f i cacao; f or i : = 1 t o NumLancesJogo do begi n LancesJogo[ i ] . Excl ui r LancePar t i da; end; k : = NumTi t TC + NumSubst TC; f or i : = 1 t o k do begi n Escal acaoTC[ i ] . Remover Escal acao; end; k : = NumTi t TF + NumSubst TF; f or i : = 1 t o k do begi n Escal acaoTF[ i ] . Remover Escal acao; end;

Page 124: 5.1 Programa de Controle de Campeonatos de Futebol

124

SQL : = ' Del et e f r om JOGO wher e CODJOGO=' + I nt ToSt r ( CodJogo) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TJogo. Possui Event os : Bool ean; begi n i f ( ( NumLancesJogo>0) or ( NumTi t TC>0) or ( NumTi t TF>0) ) t hen begi n Possui Event os : = Tr ue; end el se begi n Possui Event os : = Fal se; end; end; pr ocedur e TJogo. Cal cul ar Jogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; begi n CodEst r ut ur aTempor ada : = codEst Temp; Equi peCasa : = umTi meCasa; Equi peFor a : = umTi meFor a; Dat aHor aJogo : = umaDat aHor aJogo; Ar bi t r o : = umAr bi t r o; TV : = umaTV; Est adi o : = umEst adi o; NomeEst adi o : = ' ' ; Gol sTi meCasa : = osGol sTi meCasa; Gol sTi meFor a : = osGol sTi meFor a; Gol sTi meCasaPr i Tem : = 0; Gol sTi meFor aPr i Tem : = 0; Real i zado : = umReal i zado; Pr or r ogacao : = umPr or r ogacao; Penal t i s : = umPenal t i s ; Gol sTi meCasaPr or r ogacao : = osGol sTi meCasaPr or r og; Gol sTi meFor aPr or r ogacao : = osGol sTi meFor aPr or r og; Gol sTi meCasaPenal t i s : = osGol sTi meCasaPen; Gol sTi meFor aPenal t i s : = osGol sTi meFor aPen; Publ i co : = umPubl i co; Not i c i a : = umaNot i c i a; Est at Chut eCasa : = osChut esTi meCasa; Est at Chut eFor a : = osChut esTi meFor a; Est at Fal t aCasa : = osFal t asTi meCasa; Est at Fal t aFor a : = osFal t asTi meFor a; Est at Escant ei oCasa : = osEscant ei osTi meCasa; Est at Escant ei oFor a : = osEscant ei osTi meFor a; Est at I mpedi ment oCasa : = osI mpedTi meCasa; Est at I mpedi ment oFor a : = osI mpedTi meFor a; end; f unct i on TJogo. Al t er ar Jogo ( codEst Temp: I nt eger ; var umTi meCasa, umTi meFor a: TEqui pe; umaDat aHor aJogo: TDat eTi me; var umAr bi t r o: TAr bi t r o; var umEst adi o: TEst adi o; umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a: I nt eger ; umaNot i c i a, umaTV: St r i ng; var Fot o1, Fot o2: TMemor ySt r eam; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) : bool ean; var SQL: St r i ng; begi n

Page 125: 5.1 Programa de Controle de Campeonatos de Futebol

125

Sel f . Cal cul ar Jogo ( codEst Temp, umTi meCasa, umTi meFor a, umaDat aHor aJogo, umAr bi t r o, umEst adi o, umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, osChut esTi meCasa, osChut esTi meFor a, osI mpedTi meCasa, osI mpedTi meFor a, osFal t asTi meCasa, osFal t asTi meFor a, osEscant ei osTi meCasa, osEscant ei osTi meFor a, umaNot i c i a, umaTV, Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; Cl assi f i cacaoTi meCasa. Al t er ar Cl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, Equi peCasa, umReal i zado, osGol sTi meCasa, osGol sTi meFor a, umPr or r ogacao, osGol sTi meCasaPr or r og, osGol sTi meFor aPr or r og, umPenal t i s , osGol sTi meCasaPen, osGol sTi meFor aPen, umPubl i co, ' C' , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; Cl assi f i cacaoTi meFor a. Al t er ar Cl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, Equi peFor a, umReal i zado, osGol sTi meFor a, osGol sTi meCasa, umPr or r ogacao, osGol sTi meFor aPr or r og, osGol sTi meCasaPr or r og, umPenal t i s , osGol sTi meFor aPen, osGol sTi meCasaPen, umPubl i co, ' F' , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; SQL : = ' UPDATE JOGO SET ' ; SQL : = SQL + ' CodEst r ut ur aTempor ada = ' + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' CodEqui peCasa = ' + I nt ToSt r ( Equi peCasa. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' CodEqui peFor a = ' + I nt ToSt r ( Equi peFor a. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' Dat aHor aJogo = ' ' ' + MeusUt i l s . Dat aHor aPar aBD ( Dat aHor aJogo) + ' ' ' , ' ; SQL : = SQL + ' CodAr bi t r o = ' + I nt ToSt r ( Ar bi t r o. Get CodAr bi t r o) + ' , ' ; SQL : = SQL + ' TV = ' ' ' + TV + ' ' ' , ' ; SQL : = SQL + ' NomeEst adi o = ' ' ' + NomeEst adi o + ' ' ' , ' ; SQL : = SQL + ' CodEst adi o = ' + I nt ToSt r ( Est adi o. Get CodEst adi o) + ' , ' ; SQL : = SQL + ' Gol sTi meCasa = ' + I nt ToSt r ( Gol sTi meCasa) + ' , ' ; SQL : = SQL + ' Gol sTi meFor a = ' + I nt ToSt r ( Gol sTi meFor a) + ' , ' ; SQL : = SQL + ' Gol sTi meCasaPr i Tem = ' + I nt ToSt r ( Gol sTi meCasaPr i Tem) + ' , ' ; SQL : = SQL + ' Gol sTi meFor aPr i Tem = ' + I nt ToSt r ( Gol sTi meFor aPr i Tem) + ' , ' ; SQL : = SQL + ' Pr or r ogacao = ' + I nt ToSt r ( Pr or r ogacao) + ' , ' ; SQL : = SQL + ' Penal t i s = ' + I nt ToSt r ( Penal t i s) + ' , ' ; SQL : = SQL + ' Gol sTi meCasaPr or r ogacao = ' + I nt ToSt r ( Gol sTi meCasaPr or r ogacao) + ' , ' ; SQL : = SQL + ' Gol sTi meFor aPr or r ogacao = ' + I nt ToSt r ( Gol sTi meFor aPr or r ogacao) + ' , ' ; SQL : = SQL + ' Gol sTi meCasaPenal t i s = ' + I nt ToSt r ( Gol sTi meCasaPenal t i s) + ' , ' ; SQL : = SQL + ' Gol sTi meFor aPenal t i s = ' + I nt ToSt r ( Gol sTi meFor aPenal t i s) + ' , ' ; SQL : = SQL + ' Publ i co = ' + I nt ToSt r ( Publ i co) + ' , ' ; SQL : = SQL + ' Not i c i a = : Not i c i a, ' ; SQL : = SQL + ' Real i zado = ' + I nt ToSt r ( Real i zado) + ' , ' ; SQL : = SQL + ' Est at Chut eCasa = ' + I nt ToSt r ( Est at Chut eCasa) + ' , ' ; SQL : = SQL + ' Est at Chut eFor a = ' + I nt ToSt r ( Est at Chut eFor a) + ' , ' ; SQL : = SQL + ' Est at Fal t aCasa = ' + I nt ToSt r ( Est at Fal t aCasa) + ' , ' ; SQL : = SQL + ' Est at Fal t aFor a = ' + I nt ToSt r ( Est at Fal t aFor a) + ' , ' ; SQL : = SQL + ' Est at Escant ei oCasa = ' + I nt ToSt r ( Est at Escant ei oCasa) + ' , ' ; SQL : = SQL + ' Est at Escant ei oFor a = ' + I nt ToSt r ( Est at Escant ei oFor a) + ' , ' ; SQL : = SQL + ' Est at I mpedi ment oCasa = ' + I nt ToSt r ( Est at I mpedi ment oCasa) + ' , ' ; SQL : = SQL + ' Est at I mpedi ment oFor a = ' + I nt ToSt r ( Est at I mpedi ment oFor a) + ' , ' ; SQL : = SQL + ' CodCl assi f i cacaoTi meCasa = ' + I nt ToSt r ( Cl assi f i cacaoTi meCasa. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + ' CodCl assi f i cacaoTi meFor a = ' + I nt ToSt r ( Cl assi f i cacaoTi meFor a. Get CodCl assi f i cacao) + ' , ' ; SQL : = SQL + ' Fot o1 = : Fot o1, Fot o2 = : Fot o2 ' ; SQL : = SQL + ' WHERE CODJOGO = ' + I nt ToSt r ( CodJogo) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Not i c i a' ) . asMemo : = Not i c i a; BD. SQLDt St Dados. Par amByName( ' Fot o1' ) . LoadFr omSt r eam( Fot o1, f t Bl ob) ; BD. SQLDt St Dados. Par amByName( ' Fot o2' ) . LoadFr omSt r eam( Fot o2, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; Fot o1. Fr ee; Fot o2. Fr ee; end; pr ocedur e TJogo. Escal ar Jogador ( umCodEqui pe, umCodJogador , TempoJogado: I nt eger ) ; var

Page 126: 5.1 Programa de Controle de Campeonatos de Futebol

126

umI t emEscal acao: TI t emEscal acao; Jogador : TJogador ; begi n umI t emEscal acao : = TI t emEscal acao. Cr eat e; umI t emEscal acao. Set BD( ConBD) ; i f Equi peCasa. Get CodEqui pe = umCodEqui pe t hen begi n Jogador : = Equi peCasa. Get Jogador ( umCodJogador ) ; umI t emEscal acao. Escal acao( CodJogo, Equi peCasa. Get CodEqui pe, TempoJogado, Jogador , ' T' ) ; NumTi t TC : = NumTi t TC + 1; Escal acaoTC[ NumTi t TC+ NumSubst TC] : = umI t emEscal acao; end el se begi n Jogador : = Equi peFor a. Get Jogador ( umCodJogador ) ; umI t emEscal acao. Escal acao( CodJogo, Equi peFor a. Get CodEqui pe, TempoJogado, Jogador , ' T' ) ; NumTi t TF : = NumTi t TF + 1; Escal acaoTF[ NumTi t TF+ NumSubst TF] : = umI t emEscal acao; end; end; pr ocedur e TJogo. Remover Escal acaoJogador ( umCodEqui pe, umCodJogador : I nt eger ) ; var i , k : I nt eger ; Achou: bool ean; begi n Achou : = f al se; i : = 1; i f Equi peCasa. Get CodEqui pe = umCodEqui pe t hen begi n k : = NumTi t TC + NumSubst TC; whi l e ( i <= k) and not Achou do begi n i f Escal acaoTC[ i ] . Get CodJogador = umCodJogador t hen begi n Achou : = Tr ue; Escal acaoTC[ i ] . Remover Escal acao; Sel f . Mat er i al i zar Escal acao; end; i : = i + 1; end; end el se begi n k : = NumTi t TF + NumSubst TF; whi l e ( i <= k) and not Achou do begi n i f Escal acaoTF[ i ] . Get CodJogador = umCodJogador t hen begi n Achou : = Tr ue; Escal acaoTF[ i ] . Remover Escal acao; Sel f . Mat er i al i zar Escal acao; end; i : = i + 1; end; end; end; pr ocedur e TJogo. Pr omover Subst ( umCodEqui pe, CodJogador Sai u, TempoJogadoSai u, CodJogador Ent r ou, TempoJogadoEnt r ou, Mi nut oSubst : I nt eger ) ; var umI t emEscal acao: TI t emEscal acao; Jogador : TJogador ; i , k : I nt eger ; achou: bool ean; Jogador Ent r ou: TJogador ; begi n achou : = f al se; i : = 1; i f Equi peCasa. Get CodEqui pe = umCodEqui pe t hen begi n k : = NumTi t TC + NumSubst TC; whi l e ( i <= k) and not achou do begi n i f Escal acaoTC[ i ] . Get CodJogador = CodJogador Sai u t hen begi n achou : = t r ue; Jogador Ent r ou : = Equi peCasa. Get Jogador ( CodJogador Ent r ou) ; Escal acaoTC[ i ] . Subst i t ui cao ( TempoJogadoSai u, Mi nut oSubst , Jogador Ent r ou) ; umI t emEscal acao : = TI t emEscal acao. Cr eat e; umI t emEscal acao. Set BD( ConBD) ; umI t emEscal acao. Escal acao( CodJogo, Equi peCasa. Get CodEqui pe, TempoJogadoEnt r ou, Jogador Ent r ou, ' R' ) ; NumSubst TC : = NumSubst TC + 1; Escal acaoTC[ NumTi t TC+ NumSubst TC] : = umI t emEscal acao; end; i : = i + 1; end; end el se begi n k : = NumTi t TF + NumSubst TF;

Page 127: 5.1 Programa de Controle de Campeonatos de Futebol

127

whi l e ( i <= k) and not Achou do begi n i f Escal acaoTF[ i ] . Get CodJogador = CodJogador Sai u t hen begi n Achou : = Tr ue; Jogador Ent r ou : = Equi peFor a. Get Jogador ( CodJogador Ent r ou) ; Escal acaoTF[ i ] . Subst i t ui cao ( TempoJogadoSai u, Mi nut oSubst , Jogador Ent r ou) ; umI t emEscal acao : = TI t emEscal acao. Cr eat e; umI t emEscal acao. Set BD( ConBD) ; umI t emEscal acao. Escal acao( CodJogo, Equi peFor a. Get CodEqui pe, TempoJogadoEnt r ou, Jogador Ent r ou, ' R' ) ; NumSubst TF : = NumSubst TF + 1; Escal acaoTF[ NumTi t TF+ NumSubst TF] : = umI t emEscal acao; end; i : = i + 1; end; end; end; dest r uct or TJogo. Dest r oy; var i , t ot : I nt eger ; begi n BD. Dest r oy; Cl assi f i cacaoTi meCasa. Dest r oy; Cl assi f i cacaoTi meFor a. Dest r oy; MeusUt i l s . Fr ee; Equi peCasa. Dest r oy; Equi peFor a. Dest r oy; Est adi o. Dest r oy; Ar bi t r o. Dest r oy; f or i : = 1 t o NumLancesJogo do begi n LancesJogo[ i ] . Dest r oy; end; t ot : = NumTi t TC + NumSubst TC; f or i : =1 t o t ot do begi n Escal acaoTC[ i ] . Dest r oy; end; t ot : = NumTi t TF + NumSubst TF; f or i : =1 t o t ot do begi n Escal acaoTF[ i ] . Dest r oy; end; end; pr ocedur e TJogo. Remover Subst i t ui cao ( umCodEqui pe, CodJogador Sai u, CodJogador Ent r ou, TempoJogado: I nt eger ) ; var i , k : I nt eger ; AchouEnt r ou, AchouSai u: bool ean; begi n AchouEnt r ou : = Fal se; AchouSai u : = Fal se; i : = 1; i f Equi peCasa. Get CodEqui pe = umCodEqui pe t hen begi n k : = NumTi t TC + NumSubst TC; whi l e ( i <= k) and ( ( not achouEnt r ou) or ( not AchouSai u) ) do begi n i f Escal acaoTC[ i ] . Get CodJogador = CodJogador Sai u t hen begi n AchouSai u : = Tr ue; Escal acaoTC[ i ] . Desf azer Subst i t ui cao ( TempoJogado) ; end; i f Escal acaoTC[ i ] . Get CodJogador = CodJogador Ent r ou t hen begi n AchouEnt r ou : = Tr ue; Escal acaoTC[ i ] . Remover Escal acao; Sel f . Mat er i al i zar Escal acao; end; i : = i + 1; end end el se begi n k : = NumTi t TF + NumSubst TF; whi l e ( i <= k) and ( ( not AchouEnt r ou) or ( not AchouSai u) ) do begi n i f Escal acaoTF[ i ] . Get CodJogador = CodJogador Sai u t hen begi n AchouSai u : = Tr ue; Escal acaoTF[ i ] . Desf azer Subst i t ui cao ( TempoJogado) ; end; i f Escal acaoTF[ i ] . Get CodJogador = CodJogador Ent r ou t hen begi n AchouEnt r ou : = Tr ue; Escal acaoTF[ i ] . Remover Escal acao; Sel f . Mat er i al i zar Escal acao; end; i : = i + 1;

Page 128: 5.1 Programa de Controle de Campeonatos de Futebol

128

end end; end; pr ocedur e TJogo. I nc l ui r LancePar t i da ( umCodEqui peLance, umCodEqui peJogador , CodJogador , Ti poLance, Mi nut o: I nt eger ) ; var umLanceJogo: TLanceJogo; begi n umLanceJogo : = TLanceJogo. Cr eat e; umLanceJogo. Set BD( ConBD) ; i f umCodEqui peLance = Equi peCasa. Get CodEqui pe t hen begi n / / Se é Equi pe Casa i f ( ( Ti poLance=1) or ( Ti poLance=2) ) t hen begi n / / Se é Gol a Favor i f Gol sTi meCasa + Gol sTi meCasaPr or r ogacao > NumLancesGol sTC t hen begi n / / Se possui gol s umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peCasa, Equi peCasa, CodJogador , Ti poLance, Mi nut o) ; NumLancesGol sTC : = NumLancesGol sTC + 1; end; end el se begi n i f Ti poLance=3 t hen begi n / / se é gol cont r a i f Gol sTi meFor a + Gol sTi meFor aPr or r ogacao > NumLancesGol sTF t hen begi n / / Se possui gol s umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peFor a, Equi peCasa, CodJogador , Ti poLance, Mi nut o) ; NumLancesGol sTF : = NumLancesGol sTF + 1; end; end el se begi n / / Se é Car t ão umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peCasa, Equi peCasa, CodJogador , Ti poLance, Mi nut o) ; end; end; NumLancesJogo : = NumLancesJogo + 1; LancesJogo[ NumLancesJogo] : = umLanceJogo; end el se begi n i f ( ( Ti poLance=1) or ( Ti poLance=2) ) t hen begi n / / Se é Gol a Favor i f Gol sTi meFor a + Gol sTi meFor aPr or r ogacao > NumLancesGol sTF t hen begi n / / Se possui gol s umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peFor a, Equi peFor a, CodJogador , Ti poLance, Mi nut o) ; NumLancesGol sTF : = NumLancesGol sTF + 1; end; end el se begi n i f Ti poLance=3 t hen begi n / / se é gol cont r a i f Gol sTi meCasa + Gol sTi meCasaPr or r ogacao > NumLancesGol sTC t hen begi n / / Se possui gol s umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peCasa, Equi peFor a, CodJogador , Ti poLance, Mi nut o) ; NumLancesGol sTC : = NumLancesGol sTC + 1; end; end el se begi n / / Se é Car t ão umLanceJogo. NovoLancePar t i da ( CodJogo, Equi peFor a, Equi peFor a, CodJogador , Ti poLance, Mi nut o) ; end; end; NumLancesJogo : = NumLancesJogo + 1; LancesJogo[ NumLancesJogo] : = umLanceJogo; end; end; pr ocedur e TJogo. Excl ui r LancePar t i da ( umCodLance: I nt eger ) ; var i , y : I nt eger ; achou: Bool ean; begi n i : = 1; achou : = f al se; whi l e ( ( i <= NumLancesJogo) and ( achou = f al se) ) do begi n i f LancesJogo[ i ] . Get CodLancePar t i da = umCodLance t hen begi n i f ( ( LancesJogo[ i ] . Get Ti poLance=1) or ( LancesJogo[ i ] . Get Ti poLance=2) or ( LancesJogo[ i ] . Get Ti poLance=3) ) t hen begi n i f LancesJogo[ i ] . Get CodEqui peLance = Equi peCasa. Get CodEqui pe t hen begi n NumLancesGol sTC : = NumLancesGol sTC - 1; end el se begi n NumLancesGol sTF : = NumLancesGol sTF - 1; end; end; LancesJogo[ i ] . Excl ui r LancePar t i da;

Page 129: 5.1 Programa de Controle de Campeonatos de Futebol

129

achou : = t r ue; f or y : = i +1 t o NumLancesJogo do begi n LancesJogo[ y- 1] : = LancesJogo[ y] ; end; NumLancesJogo : = NumLancesJogo - 1; end; i : = i + 1; end; end; f unct i on TJogo. Get NumLancesGol sTC : I nt eger ; begi n Get NumLancesGol sTC : = NumLancesGol sTC; end; f unct i on TJogo. Get NumLancesGol sTF : I nt eger ; begi n Get NumLancesGol sTF : = NumLancesGol sTF; end; f unct i on TJogo. Get Gol sTi meCasa : I nt eger ; begi n Get Gol sTi meCasa : = Gol sTi meCasa; end; f unct i on TJogo. Get Gol sTi meFor a : I nt eger ; begi n Get Gol sTi meFor a : = Gol sTi meFor a; end; f unct i on TJogo. Get Gol sTi meCasaPr or r ogacao: I nt eger ; begi n Get Gol sTi meCasaPr or r ogacao : = Gol sTi meCasaPr or r ogacao; end; f unct i on TJogo. Get Gol sTi meFor aPr or r ogacao: I nt eger ; begi n Get Gol sTi meFor aPr or r ogacao : = Gol sTi meFor aPr or r ogacao; end; end. ============================================================================================ ARQUI VO: UJogador . pas ============================================================================================ uni t UJogador ; i nt er f ace Uses UDMDados, SysUt i l s , Bor l and. Vcl . Cl asses, Bor l and. Vcl . DBXpr ess, UMeuUt i l s , Bor l and. Vcl . Db, UDMCl asses; t ype TJogador = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodJogador : I nt eger ; CodTempor ada: I nt eger ; CodEqui pe: I nt eger ; Apel i doJogador : St r i ng; NomeJogador : St r i ng; Numer oCami sa: I nt eger ; Dat aNasci ment o: TDat eTi me; Naci onal i dade: St r i ng; Posi cao: I nt eger ; / / 1: Gol / 2: Lat / 3: Zag/ 4: MC/ 5: ATA St at us: St r i ng; / / ' A' : At i vo / ' V' : Vendi do EMai l : St r i ng; publ i c const r uct or Cr eat e; Over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( umCodJogador , umCodEqui pe: I nt eger ) ;

Page 130: 5.1 Programa de Controle de Campeonatos de Futebol

130

f unct i on Get CodJogador : I nt eger ; pr ocedur e NovoJogador ( umCodTemp, umCodEqui pe: I nt eger ; umApel i do, umNome, umaNaci onal i dade, umEMai l : St r i ng; umNumer o, umaPosi cao: I nt eger ; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; pr ocedur e Al t er ar Jogador ( umApel i do, umNome, umaNaci onal i dade, umEMai l : St r i ng; umNumer o, umaPosi cao: I nt eger ; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; f unct i on Excl ui r Jogador : Bool ean; f unct i on Possui At uacoes : Bool ean; dest r uct or Dest r oy; Over r i de; end; i mpl ement at i on const r uct or TJogador . Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TJogador . Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TJogador . Mat er i al i zar ( umCodJogador , umCodEqui pe: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM JOGADOR WHERE CODJOGADOR=' + I nt ToSt r ( umCodJogador ) + ' AND CODEQUI PE=' + I nt ToSt r ( umCodEqui pe) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodJogador : = Fi el dByName( ' CodJogador ' ) . asI nt eger ; CodTempor ada : = Fi el dByName( ' CodTempor ada' ) . asI nt eger ; CodEqui pe : = Fi el dByName( ' CodEqui pe' ) . asI nt eger ; Apel i doJogador : = Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; NomeJogador : = Fi el dByName( ' NomeJogador ' ) . asSt r i ng; Numer oCami sa : = Fi el dByName( ' Numer oCami sa' ) . asI nt eger ; Dat aNasci ment o : = Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me; Naci onal i dade : = Fi el dByName( ' Naci onal i dade' ) . asSt r i ng; Posi cao : = Fi el dByName( ' Posi cao' ) . asI nt eger ; St at us : = Fi el dByName( ' St at us ' ) . asSt r i ng; EMai l : = Fi el dByName( ' EMai l ' ) . asSt r i ng; end; end; pr ocedur e TJogador . NovoJogador ( umCodTemp, umCodEqui pe: I nt eger ; umApel i do, umNome, umaNaci onal i dade, umEMai l : St r i ng; umNumer o, umaPosi cao: I nt eger ; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var SQL: St r i ng; begi n CodTempor ada : = umCodTemp; CodEqui pe : = umCodEqui pe; Apel i doJogador : = umApel i do; NomeJogador : = umNome; Numer oCami sa : = umNumer o; Dat aNasci ment o : = umaDat a; Naci onal i dade : = umaNaci onal i dade; Posi cao : = umaPosi cao; EMai l : = umEMai l ; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodJogador : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I nser t i nt o JOGADOR ( CODJOGADOR, CODTEMPORADA, CODEQUI PE, APELI DOJOGADOR, ' ; SQL : = SQL + ' NOMEJOGADOR, NUMEROCAMI SA, DATANASCI MENTO, NACI ONALI DADE, POSI CAO, ' ; SQL : = SQL + ' STATUS, EMAI L, FOTO) val ues ( ' ;

Page 131: 5.1 Programa de Controle de Campeonatos de Futebol

131

SQL : = SQL + I nt ToSt r ( CodJogador ) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodTempor ada) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodEqui pe) + ' , ' ; SQL : = SQL + ' ' ' ' + Apel i doJogador + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + NomeJogador + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Numer oCami sa) + ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aNasci ment o) + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + Naci onal i dade + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Posi cao) + ' , ' ; SQL : = SQL + ' ' ' A' ' , ' ; SQL : = SQL + ' ' ' ' + EMai l + ' ' ' , ' ; SQL : = SQL + ' : Fot o) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Fot o' ) . LoadFr omSt r eam( Fot o, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TJogador . Al t er ar Jogador ( umApel i do, umNome, umaNaci onal i dade, umEMai l : St r i ng; umNumer o, umaPosi cao: I nt eger ; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var SQL: St r i ng; begi n Apel i doJogador : = umApel i do; NomeJogador : = umNome; Numer oCami sa : = umNumer o; Dat aNasci ment o : = umaDat a; Naci onal i dade : = umaNaci onal i dade; Posi cao : = umaPosi cao; EMai l : = umEMai l ; SQL : = ' Updat e JOGADOR set ' ; SQL : = SQL + ' APELI DOJOGADOR=' ' ' + Apel i doJogador + ' ' ' , ' ; SQL : = SQL + ' NOMEJOGADOR=' ' ' + NomeJogador + ' ' ' , ' ; SQL : = SQL + ' NUMEROCAMI SA=' + I nt ToSt r ( Numer oCami sa) + ' , ' ; SQL : = SQL + ' DATANASCI MENTO=' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aNasci ment o) + ' ' ' , ' ; SQL : = SQL + ' NACI ONALI DADE=' ' ' + Naci onal i dade + ' ' ' , ' ; SQL : = SQL + ' POSI CAO=' + I nt ToSt r ( Posi cao) + ' , ' ; SQL : = SQL + ' STATUS=' ' A' ' , ' ; SQL : = SQL + ' EMAI L=' ' ' + EMai l + ' ' ' , ' ; SQL : = SQL + ' FOTO=: Fot o wher e CODJOGADOR=' + I nt ToSt r ( CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Fot o' ) . LoadFr omSt r eam( Fot o, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TJogador . Excl ui r Jogador : Bool ean; var SQL: St r i ng; begi n i f Sel f . Possui At uacoes = Fal se t hen begi n SQL : = ' Del et e f r om JOGADOR wher e CODJOGADOR=' + I nt ToSt r ( CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; Excl ui r Jogador : = Tr ue; end el se begi n Excl ui r Jogador : = Fal se; end; end; f unct i on TJogador . Possui At uacoes : Bool ean; var SQL: St r i ng; NumAt uacoes: I nt eger ; begi n SQL : = ' Sel ect Count ( * ) f r om ESCALACAOJOGO wher e CODJOGADOR=' + I nt ToSt r ( CodJogador ) ; SQL : = SQL + ' or CODJOGADORENTROU=' + I nt ToSt r ( CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumAt uacoes : = Fi el dByName( ' COUNT' ) . asI nt eger ; end; i f NumAt uacoes > 0 t hen begi n Possui At uacoes : = Tr ue; end el se begi n SQL : = ' Sel ect Count ( * ) f r om LANCEPARTI DA wher e CODJOGADOR=' + I nt ToSt r ( CodJogador ) ;

Page 132: 5.1 Programa de Controle de Campeonatos de Futebol

132

BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumAt uacoes : = Fi el dByName( ' COUNT' ) . asI nt eger ; end; i f NumAt uacoes > 0 t hen begi n Possui At uacoes : = Tr ue; end el se begi n Possui At uacoes : = Fal se; end; end; end; f unct i on TJogador . Get CodJogador ; begi n Get CodJogador : = CodJogador ; end; dest r uct or TJogador . Dest r oy; begi n i nher i t ed; BD. Dest r oy; MeusUt i l s . Fr ee; end; end. ============================================================================================ ARQUI VO: UI t emEscal acao. pas ============================================================================================ uni t UI t emEscal acao; i nt er f ace Uses UDMDados, SysUt i l s , Bor l and. Vcl . Cl asses, Bor l and. Vcl . DBXpr ess, UMeuUt i l s , Bor l and. Vcl . Db, UDMCl asses, UJogador ; t ype TI t emEscal acao = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodJogo: I nt eger ; CodEqui pe: I nt eger ; Jogador : TJogador ; TempoJogado: I nt eger ; Mi nut oSubst i t ui cao: I nt eger ; Jogador Ent r ou: TJogador ; St at us: St r i ng; / / T: Ti t ul ar / / R: Reser va Sai u: St r i ng; / / S: Foi Subst i t ui do / / N: Não f oi subst i t ui do publ i c const r uct or Cr eat e; Over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( umCodJogo, umCodJogador , umCodEqui pe: I nt eger ) ; pr ocedur e Escal acao ( umCodJogo, umCodEqui pe, oTempoJogado: I nt eger ; var umJogador : TJogador ; umSt at us: St r i ng) ; pr ocedur e Subst i t ui cao ( oTempoJogado, oMi nut oSubst : I nt eger ; var umJogador Ent r ou: TJogador ) ; pr ocedur e Desf azer Subst i t ui cao ( oTempoJogado: I nt eger ) ; pr ocedur e Remover Escal acao; f unct i on Get CodJogador : I nt eger ; dest r uct or Dest r oy; Over r i de; end; i mpl ement at i on const r uct or TI t emEscal acao. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e;

Page 133: 5.1 Programa de Controle de Campeonatos de Futebol

133

end; pr ocedur e TI t emEscal acao. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TI t emEscal acao. Mat er i al i zar ( umCodJogo, umCodJogador , umCodEqui pe: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM ESCALACAOJOGO WHERE CODJOGO=' + I nt ToSt r ( umCodJogo) + ' AND CODJOGADOR=' + I nt ToSt r ( umCodJogador ) + ' AND CODEQUI PE=' + I nt ToSt r ( umCodEqui pe) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodJogo : = Fi el dByName( ' CodJogo' ) . asI nt eger ; CodEqui pe : = Fi el dByName( ' CodEqui pe' ) . asI nt eger ; Jogador : = TJogador . Cr eat e; Jogador . Set BD( ConBD) ; Jogador . Mat er i al i zar ( Fi el dByName( ' CodJogador ' ) . asI nt eger , Fi el dByName( ' CodEqui pe' ) . asI nt eger ) ; TempoJogado : = Fi el dByName( ' TempoJogado' ) . asI nt eger ; St at us : = Fi el dByName( ' St at us ' ) . asSt r i ng; Sai u : = Fi el dByName( ' Sai u' ) . asSt r i ng; i f Sai u = ' S' t hen begi n Jogador Ent r ou : = TJogador . Cr eat e; Jogador Ent r ou. Set BD( ConBD) ; Jogador Ent r ou. Mat er i al i zar ( Fi el dByName( ' CodJogador Ent r ou' ) . asI nt eger , Fi el dByName( ' CodEqui pe' ) . asI nt eger ) ; Mi nut oSubst i t ui cao : = Fi el dByName( ' Mi nut oSubst i t ui cao' ) . asI nt eger ; end; end; end; pr ocedur e TI t emEscal acao. Escal acao ( umCodJogo, umCodEqui pe, oTempoJogado: I nt eger ; var umJogador : TJogador ; umSt at us: St r i ng) ; var SQL: St r i ng; begi n CodJogo : = umCodJogo; CodEqui pe : = umCodEqui pe; Jogador : = umJogador ; TempoJogado : = oTempoJogado; St at us : = umSt at us; Sai u : = ' N' ; SQL : = ' I NSERT I NTO ESCALACAOJOGO ( CODJOGO, CODEQUI PE, CODJOGADOR, TEMPOJOGADO, STATUS, SAI U) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodJogo) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Jogador . Get CodJogador ) + ' , ' ; SQL : = SQL + I nt ToSt r ( TempoJogado) + ' , ' ; SQL : = SQL + ' ' ' ' + St at us + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + Sai u + ' ' ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TI t emEscal acao. Subst i t ui cao ( oTempoJogado, oMi nut oSubst : I nt eger ; var umJogador Ent r ou: TJogador ) ; var SQL: St r i ng; begi n Jogador Ent r ou : = umJogador Ent r ou; TempoJogado : = oTempoJogado; Mi nut oSubst i t ui cao : = oMi nut oSubst ; Sai u : = ' S' ; SQL : = ' UPDATE ESCALACAOJOGO SET ' ; SQL : = SQL + ' CODJOGADORENTROU=' + I nt ToSt r ( Jogador Ent r ou. Get CodJogador ) + ' , ' ; SQL : = SQL + ' SAI U=' ' ' + Sai u + ' ' ' , ' ; SQL : = SQL + ' TEMPOJOGADO=' + I nt ToSt r ( TempoJogado) + ' , ' ; SQL : = SQL + ' MI NUTOSUBSTI TUI CAO=' + I nt ToSt r ( Mi nut oSubst i t ui cao) + ' ' ; SQL : = SQL + ' WHERE CODJOGO=' + I nt ToSt r ( CodJogo) + ' AND CODJOGADOR=' + I nt ToSt r ( Jogador . Get CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end;

Page 134: 5.1 Programa de Controle de Campeonatos de Futebol

134

pr ocedur e TI t emEscal acao. Desf azer Subst i t ui cao ( oTempoJogado: I nt eger ) ; var SQL: St r i ng; begi n Jogador Ent r ou. Fr ee; TempoJogado : = oTempoJogado; Mi nut oSubst i t ui cao : = 0; St at us : = ' T' ; Sai u : = ' N' ; SQL : = ' UPDATE ESCALACAOJOGO SET ' ; SQL : = SQL + ' CODJOGADORENTROU=NULL, ' ; SQL : = SQL + ' STATUS=' ' ' + St at us + ' ' ' , ' ; SQL : = SQL + ' SAI U=' ' ' + Sai u + ' ' ' , ' ; SQL : = SQL + ' TEMPOJOGADO=' + I nt ToSt r ( TempoJogado) + ' , ' ; SQL : = SQL + ' MI NUTOSUBSTI TUI CAO=' + I nt ToSt r ( Mi nut oSubst i t ui cao) + ' ' ; SQL : = SQL + ' WHERE CODJOGO=' + I nt ToSt r ( CodJogo) + ' AND CODJOGADOR=' + I nt ToSt r ( Jogador . Get CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TI t emEscal acao. Remover Escal acao; var SQL: St r i ng; begi n SQL : = ' DELETE FROM ESCALACAOJOGO WHERE CODJOGO=' + I nt ToSt r ( CodJogo) + ' AND CODJOGADOR=' + I nt ToSt r ( Jogador . Get CodJogador ) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TI t emEscal acao. Get CodJogador : I nt eger ; begi n Get CodJogador : = Jogador . Get CodJogador ; end; dest r uct or TI t emEscal acao. Dest r oy; begi n i nher i t ed; BD. Dest r oy; Jogador . Dest r oy; MeusUt i l s . Fr ee; end; end. ============================================================================================ ARQUI VO: UI t emCombo. pas ============================================================================================ uni t UI t emCombo; i nt er f ace uses Bor l and. Vcl . Cl asses, Gr aphi cs, Wi ndows, Messages, SysUt i l s , Var i ant s, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . DBCt r l s , Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . Mask, Syst em. Component Model , DBXpr ess, FMTBcd, Bor l and. Vcl . But t ons; Type TI t emCombo = c l ass pr ot ect ed Nome: St r i ng; Oi d, Oi d2: I nt eger ; I magem: TSt r eam; publ i c f unct i on Get Oi d: I nt eger ; pr ocedur e Set Oi d( Val ue: I nt eger ) ; f unct i on Get Oi d2: I nt eger ; pr ocedur e Set Oi d2( Val ue: I nt eger ) ; f unct i on Get Nome: St r i ng; pr ocedur e Set Nome( Val ue: St r i ng) ;

Page 135: 5.1 Programa de Controle de Campeonatos de Futebol

135

dest r uct or Dest r oy; over r i de; end; i mpl ement at i on { TI t emCombo } f unct i on TI t emCombo. Get Nome: St r i ng; begi n Get Nome : = Nome; end; f unct i on TI t emCombo. Get Oi d: I nt eger ; begi n Get Oi d : = Oi d; end; f unct i on TI t emCombo. Get Oi d2: I nt eger ; begi n Get Oi d2 : = Oi d2; end; pr ocedur e TI t emCombo. Set Nome( Val ue: St r i ng) ; begi n Nome : = Val ue; end; pr ocedur e TI t emCombo. Set Oi d( Val ue: I nt eger ) ; begi n Oi d : = Val ue; end; pr ocedur e TI t emCombo. Set Oi d2( Val ue: I nt eger ) ; begi n Oi d2 : = Val ue; end; dest r uct or TI t emCombo. Dest r oy; begi n i nher i t ed; I magem. Fr ee; end; end. ============================================================================================ ARQUI VO: UI TabCl assi f i cacao. pas ============================================================================================ uni t UI TabCl assi f i cacao; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, FMTBcd, Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Syst em. Component Model , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . But t ons, Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . ComCt r l s , UTempor ada, UDMDados, UDMI TabCl assi f i cacao, UI t emCombo; t ype TFr mTabCl assi f i cacao = c l ass( TFor m) PageCont r ol 1: TPageCont r ol ; TabSheet 1: TTabSheet ; TabSheet 2: TTabSheet ; St r Gr dCl ass: TSt r i ngGr i d; Pnl Cl assi f i cacao: TPanel ; DBGr dGr upos: TDBGr i d; Panel 3: TPanel ; Panel 4: TPanel ; DBGr dFases: TDBGr i d; Bt nFechar : TBi t Bt n; DBGr dJogos: TDBGr i d;

Page 136: 5.1 Programa de Controle de Campeonatos de Futebol

136

Panel 1: TPanel ; CmbBxEqui pe: TComboBox; Panel 2: TPanel ; Panel 7: TPanel ; I mgTi me: TI mage; RdGr pOr dem: TRadi oGr oup; ChckBxTodosGr upos: TCheckBox; ChckBxTodasFases: TCheckBox; RdGr pResul t ado: TRadi oGr oup; Pnl JgsEqui pe: TPanel ; St r Gr dCampanha: TSt r i ngGr i d; Bt nTodos: TBut t on; Bt nCasa: TBut t on; Bt nFor a: TBut t on; But t on1: TBut t on; But t on2: TBut t on; But t on3: TBut t on; RdGr pTabel aJgs: TRadi oGr oup; TabSheet 3: TTabSheet ; St r Gr dEst at Temp: TSt r i ngGr i d; Panel 5: TPanel ; pr ocedur e For mCr eat e( Sender : TObj ect ) ; pr ocedur e St r Gr dCl assDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e For mCl ose( Sender : TObj ect ; var Act i on: TCl oseAct i on) ; pr ocedur e DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nTodosCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCasaCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nFor aCl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxTodosGr uposCl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxTodasFasesCl i ck( Sender : TObj ect ) ; pr ocedur e RdGr pOr demCl i ck( Sender : TObj ect ) ; pr ocedur e CmbBxEqui peChange( Sender : TObj ect ) ; pr ocedur e For mShow( Sender : TObj ect ) ; pr ocedur e St r Gr dCampanhaDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; pr i vat e { Pr i vat e decl ar at i ons } Tempor ada: TTempor ada; BD: TDt Mdl I TabCl assi f i cacao; Tot al Cl ass, Pr omovi do, Compet 1, Compet 2, PORebai xament o, Rebai xado : I nt eger ; SQLSel ect , SQLWher e, SQLGr oupBy, SQLOr der By: St r i ng; Ti poCl ass, Pnl TabJgs, Pnl ResJgs: St r i ng; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var conBD: TDt Mdl Dados) ; pr ocedur e Most r ar ( Temp: TTempor ada) ; pr ocedur e At ual i zar Fases; pr ocedur e At ual i zar Gr upos; pr ocedur e At ual i zar Cl assi f i cacao; pr ocedur e At ual i zar SQLCl assi f i cacao; pr ocedur e Car r egar ComboCampanha; pr ocedur e At ual i zar Campanha; pr ocedur e At ual i zar Est at Temp; end; var Fr mTabCl assi f i cacao: TFr mTabCl assi f i cacao; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mTabCl assi f i cacao. Set BD ( var conBD: TDt Mdl Dados) ; begi n BD : = TDt Mdl I TabCl assi f i cacao. Cr eat e( ni l ) ; BD. Set ConexaoBD( conBD) ; end; pr ocedur e TFr mTabCl assi f i cacao. Most r ar ( Temp: TTempor ada) ; begi n Tempor ada : = Temp; Ti poCl ass : = ' t odos ' ; Sel f . Car r egar ComboCampanha;

Page 137: 5.1 Programa de Controle de Campeonatos de Futebol

137

Sel f . At ual i zar Fases; Sel f . ShowModal ; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar Campanha; var i : I nt eger ; begi n SQLSel ect : = ' sel ect * f r om Equi pe EC, Equi pe EF, JOGO J, ESTRUTURATEMPORADA ET ' ; SQLWher e : = ' WHERE J. CodEqui peCasa=EC. CodEqui pe and J. CodEqui peFor a=EF. CodEqui pe ' ; SQLWher e : = SQLWher e + ' and J. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA ' ; i f ChckBxTodosGr upos. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' AND ET. CODGRUPO=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; end el se begi n i f ChckBxTodasFases. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' AND ET. CODFASE=' + BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; end el se begi n SQLWher e : = SQLWher e + ' AND ET. CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; end; end; i f Ti poCl ass = ' t odos ' t hen begi n case RdGr pResul t ado. I t emI ndex of 0: SQLWher e : = SQLWher e + ' AND ( J. CODEQUI PECASA=: CodEqui pe or J . CODEQUI PEFORA=: CodEqui pe) ' ; 1: SQLWher e : = SQLWher e + ' AND ( ( J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA>J. GOLSTI MEFORA) or ( J . CODEQUI PEFORA=: CodEqui pe AND J. GOLSTI MEFORA>J. GOLSTI MECASA) ) ' ; 2: SQLWher e : = SQLWher e + ' AND ( ( J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA=J. GOLSTI MEFORA) or ( J . CODEQUI PEFORA=: CodEqui pe AND J. GOLSTI MEFORA=J. GOLSTI MECASA) ) ' ; 3: SQLWher e : = SQLWher e + ' AND ( ( J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA<J. GOLSTI MEFORA) or ( J . CODEQUI PEFORA=: CodEqui pe AND J. GOLSTI MEFORA<J. GOLSTI MECASA) ) ' ; end; case RdGr pTabel aJgs. I t emI ndex of 1: SQLWher e : = SQLWher e + ' and J. REALI ZADO=1 ' ; 2: SQLWher e : = SQLWher e + ' and J. REALI ZADO=0 ' ; end; end el se begi n i f Ti poCl ass = ' casa' t hen begi n case RdGr pResul t ado. I t emI ndex of 0: SQLWher e : = SQLWher e + ' AND J. CODEQUI PECASA=: CodEqui pe ' ; 1: SQLWher e : = SQLWher e + ' AND J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA>J. GOLSTI MEFORA ' ; 2: SQLWher e : = SQLWher e + ' AND J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA=J. GOLSTI MEFORA AND J. REALI ZADO=1 ' ; 3: SQLWher e : = SQLWher e + ' AND J. CODEQUI PECASA=: CodEqui pe and J. GOLSTI MECASA<J. GOLSTI MEFORA ' ; end; end el se begi n case RdGr pResul t ado. I t emI ndex of 0: SQLWher e : = SQLWher e + ' AND J. CODEQUI PEFORA=: CodEqui pe ' ; 1: SQLWher e : = SQLWher e + ' AND J. CODEQUI PEFORA=: CodEqui pe and J. GOLSTI MEFORA>J. GOLSTI MECASA ' ; 2: SQLWher e : = SQLWher e + ' AND J. CODEQUI PEFORA=: CodEqui pe and J. GOLSTI MEFORA=J. GOLSTI MECASA AND J. REALI ZADO=1 ' ; 3: SQLWher e : = SQLWher e + ' AND J. CODEQUI PEFORA=: CodEqui pe and J. GOLSTI MEFORA<J. GOLSTI MECASA ' ; end; end; end; SQLOr der By : = ' or der by J. Dat aHor aJogo' ; BD. SQLDt St Jogos. CommandText : = SQLSel ect + SQLWher e + SQLOr der By; BD. SQLDt St Jogos. Par amByName( ' CodEqui pe' ) . AsI nt eger : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; BD. Cl nt Dt St Jogos. Cl ose; BD. Cl nt Dt St Jogos. Open; BD. Cl nt Dt St Jogos. Fi r s t ; / / STRGRI D CAMPANHA f or i : = 1 t o 3 do begi n SQLSel ect : = ' Sel ect SUM( C. PONTOS) PTS, SUM( C. JOGOS) JGS, SUM( C. VI TORI A) VI T, SUM( C. EMPATE) EMP, ' ; SQLSel ect : = SQLSel ect + ' SUM( C. DERROTA) DER, SUM( GOLSPRO) GP, SUM( GOLSCONTRA) GC, ' ;

Page 138: 5.1 Programa de Controle de Campeonatos de Futebol

138

SQLSel ect : = SQLSel ect + ' SUM( C. SALDOGOLS) SG, E. NOMEEQUI PE f r om CLASSI FI CACAO C, EQUI PE E, ' ; SQLSel ect : = SQLSel ect + ' ESTRUTURATEMPORADA ET ' ; SQLWher e : = ' wher e C. REALI ZADO=1 AND C. CODEQUI PE=: CODEQUI PE AND C. CODEQUI PE=E. CODEQUI PE AND ' ; SQLWher e : = SQLWher e + ' C. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA AND ' ; i f i =1 t hen SQLWher e : = SQLWher e + ' C. LOCAL=' ' C' ' AND ' ; i f i =2 t hen SQLWher e : = SQLWher e + ' C. LOCAL=' ' F' ' AND ' ; i f ChckBxTodosGr upos. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ( ET. CODGRUPO=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLWher e : = SQLWher e + ' or ET. CODESTRUTURATEMPORADA=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng + ' ) ' ; end el se begi n i f ChckBxTodasFases. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ET. CODFASE=' + BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; end el se begi n SQLWher e : = SQLWher e + ' ET. CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; end; end; SQLGr oupBy : = ' gr oup by E. NOMEEQUI PE ' ; BD. SQLDt St Dados. CommandText : = SQLSel ect + SQLWher e + SQLGr oupBy; BD. SQLDt St Dados. Par amByName( ' CodEqui pe' ) . AsI nt eger : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; BD. Cl nt Dt St Dados. Cl ose; BD. Cl nt Dt St Dados. Open; BD. Cl nt Dt St Dados. Fi r s t ; i f not BD. Cl nt Dt St Dados. EOF t hen begi n St r Gr dCampanha. Cel l s [ i , 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' PTS' ) . asSt r i ng; i f BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger > 0 t hen begi n St r Gr dCampanha. Cel l s [ i , 2] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' PTS' ) . asI nt eger / ( BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger * Tempor ada. Get Pont osVi t or i a) ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 6] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' VI T' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 7] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' EMP' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 8] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' DER' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 11] : = For mat Fl oat ( ' 0. 0' , BD. Cl nt Dt St Dados. Fi el dByName( ' GP' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) ; St r Gr dCampanha. Cel l s [ i , 12] : = For mat Fl oat ( ' 0. 0' , BD. Cl nt Dt St Dados. Fi el dByName( ' GC' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) ; end el se begi n St r Gr dCampanha. Cel l s [ i , 2] : = ' 0, 0%' ; St r Gr dCampanha. Cel l s [ i , 6] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 7] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 8] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 11] : = ' 0, 0' ; St r Gr dCampanha. Cel l s [ i , 12] : = ' 0, 0' ; end; St r Gr dCampanha. Cel l s [ i , 3] : = BD. Cl nt Dt St Dados. Fi el dByName( ' VI T' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 4] : = BD. Cl nt Dt St Dados. Fi el dByName( ' EMP' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 5] : = BD. Cl nt Dt St Dados. Fi el dByName( ' DER' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 9] : = BD. Cl nt Dt St Dados. Fi el dByName( ' GP' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 10] : = BD. Cl nt Dt St Dados. Fi el dByName( ' GC' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 13] : = BD. Cl nt Dt St Dados. Fi el dByName( ' SG' ) . asSt r i ng; end el se begi n St r Gr dCampanha. Cel l s [ i , 1] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 2] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 3] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 4] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 5] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 6] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 7] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 8] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 9] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 10] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 11] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 12] : = ' ' ;

Page 139: 5.1 Programa de Controle de Campeonatos de Futebol

139

St r Gr dCampanha. Cel l s [ i , 13] : = ' ' ; end; end; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar Est at Temp; var i : I nt eger ; begi n / / STRGRI D CAMPANHA f or i : = 1 t o 3 do begi n SQLSel ect : = ' Sel ect SUM( C. PONTOS) PTS, SUM( C. JOGOS) JGS, SUM( C. VI TORI A) VI T, SUM( C. EMPATE) EMP, ' ; SQLSel ect : = SQLSel ect + ' SUM( C. DERROTA) DER, SUM( GOLSPRO) GP, SUM( GOLSCONTRA) GC, ' ; SQLSel ect : = SQLSel ect + ' SUM( C. SALDOGOLS) SG, E. NOMEEQUI PE f r om CLASSI FI CACAO C, EQUI PE E, ' ; SQLSel ect : = SQLSel ect + ' ESTRUTURATEMPORADA ET ' ; SQLWher e : = ' wher e C. REALI ZADO=1 AND C. CODEQUI PE=: CODEQUI PE AND C. CODEQUI PE=E. CODEQUI PE AND ' ; SQLWher e : = SQLWher e + ' C. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA AND ' ; i f i =1 t hen SQLWher e : = SQLWher e + ' C. LOCAL=' ' C' ' AND ' ; i f i =2 t hen SQLWher e : = SQLWher e + ' C. LOCAL=' ' F' ' AND ' ; i f ChckBxTodosGr upos. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ( ET. CODGRUPO=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLWher e : = SQLWher e + ' or ET. CODESTRUTURATEMPORADA=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng + ' ) ' ; end el se begi n i f ChckBxTodasFases. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ET. CODFASE=' + BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; end el se begi n SQLWher e : = SQLWher e + ' ET. CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; end; end; SQLGr oupBy : = ' gr oup by E. NOMEEQUI PE ' ; BD. SQLDt St Dados. CommandText : = SQLSel ect + SQLWher e + SQLGr oupBy; BD. SQLDt St Dados. Par amByName( ' CodEqui pe' ) . AsI nt eger : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; BD. Cl nt Dt St Dados. Cl ose; BD. Cl nt Dt St Dados. Open; BD. Cl nt Dt St Dados. Fi r s t ; i f not BD. Cl nt Dt St Dados. EOF t hen begi n St r Gr dCampanha. Cel l s [ i , 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' PTS' ) . asSt r i ng; i f BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger > 0 t hen begi n St r Gr dCampanha. Cel l s [ i , 2] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' PTS' ) . asI nt eger / ( BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger * Tempor ada. Get Pont osVi t or i a) ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 6] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' VI T' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 7] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' EMP' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 8] : = For mat Fl oat ( ' 0. 0' , 100 * BD. Cl nt Dt St Dados. Fi el dByName( ' DER' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) + ' %' ; St r Gr dCampanha. Cel l s [ i , 11] : = For mat Fl oat ( ' 0. 0' , BD. Cl nt Dt St Dados. Fi el dByName( ' GP' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) ; St r Gr dCampanha. Cel l s [ i , 12] : = For mat Fl oat ( ' 0. 0' , BD. Cl nt Dt St Dados. Fi el dByName( ' GC' ) . AsI nt eger / BD. Cl nt Dt St Dados. Fi el dByName( ' JGS' ) . asI nt eger ) ; end el se begi n St r Gr dCampanha. Cel l s [ i , 2] : = ' 0, 0%' ; St r Gr dCampanha. Cel l s [ i , 6] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 7] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 8] : = ' 0' ; St r Gr dCampanha. Cel l s [ i , 11] : = ' 0, 0' ; St r Gr dCampanha. Cel l s [ i , 12] : = ' 0, 0' ; end; St r Gr dCampanha. Cel l s [ i , 3] : = BD. Cl nt Dt St Dados. Fi el dByName( ' VI T' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 4] : = BD. Cl nt Dt St Dados. Fi el dByName( ' EMP' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 5] : = BD. Cl nt Dt St Dados. Fi el dByName( ' DER' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 9] : = BD. Cl nt Dt St Dados. Fi el dByName( ' GP' ) . asSt r i ng;

Page 140: 5.1 Programa de Controle de Campeonatos de Futebol

140

St r Gr dCampanha. Cel l s [ i , 10] : = BD. Cl nt Dt St Dados. Fi el dByName( ' GC' ) . asSt r i ng; St r Gr dCampanha. Cel l s [ i , 13] : = BD. Cl nt Dt St Dados. Fi el dByName( ' SG' ) . asSt r i ng; end el se begi n St r Gr dCampanha. Cel l s [ i , 1] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 2] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 3] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 4] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 5] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 6] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 7] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 8] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 9] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 10] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 11] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 12] : = ' ' ; St r Gr dCampanha. Cel l s [ i , 13] : = ' ' ; end; end; end; pr ocedur e TFr mTabCl assi f i cacao. Car r egar ComboCampanha; var SQL: St r i ng; I t emCombo: TI t emCombo; begi n BD. SQLDt St Equi peDi sput aTemp. Par amByName( ' CodTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; wi t h BD. Cl nt Dt St Equi peDi sput aTemp do begi n Cl ose; Open; Fi r s t ; I mgTi me. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cr eat eBl obSt r eam( Fi el dByName( ' Escudo' ) , bmRead) ) ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodEqui pe' ) . AsI nt eger ) ; CmbBxEqui pe. I t ems. AddObj ect ( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng, I t emCombo) ; I t emCombo. Fr ee; Next ; end; CmbBxEqui pe. I t emI ndex : = 0; end; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar Fases; begi n BD. SQLDt St Fases. Par amByName( ' codTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; BD. Cl nt Dt St Fases. Cl ose; BD. Cl nt Dt St Fases. Open; BD. Cl nt Dt St Fases. Fi r s t ; Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar Gr upos; begi n BD. SQLDt St Gr upos. Par amByName( ' CodFase' ) . AsI nt eger : = BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; BD. Cl nt Dt St Gr upos. Cl ose; BD. Cl nt Dt St Gr upos. Open; BD. Cl nt Dt St Gr upos. Fi r s t ; Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar Cl assi f i cacao; var i : I nt eger ; Apr ov: Doubl e; begi n Sel f . At ual i zar SQLCl assi f i cacao; BD. Cl nt Dt St Cl assi f i cacao. Cl ose; BD. Cl nt Dt St Cl assi f i cacao. Open; BD. Cl nt Dt St Cl assi f i cacao. Last ; i : = 1; St r Gr dCl ass. RowCount : = 2; St r Gr dCl ass. Cel l s [ 0, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 1, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 2, 1] : = ' ' ;

Page 141: 5.1 Programa de Controle de Campeonatos de Futebol

141

St r Gr dCl ass. Cel l s [ 3, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 4, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 5, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 6, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 7, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 8, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 9, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 10, 1] : = ' ' ; Pr omovi do : = Tempor ada. Get NumTi mePr omovi do; Compet 1 : = Tempor ada. Get NumTi meCompet 1; Compet 2 : = Tempor ada. Get NumTi meCompet 2; PORebai xament o : = Tempor ada. Get NumTi mePORebai xament o; Rebai xado : = Tempor ada. Get NumTi meRebai xado; whi l e not BD. Cl nt Dt St Cl assi f i cacao. Bof do begi n St r Gr dCl ass. RowCount : = i + 1; St r Gr dCl ass. Cel l s [ 0, i ] : = I nt ToSt r ( i ) + ' º ' ; St r Gr dCl ass. Cel l s [ 1, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' NomeEqui pe' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 2, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' PTS' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 3, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' JGS' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 4, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' VI T' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 5, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' EMP' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 6, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' DER' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 7, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' GP' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 8, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' GC' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 9, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' SG' ) . asSt r i ng; i f BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' JGS' ) . asI nt eger <> 0 t hen begi n Apr ov : = ( BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' PTS' ) . asI nt eger / ( BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' JGS' ) . asI nt eger * Tempor ada. Get Pont osVi t or i a) ) * 100; Apr ov : = Tr unc( Apr ov* 10. 0) / 10. 0; end el se begi n Apr ov : = 0; end; St r Gr dCl ass. Cel l s [ 10, i ] : = For mat Fl oat ( ' 0. 0' , Apr ov) ; i : = i + 1; BD. Cl nt Dt St Cl assi f i cacao. Pr i or ; end; Tot al Cl ass : = i ; Sel f . At ual i zar Campanha; end; pr ocedur e TFr mTabCl assi f i cacao. At ual i zar SQLCl assi f i cacao; var i : I nt eger ; Apr ov: Doubl e; begi n SQLSel ect : = ' Sel ect SUM( C. PONTOS) PTS, SUM( C. JOGOS) JGS, SUM( C. VI TORI A) VI T, SUM( C. EMPATE) EMP, ' ; SQLSel ect : = SQLSel ect + ' SUM( C. DERROTA) DER, SUM( GOLSPRO) GP, SUM( GOLSCONTRA) GC, ' ; SQLSel ect : = SQLSel ect + ' SUM( C. SALDOGOLS) SG, E. NOMEEQUI PE f r om CLASSI FI CACAO C, EQUI PE E, ' ; SQLSel ect : = SQLSel ect + ' ESTRUTURATEMPORADA ET ' ; SQLWher e : = ' wher e C. CODEQUI PE=E. CODEQUI PE AND C. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA AND ' ; i f ChckBxTodosGr upos. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ( ET. CODGRUPO=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLWher e : = SQLWher e + ' or ET. CODESTRUTURATEMPORADA=' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng + ' ) ' ; end el se begi n i f ChckBxTodasFases. Checked = Fal se t hen begi n SQLWher e : = SQLWher e + ' ET. CODFASE=' + BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; end el se begi n SQLWher e : = SQLWher e + ' ET. CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; end; end; i f Ti poCl ass = ' casa' t hen begi n SQLWher e : = SQLWher e + ' and C. LOCAL=' ' C' ' ' ; end; i f Ti poCl ass = ' f or a' t hen begi n SQLWher e : = SQLWher e + ' and C. LOCAL=' ' F' ' ' ; end; SQLGr oupBy : = ' gr oup by E. NOMEEQUI PE ' ; case RdGr pOr dem. I t emI ndex of 0: SQLOr der By : = ' or der by 1 desc, ' + Tempor ada. Get SQLDesempat e;

Page 142: 5.1 Programa de Controle de Campeonatos de Futebol

142

1: SQLOr der By : = ' or der by 3 desc, 1 desc, ' + Tempor ada. Get SQLDesempat e; 2: SQLOr der By : = ' or der by 4 desc, 1 desc, ' + Tempor ada. Get SQLDesempat e; 3: SQLOr der By : = ' or der by 5, 1 desc, ' + Tempor ada. Get SQLDesempat e; 4: SQLOr der By : = ' or der by 6 desc, 1 desc, ' + Tempor ada. Get SQLDesempat e; 5: SQLOr der By : = ' or der by 7, 1 desc, ' + Tempor ada. Get SQLDesempat e; 6: SQLOr der By : = ' or der by 8 desc, 1 desc, ' + Tempor ada. Get SQLDesempat e; el se SQLOr der By : = ' ' ; end; BD. SQLDt St Cl assi f i cacao. CommandText : = SQLSel ect + SQLWher e + SQLGr oupBy + SQLOr der By; end; pr ocedur e TFr mTabCl assi f i cacao. For mCr eat e( Sender : TObj ect ) ; begi n St r Gr dCl ass. Cel l s [ 0, 0] : = ' POS' ; St r Gr dCl ass. Cel l s [ 1, 0] : = ' EQUI PE' ; St r Gr dCl ass. Cel l s [ 2, 0] : = ' PTS' ; St r Gr dCl ass. Cel l s [ 3, 0] : = ' J ' ; St r Gr dCl ass. Cel l s [ 4, 0] : = ' V' ; St r Gr dCl ass. Cel l s [ 5, 0] : = ' E' ; St r Gr dCl ass. Cel l s [ 6, 0] : = ' D' ; St r Gr dCl ass. Cel l s [ 7, 0] : = ' GP' ; St r Gr dCl ass. Cel l s [ 8, 0] : = ' GC' ; St r Gr dCl ass. Cel l s [ 9, 0] : = ' SG' ; St r Gr dCl ass. Cel l s [ 10, 0] : = ' %' ; St r Gr dCampanha. Cel l s [ 0, 0] : = ' CAMPANHA' ; St r Gr dCampanha. Cel l s [ 1, 0] : = ' CASA' ; St r Gr dCampanha. Cel l s [ 2, 0] : = ' FORA' ; St r Gr dCampanha. Cel l s [ 3, 0] : = ' TOTAL' ; St r Gr dCampanha. Cel l s [ 0, 1] : = ' Pont os ' ; St r Gr dCampanha. Cel l s [ 0, 2] : = ' Apr ovei t ament o ( %) ' ; St r Gr dCampanha. Cel l s [ 0, 3] : = ' Vi t ór i as ' ; St r Gr dCampanha. Cel l s [ 0, 4] : = ' Empat es ' ; St r Gr dCampanha. Cel l s [ 0, 5] : = ' Der r ot as ' ; St r Gr dCampanha. Cel l s [ 0, 6] : = ' % de Vi t ór i as ' ; St r Gr dCampanha. Cel l s [ 0, 7] : = ' % de Empat es ' ; St r Gr dCampanha. Cel l s [ 0, 8] : = ' % de Der r ot as ' ; St r Gr dCampanha. Cel l s [ 0, 9] : = ' Gol s Pr ó' ; St r Gr dCampanha. Cel l s [ 0, 10] : = ' Gol s Cont r a' ; St r Gr dCampanha. Cel l s [ 0, 11] : = ' Médi a de Gol s Pr ó' ; St r Gr dCampanha. Cel l s [ 0, 12] : = ' Médi a de Gol s Cont r a' ; St r Gr dCampanha. Cel l s [ 0, 13] : = ' Sal do de Gol s ' ; St r Gr dEst at Temp. Cel l s [ 0, 0] : = ' ESTATÍ STI CA' ; St r Gr dEst at Temp. Cel l s [ 1, 0] : = ' ANFI TRI ÃO' ; St r Gr dEst at Temp. Cel l s [ 2, 0] : = ' VI SI TANTE' ; St r Gr dEst at Temp. Cel l s [ 3, 0] : = ' TOTAL' ; St r Gr dEst at Temp. Cel l s [ 0, 1] : = ' Jogos Real i zados' ; St r Gr dEst at Temp. Cel l s [ 0, 2] : = ' Númer o de Gol s ' ; St r Gr dEst at Temp. Cel l s [ 0, 3] : = ' Médi a de Gol s ' ; St r Gr dEst at Temp. Cel l s [ 0, 4] : = ' Vi t ór i as ' ; St r Gr dEst at Temp. Cel l s [ 0, 5] : = ' Empat es ' ; St r Gr dEst at Temp. Cel l s [ 0, 6] : = ' Der r ot as ' ; St r Gr dEst at Temp. Cel l s [ 0, 7] : = ' % de Vi t ór i as ' ; St r Gr dEst at Temp. Cel l s [ 0, 8] : = ' % de Empat es ' ; St r Gr dEst at Temp. Cel l s [ 0, 9] : = ' % de Der r ot as ' ; end; pr ocedur e TFr mTabCl assi f i cacao. St r Gr dCl assDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; var Text o: St r i ng; X: I nt eger ; begi n i f Tot al Cl ass > 1 t hen begi n i f ( ARow <= Pr omovi do) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Li me; end; i f ( ARow > Pr omovi do) and ( ARow <= Compet 1+Pr omovi do) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Aqua; end; i f ( ARow > Pr omovi do+Compet 1) and ( ARow <= Compet 1+Pr omovi do+Compet 2) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l SkyBl ue; end; i f ( ARow >= Tot al Cl ass- PORebai xament o- Rebai xado) and ( ARow < Tot al Cl ass- Rebai xado) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Yel l ow; end; i f ( ARow >= Tot al Cl ass- Rebai xado) t hen begi n

Page 143: 5.1 Programa de Controle de Campeonatos de Futebol

143

St r Gr dCl ass. Canvas. Br ush. Col or : = c l Red; St r Gr dCl ass. Canvas. Font . Col or : = c l Whi t e; end; end; case RdGr pOr dem. I t emI ndex of 0: begi n i f ( ACol =2) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 1: begi n i f ( ACol =4) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 2: begi n i f ( ACol =5) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 3: begi n i f ( ACol =6) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 4: begi n i f ( ACol =7) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 5: begi n i f ( ACol =8) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; 6: begi n i f ( ACol =9) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l MoneyGr een; St r Gr dCl ass. Canvas. Font . Col or : = c l Bl ack; end; end; end; St r Gr dCl ass. Canvas. Fi l l Rect ( Rect ) ; St r Gr dCl ass. Canvas. Text Out ( Rect . Lef t +2, Rect . Top, St r Gr dCl ass. Cel l s [ acol , ar ow] ) ; i f ( ACol <>1) t hen begi n Text o : = St r Gr dCl ass. Cel l s [ ACol , ARow] ; X : = Rect . Ri ght - St r Gr dCl ass. Canvas. Text Wi dt h( Text o) - 2; St r Gr dCl ass. Canvas. Text Rect ( Rect , X, Rect . Top+2, Text o) ; i f gdFocused i n St at e t hen begi n St r Gr dCl ass. Canvas. Dr awFocusRect ( Rect ) ; end; end; end; pr ocedur e TFr mTabCl assi f i cacao. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mTabCl assi f i cacao. For mCl ose( Sender : TObj ect ; var Act i on: TCl oseAct i on) ; var i : I nt eger ; begi n BD. Dest r oy; f or i : =1 t o CmbBxEqui pe. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ i ] ) . Dest r oy; end; end; pr ocedur e TFr mTabCl assi f i cacao. DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; begi n

Page 144: 5.1 Programa de Controle de Campeonatos de Futebol

144

Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mTabCl assi f i cacao. DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; begi n Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mTabCl assi f i cacao. Bt nTodosCl i ck( Sender : TObj ect ) ; begi n Ti poCl ass : = ' t odos ' ; Pnl Cl assi f i cacao. Capt i on : = ' CLASSI FI CAÇÃO ( TODOS OS JOGOS) ' ; Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mTabCl assi f i cacao. Bt nCasaCl i ck( Sender : TObj ect ) ; begi n Ti poCl ass : = ' casa' ; Pnl Cl assi f i cacao. Capt i on : = ' CLASSI FI CAÇÃO ( SOMENTE JOGOS COMO ANFI TRI ÃO) ' ; Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mTabCl assi f i cacao. Bt nFor aCl i ck( Sender : TObj ect ) ; begi n Ti poCl ass : = ' f or a' ; Pnl Cl assi f i cacao. Capt i on : = ' CLASSI FI CAÇÃO ( SOMENTE JOGOS COMO VI SI TANTE) ' ; Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mTabCl assi f i cacao. ChckBxTodosGr uposCl i ck( Sender : TObj ect ) ; begi n i f ChckBxTodosGr upos. Checked = Tr ue t hen begi n DBGr dGr upos. Enabl ed : = Fal se; ChckBxTodasFases. Enabl ed : = Tr ue; Sel f . At ual i zar Cl assi f i cacao; end el se begi n DBGr dGr upos. Enabl ed : = Tr ue; ChckBxTodasFases. Checked : = Fal se; ChckBxTodasFases. Enabl ed : = Fal se; Sel f . At ual i zar Cl assi f i cacao; end; end; pr ocedur e TFr mTabCl assi f i cacao. ChckBxTodasFasesCl i ck( Sender : TObj ect ) ; begi n i f ChckBxTodasFases. Checked = Tr ue t hen begi n DBGr dFases. Enabl ed : = Fal se; Sel f . At ual i zar Cl assi f i cacao; end el se begi n DBGr dFases. Enabl ed : = Tr ue; Sel f . At ual i zar Cl assi f i cacao; end; end; pr ocedur e TFr mTabCl assi f i cacao. RdGr pOr demCl i ck( Sender : TObj ect ) ; begi n Sel f . At ual i zar Cl assi f i cacao; case RdGr pTabel aJgs. I t emI ndex of 0: Pnl TabJgs : = ' TODOS - ' ; 1: Pnl TabJgs : = ' REALI ZADOS - ' ; 2: Pnl TabJgs : = ' A REALI ZAR - ' ; end; case RdGr pTabel aJgs. I t emI ndex of 0: Pnl ResJgs : = ' ' ; 1: Pnl ResJgs : = ' VI TÓRI AS' ; 2: Pnl ResJgs : = ' EMPATES' ; 3: Pnl ResJgs : = ' DERROTAS' ; end; Pnl JgsEqui pe. Capt i on : = ' TABELA DE JOGOS: ' + Pnl TabJgs + Pnl ResJgs; end; pr ocedur e TFr mTabCl assi f i cacao. CmbBxEqui peChange( Sender : TObj ect ) ; var SQL: St r i ng; begi n I mgTi me. Pi ct ur e. Dest r oy;

Page 145: 5.1 Programa de Controle de Campeonatos de Futebol

145

SQL : = ' sel ect ESCUDO f r om EQUI PE wher e CODEQUI PE=' + I nt ToSt r ( TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; I mgTi me. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Dados. Cr eat eBl obSt r eam( BD. Cl nt Dt St Dados. Fi el dByName( ' Escudo' ) , bmRead) ) ; end; I mgTi me. Pi ct ur e. Dest r oy; Sel f . At ual i zar Campanha; end; pr ocedur e TFr mTabCl assi f i cacao. For mShow( Sender : TObj ect ) ; begi n PageCont r ol 1. Act i vePage : = TabSheet 1; end; pr ocedur e TFr mTabCl assi f i cacao. St r Gr dCampanhaDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; var Lar gur aText o, Al t ur aText o, X, Y: i nt eger ; Text o: St r i ng; begi n i f ( ACol =1) or ( ACol =2) or ( ACol =3) t hen begi n Text o : = St r Gr dCampanha. Cel l s [ ACol , ARow] ; Lar gur aText o : = St r Gr dCampanha. Canvas. Text Wi dt h( Text o) ; Al t ur aText o : = St r Gr dCampanha. Canvas. Text Hei ght ( Text o) ; X : = Rect . Lef t + ( Rect . Ri ght - Rect . Lef t ) di v 2 - Lar gur aText o di v 2; Y : = Rect . Top + ( Rect . Bot t om - Rect . Top) di v 2 - Al t ur aText o di v 2; St r Gr dCampanha. Canvas. Text Rect ( Rect , X, Y, Text o) ; end; end; end. ============================================================================================ ARQUI VO: UI Puni coes. pas ============================================================================================ uni t UI Puni coes; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . But t ons, Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Syst em. Component Model , Bor l and. Vcl . ComCt r l s , FMTBcd, Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , UDMDados, UTempor ada, UI t emCombo; t ype TFr mPuni coes = c l ass( TFor m) Panel 3: TPanel ; DBPuni coes: TDBGr i d; Pnl DadosCamp: TPanel ; Label 1: TLabel ; Label 3: TLabel ; Edt Mot i vo: TEdi t ; Edt Pt s: TEdi t ; Pnl Bt ns: TPanel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; Panel 4: TPanel ; DBGr dFases: TDBGr i d; DBGr dGr upos: TDBGr i d; Panel 1: TPanel ; CmbBxEqui pe: TComboBox; Panel 5: TPanel ; Label 2: TLabel ; Dt Dat a: TDat eTi mePi cker ; Bt nFechar : TBi t Bt n; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ;

Page 146: 5.1 Programa de Controle de Campeonatos de Futebol

146

Cl nt Dt St Dados: TCl i ent Dat aSet ; SQLDt St Fases: TSQLDat aSet ; Dt St Pr vdr Fases: TDat aSet Pr ovi der ; Cl nt Dt St Fases: TCl i ent Dat aSet ; Dt Sr cFases: TDat aSour ce; SQLDt St Gr upos: TSQLDat aSet ; Dt St Pr vdr Gr upos: TDat aSet Pr ovi der ; Cl nt Dt St Gr upos: TCl i ent Dat aSet ; Dt Sr cGr upos: TDat aSour ce; SQLDt St Puni coes: TSQLDat aSet ; Dt St Pr vdr Puni coes: TDat aSet Pr ovi der ; Cl nt Dt St Puni coes: TCl i ent Dat aSet ; Dt Sr cPuni coes: TDat aSour ce; Cl nt Dt St Puni coesCODPUNI CAO: TI nt eger Fi el d; Cl nt Dt St Puni coesCODESTRUTURATEMPORADA: TI nt eger Fi el d; Cl nt Dt St Puni coesCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Puni coesCODCLASSI FI CACAO: TI nt eger Fi el d; Cl nt Dt St Puni coesPONTOS: TI nt eger Fi el d; Cl nt Dt St Puni coesMOTI VO: TSt r i ngFi el d; Cl nt Dt St Puni coesDATA: TDat eFi el d; Cl nt Dt St Puni coesCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St Puni coesNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Puni coesNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Puni coesDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Puni coesCI DADE: TSt r i ngFi el d; Cl nt Dt St Puni coesPAI S: TSt r i ngFi el d; Cl nt Dt St Puni coesTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Puni coesESCUDO: TBl obFi el d; Cl nt Dt St Puni coesCODESTADI O: TI nt eger Fi el d; Cl nt Dt St Puni coesCODESTRUTURATEMPORADA_1: TI nt eger Fi el d; Cl nt Dt St Puni coesCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Puni coesNOMEESTRUTURATEMPORADA: TSt r i ngFi el d; Cl nt Dt St Puni coesCODGRUPO: TI nt eger Fi el d; Cl nt Dt St Puni coesCODFASE: TI nt eger Fi el d; SQLDt St Equi peDi sput aTemp: TSQLDat aSet ; Dt St Pr vdr Equi peDi sput aTemp: TDat aSet Pr ovi der ; Cl nt Dt St Equi peDi sput aTemp: TCl i ent Dat aSet ; Cl nt Dt St Equi peDi sput aTempCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peDi sput aTempCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempPAI S: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempESCUDO: TBl obFi el d; Cl nt Dt St Equi peDi sput aTempCODESTADI O: TI nt eger Fi el d; Dt Sr cEqui peDi sput aTemp: TDat aSour ce; Cl nt Dt St Gr uposCODESTRUTURATEMPORADA: TI nt eger Fi el d; Cl nt Dt St Gr uposCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Gr uposNOMEESTRUTURATEMPORADA: TSt r i ngFi el d; Cl nt Dt St Gr uposCODGRUPO: TI nt eger Fi el d; Cl nt Dt St Gr uposCODFASE: TI nt eger Fi el d; Bt nI nc l ui r Puni cao: TBi t Bt n; Bt nAl t er ar Puni cao: TBi t Bt n; Bt nExcl ui r Puni cao: TBi t Bt n; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Edt Pt sKeyPr ess( Sender : TObj ect ; var Key: Char ) ; pr ocedur e Bt nI nc l ui r Puni caoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Puni caoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r Puni caoCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; St at us: St r i ng; Tempor ada: TTempor ada; CodPuni cao: I nt eger ; NumEqui pes, NumFases, NumGr upos, NumPuni coes: I nt eger ; pr ocedur e At ual i zaPuni coes; pr ocedur e At ual i zaFases; pr ocedur e At ual i zaGr upos; pr ocedur e At ual i zaEqui pes; pr ocedur e Bl oquei aFor mul ar i o;

Page 147: 5.1 Programa de Controle de Campeonatos de Futebol

147

pr ocedur e At i vaFor mul ar i o; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Most r ar ( umaTemp: TTempor ada) ; end; var Fr mPuni coes: TFr mPuni coes; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mPuni coes. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mPuni coes. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end; pr ocedur e TFr mPuni coes. Most r ar ( umaTemp: TTempor ada) ; begi n Tempor ada : = umaTemp; Tempor ada : = umaTemp; Sel f . At ual i zaPuni coes; Sel f . At ual i zaFases; i f NumFases > 0 t hen begi n Sel f . At ual i zaGr upos; i f NumGr upos > 0 t hen begi n Sel f . At ual i zaEqui pes; i f NumEqui pes > 0 t hen begi n Sel f . Bl oquei aFor mul ar i o; ShowModal ; end el se begi n ShowMessage( ' Não exi s t em Equi pes Cadast r adas nest a t empor ada' ) ; end; end el se begi n ShowMessage( ' Est r ut ur a da Tempor ada I ndef i ni da' ) ; end; end el se begi n ShowMessage( ' Est r ut ur a da Tempor ada I ndef i ni da' ) ; end; end; pr ocedur e TFr mPuni coes. At ual i zaPuni coes; var SQL: St r i ng; begi n SQL : = ' sel ect COUNT( * ) f r om PUNI CAO P, ESTRUTURATEMPORADA ET wher e ' ; SQL : = SQL + ' ET. CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) + ' and P. CodEst r ut ur aTempor ada=ET. CodEst r ut ur aTempor ada' ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumPuni coes : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; SQLDt St Puni coes. Par amByName( ' CodTemp' ) . Asi nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Puni coes. Cl ose; Cl nt Dt St Puni coes. Open; Cl nt Dt St Puni coes. Fi r s t ; i f NumPuni coes > 0 t hen begi n Bt nAl t er ar Puni cao. Enabl ed : = Tr ue; Bt nExcl ui r Puni cao. Enabl ed : = Tr ue; end el se begi n Bt nAl t er ar Puni cao. Enabl ed : = Fal se; Bt nExcl ui r Puni cao. Enabl ed : = Fal se; end; end; pr ocedur e TFr mPuni coes. At ual i zaFases; var SQL: St r i ng; begi n

Page 148: 5.1 Programa de Controle de Campeonatos de Futebol

148

SQL : = ' sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODTEMPORADA=' ; SQL : = SQL + I nt ToSt r ( Tempor ada. Get CodTempor ada) + ' and CODFASE i s nul l ' ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumFases : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; SQLDt St Fases. Par amByName( ' codTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Fases. Cl ose; Cl nt Dt St Fases. Open; Cl nt Dt St Fases. Fi r s t ; end; pr ocedur e TFr mPuni coes. At ual i zaGr upos; var SQL: St r i ng; begi n SQL : = ' sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODFASE=' ; SQL : = SQL + Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng + ' and CodGr upo i s nul l ' ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumGr upos : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; SQLDt St Gr upos. Par amByName( ' CodFase' ) . AsI nt eger : = Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Cl nt Dt St Gr upos. Cl ose; Cl nt Dt St Gr upos. Open; Cl nt Dt St Gr upos. Fi r s t ; end; pr ocedur e TFr mPuni coes. At ual i zaEqui pes; var I t emCombo: TI t emCombo; SQL: St r i ng; begi n SQL : = ' Sel ect Count ( * ) f r om EQUI PECOMPETETEMPORADA wher e CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumEqui pes : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; i f NumEqui pes > 0 t hen begi n SQLDt St Equi peDi sput aTemp. Par amByName( ' CodTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; wi t h Cl nt Dt St Equi peDi sput aTemp do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodEqui pe' ) . AsI nt eger ) ; CmbBxEqui pe. I t ems. AddObj ect ( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng, I t emCombo) ; Next ; I t emCombo. Fr ee; end; CmbBxEqui pe. I t emI ndex : = 0; end; end; end; pr ocedur e TFr mPuni coes. Bl oquei aFor mul ar i o; begi n DBGr dFases. Enabl ed : = Fal se; DBGr dGr upos. Enabl ed : = Fal se; CmbBxEqui pe. Enabl ed : = Fal se; Edt Pt s. Text : = ' ' ; Edt Mot i vo. Text : = ' ' ; Dt Dat a. Enabl ed : = Fal se; Edt Pt s. Enabl ed : = Fal se; Edt Mot i vo. Enabl ed : = Fal se; Bt nGr avar . Enabl ed : = Fal se; Bt nCancel ar . Enabl ed : = Fal se; end;

Page 149: 5.1 Programa de Controle de Campeonatos de Futebol

149

pr ocedur e TFr mPuni coes. At i vaFor mul ar i o; begi n DBGr dFases. Enabl ed : = Tr ue; DBGr dGr upos. Enabl ed : = Tr ue; CmbBxEqui pe. Enabl ed : = Tr ue; Edt Pt s. Text : = ' ' ; Edt Mot i vo. Text : = ' ' ; Dt Dat a. Enabl ed : = Tr ue; Edt Pt s. Enabl ed : = Tr ue; Edt Mot i vo. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; end; pr ocedur e TFr mPuni coes. Edt Pt sKeyPr ess( Sender : TObj ect ; var Key: Char ) ; begi n i f not ( Key i n [ ' 0' . . ' 9' , #8, #0, ' - ' ] ) t hen begi n Key : = #0; Beep; end; end; pr ocedur e TFr mPuni coes. Bt nI nc l ui r Puni caoCl i ck( Sender : TObj ect ) ; begi n St at us : = ' N' ; Sel f . At i vaFor mul ar i o; DBGr dFases. Set Focus; end; pr ocedur e TFr mPuni coes. Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i o; end; pr ocedur e TFr mPuni coes. Bt nGr avar Cl i ck( Sender : TObj ect ) ; var Pt s: I nt eger ; Mot i vo: St r i ng; Dat aPuni cao: TDat eTi me; CodEst Temp, CodEqui pe: I nt eger ; begi n i f Edt Pt s. Text = ' ' t hen Edt Pt s. Text : = ' 0' ; t r y Pt s : = St r ToI nt ( Edt Pt s. Text ) ; Dat aPuni cao : = Dt Dat a. Dat eTi me; Mot i vo : = Edt Mot i vo. Text ; CodEst Temp : = Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; CodEqui pe : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; i f St at us=' N' t hen begi n Tempor ada. I nc l ui r Puni cao( CodEst Temp, CodEqui pe, Pt s, Dat aPuni cao, Mot i vo) ; end el se begi n Tempor ada. Al t er ar Puni cao( CodPuni cao, CodEst Temp, CodEqui pe, Pt s, Dat aPuni cao, Mot i vo) ; end; Sel f . Bl oquei aFor mul ar i o; Sel f . At ual i zaPuni coes; Except on E: EConver t Er r or do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mPuni coes. Bt nAl t er ar Puni caoCl i ck( Sender : TObj ect ) ; var i : I nt eger ; Achou: Bool ean; begi n St at us : = ' A' ; CodPuni cao : = Cl nt Dt St Puni coes. Fi el dByName( ' CodPuni cao' ) . asI nt eger ; Sel f . At i vaFor mul ar i o; Edt Pt s. Text : = Cl nt Dt St Puni coes. Fi el dByName( ' Pont os ' ) . asSt r i ng;

Page 150: 5.1 Programa de Controle de Campeonatos de Futebol

150

Edt Mot i vo. Text : = Cl nt Dt St Puni coes. Fi el dByName( ' Mot i vo' ) . asSt r i ng; Dt Dat a. Dat eTi me : = Cl nt Dt St Puni coes. Fi el dByName( ' Dat a' ) . asDat eTi me; i : = 0; Achou : = Fal se; whi l e ( ( i <= CmbBxEqui pe. I t ems. Count - 1) and ( not Achou) ) do begi n i f Cl nt Dt St Puni coes. Fi el dByName( ' CodEqui pe' ) . asI nt eger = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ i ] ) . Get Oi d t hen begi n Achou : = Tr ue; CmbBxEqui pe. I t emI ndex : = i ; end; i : = i + 1; end; Achou : = Fal se; wi t h Cl nt Dt St Fases do begi n Cl ose; Open; Fi r s t ; whi l e ( ( not eof ) and ( not achou) ) do begi n i f Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger = Cl nt Dt St Puni coes. Fi el dByName( ' CodFase' ) . asI nt eger t hen begi n Achou : = Tr ue; end el se begi n; Next ; end; end; end; Sel f . At ual i zaGr upos; Achou : = Fal se; wi t h Cl nt Dt St Gr upos do begi n Cl ose; Open; Fi r s t ; whi l e ( ( not eof ) and ( not achou) ) do begi n i f Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger = Cl nt Dt St Puni coes. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . asI nt eger t hen begi n Achou : = Tr ue; end el se begi n; Next ; end; end; end; DBGr dFases. Set Focus; end; pr ocedur e TFr mPuni coes. Bt nExcl ui r Puni caoCl i ck( Sender : TObj ect ) ; begi n Tempor ada. Excl ui r Puni cao( Cl nt Dt St Puni coes. Fi el dByName( ' CodPuni cao' ) . AsI nt eger ) ; Sel f . At ual i zaPuni coes; end; pr ocedur e TFr mPuni coes. DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; begi n Sel f . At ual i zaGr upos; end; end. ============================================================================================ ARQUI VO: UI nt er f ace. pas ============================================================================================ uni t UI nt er f ace; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . But t ons, Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . Menus, Syst em. Component Model , DBXpr ess, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Db, Bor l and. Vcl . Sql Expr , URodada, UGr upo, UFase, Bor l and. Vcl . DBCt r l s , Bor l and. Vcl . DBCGr i ds, UI CadJogos, UTempor ada, UMeuUt i l s , UI Escal acao, UDMDados, UDMI nt er f ace, UI LancesJogo, UI CadCampeonat o, UI CadEqui pe, UI CadEst adi o, UI CadAr bi t r o, UI t emCombo, UI CadTempor ada, UI CadJogador , UI CadEst r ut ur aTempor ada, UI CadEqui peCompet eTempor ada, UJogo, UI Puni coes,

Page 151: 5.1 Programa de Controle de Campeonatos de Futebol

151

Bor l and. Vcl . I ni Fi l es, UI TabCl assi f i cacao, UI I mpor t a, UI Al t er aDat aRodada; t ype TFr mLi st aJogos = c l ass( TFor m) Mai nMenu1: TMai nMenu; Ar qui vo1: TMenuI t em; CadCampeonat o: TMenuI t em; CadEqui pe: TMenuI t em; CadEst adi o: TMenuI t em; St at usBar 1: TSt at usBar ; Panel 1: TPanel ; Panel 2: TPanel ; DBGr dGr upos: TDBGr i d; Panel 3: TPanel ; Panel 4: TPanel ; DBGr dFases: TDBGr i d; Panel 5: TPanel ; DBGr dRodadas: TDBGr i d; DBGr dJogos: TDBGr i d; Pnl Pl acar Pr or r ogacao: TPanel ; Panel 8: TPanel ; Pnl NomeTC: TPanel ; Pnl NomeTF: TPanel ; Pnl Pl acar Jogo: TPanel ; Panel 7: TPanel ; Pnl DadosJogo1: TPanel ; Panel 14: TPanel ; CmbBxCampeonat os: TComboBox; Label 1: TLabel ; Pnl Pl acar Penal t i s : TPanel ; CadTempor ada: TMenuI t em; N1: TMenuI t em; empor ada2: TMenuI t em; Est r ut ur aCampeonat o: TMenuI t em; I mgBr anco: TI mage; I mgTi meCasa: TI mage; I mgTi meFor a: TI mage; Ar bi t r o: TMenuI t em; Bt nAbr i r Camp: TBi t Bt n; I nc l ui r Equi pe: TMenuI t em; Bt nCadEst r ut ur aTempor ada: TBut t on; Jogador : TMenuI t em; Puni es1: TMenuI t em; St r Gr dCl ass: TSt r i ngGr i d; E1: TMenuI t em; Aj uda1: TMenuI t em; Sobr e1: TMenuI t em; Campeonat o1: TMenuI t em; N2: TMenuI t em; I mpor t ar Tabel adeJogos1: TMenuI t em; PopupMenu1: TPopupMenu; Al t er ar Dat as1: TMenuI t em; Bt nI nc l ui r : TBi t Bt n; Bt nAl t er ar : TBi t Bt n; Bt nExcl ui r : TBi t Bt n; Bt nEscal acao: TBi t Bt n; Bt nLancesJogo: TBi t Bt n; pr ocedur e For mCr eat e( Sender : TObj ect ) ; pr ocedur e DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nI nc l ui r Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dRodadasCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nAl t er ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nEscal acaoCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dJogosDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dJogosCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nLancesJogoCl i ck( Sender : TObj ect ) ; pr ocedur e CadCampeonat oCl i ck( Sender : TObj ect ) ; pr ocedur e CadEqui peCl i ck( Sender : TObj ect ) ; pr ocedur e CadEst adi oCl i ck( Sender : TObj ect ) ; pr ocedur e Ar bi t r oCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAbr i r CampCl i ck( Sender : TObj ect ) ; pr ocedur e CadTempor adaCl i ck( Sender : TObj ect ) ; pr ocedur e Est r ut ur aCampeonat oCl i ck( Sender : TObj ect ) ; pr ocedur e I nc l ui r Equi peCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCadEst r ut ur aTempor adaCl i ck( Sender : TObj ect ) ; pr ocedur e Jogador Cl i ck( Sender : TObj ect ) ;

Page 152: 5.1 Programa de Controle de Campeonatos de Futebol

152

pr ocedur e Bt nExcl ui r Cl i ck( Sender : TObj ect ) ; pr ocedur e For mKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; pr ocedur e Puni es1Cl i ck( Sender : TObj ect ) ; pr ocedur e St r Gr dCl assDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; pr ocedur e Campeonat o1Cl i ck( Sender : TObj ect ) ; pr ocedur e I mpor t ar Tabel adeJogos1Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dJogosMouseDown( Sender : TObj ect ; But t on: TMouseBut t on; Shi f t : TShi f t St at e; X, Y: I nt eger ) ; pr ocedur e Al t er ar Dat as1Cl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; BD: TDt Mdl I nt er f ace; MeusUt i l s : TMeusUt i l s ; Fr mCadJogos: TFr mCadJogos; Fr mEscal acao: TFr mEscal acao; Fr mLancesJogo: TFr mLancesJogo; Fr mCadCampeonat o: TFr mCadCampeonat o; Fr mCadEqui pe: TFr mCadEqui pe; Tempor ada: TTempor ada; Tot al Cl ass, Pr omovi do, Compet 1, Compet 2, PORebai xament o, Rebai xado : I nt eger ; publ i c { Publ i c decl ar at i ons } pr ocedur e At ual i zar Campeonat os; pr ocedur e At ual i zar Fases; pr ocedur e At ual i zar Gr upos; pr ocedur e At ual i zar Rodadas; pr ocedur e At ual i zar Jogos; pr ocedur e At ual i zar Cl assi f i cacao; pr ocedur e At ual i zar DadosJogos; end; var Fr mLi st aJogos: TFr mLi st aJogos; i mpl ement at i on uses UDat aModul e; { $R * . nf m} pr ocedur e TFr mLi st aJogos. For mCr eat e( Sender : TObj ect ) ; begi n conBD : = TDt Mdl Dados. Cr eat e( ni l ) ; BD : = TDt Mdl I nt er f ace. Cr eat e( ni l ) ; BD. Set ConexaoBD( conBD) ; MeusUt i l s : = TMeusUt i l s . Cr eat e; MeusUt i l s . Gr avaI ni ( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; St r Gr dCl ass. Cel l s [ 0, 0] : = ' Pos. ' ; St r Gr dCl ass. Cel l s [ 1, 0] : = ' Equi pe' ; St r Gr dCl ass. Cel l s [ 2, 0] : = ' Pt s. ' ; St r Gr dCl ass. Cel l s [ 3, 0] : = ' Jgs. ' ; Sel f . At ual i zar Campeonat os; Sel f . Bt nAbr i r CampCl i ck( Sender ) ; sel f . At ual i zar Fases; end; pr ocedur e TFr mLi st aJogos. At ual i zar Campeonat os; var SQL: St r i ng; NomeCamp: St r i ng; I t emCombo: TI t emCombo; Ar qI ni : TI ni Fi l e; i : I nt eger ; Ul t CampAber t o: I nt eger ; Achou: Bool ean; begi n f or i : =0 t o CmbBxCampeonat os. I t ems. Count - 1 do begi n TI t emCombo( CmbBxCampeonat os. I t ems. Obj ect s[ i ] ) . Dest r oy; end; CmbBxCampeonat os. I t ems. Cl ear ; Ar qI ni : = TI ni Fi l e. Cr eat e( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; Ul t CampAber t o : = Ar qI ni . ReadI nt eger ( ' Tempor ada' , ' At ual ' , Ul t CampAber t o) ; Ar qI ni . Fr ee; SQL : = ' Sel ect * f r om TEMPORADA T, CAMPEONATO C wher e T. CODCAMPEONATO = C. CODCAMPEONATO or der by C. NOME, T. NOMETEMPORADA' ;

Page 153: 5.1 Programa de Controle de Campeonatos de Futebol

153

BD. SQLDt St Dados. CommandText : = SQL; i : = 0; Achou : = Fal se; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodTempor ada' ) . asI nt eger ) ; NomeCamp : = Fi el dByName( ' Nome' ) . asSt r i ng + ' ' + Fi el dByName( ' NomeTempor ada' ) . asSt r i ng; I t emCombo. Set Nome( NomeCamp) ; CmbBxCampeonat os. I t ems. AddObj ect ( NomeCamp, I t emCombo) ; i f not Achou t hen begi n i : = i + 1; i f Fi el dByName( ' CodTempor ada' ) . asI nt eger = Ul t CampAber t o t hen begi n Achou : = Tr ue; end; end; next ; end; end; CmbBxCampeonat os. I t emI ndex : = i - 1; end; pr ocedur e TFr mLi st aJogos. At ual i zar Fases; begi n BD. SQLDt St Fases. Par amByName( ' codTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; BD. Cl nt Dt St Fases. Cl ose; BD. Cl nt Dt St Fases. Open; BD. Cl nt Dt St Fases. Fi r s t ; Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mLi st aJogos. At ual i zar Gr upos; begi n BD. SQLDt St Gr upos. Par amByName( ' CodFase' ) . AsI nt eger : = BD. Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; BD. Cl nt Dt St Gr upos. Cl ose; BD. Cl nt Dt St Gr upos. Open; BD. Cl nt Dt St Gr upos. Fi r s t ; Sel f . At ual i zar Rodadas; end; pr ocedur e TFr mLi st aJogos. At ual i zar Rodadas; begi n BD. SQLDt St Rodadas. Par amByName( ' CodGr upo' ) . AsI nt eger : = BD. Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; BD. Cl nt Dt St Rodadas. Cl ose; BD. Cl nt Dt St Rodadas. Open; BD. Cl nt Dt St Rodadas. Fi r s t ; i f not BD. Cl nt Dt St Rodadas. eof t hen begi n Panel 1. Capt i on : = ' JOGOS DA FASE: ' + BD. Cl nt Dt St Fases. Fi el dByName( ' NomeEst r ut ur aTempor ada' ) . AsSt r i ng + ' GRUPO: ' + BD. Cl nt Dt St Gr upos. Fi el dByName( ' NomeEst r ut ur aTempor ada' ) . AsSt r i ng + ' RODADA: ' + BD. Cl nt Dt St Rodadas. Fi el dByName( ' NomeEst r ut ur aTempor ada' ) . AsSt r i ng; Bt nI nc l ui r . Enabl ed : = Tr ue; end el se begi n Bt nI nc l ui r . Enabl ed : = Fal se; Panel 1. Capt i on : = ' ' ; end; Sel f . At ual i zar Jogos; end; pr ocedur e TFr mLi st aJogos. At ual i zar Jogos; begi n BD. SQLDt St Jogos. Par amByName( ' ET' ) . AsI nt eger : = BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; BD. Cl nt Dt St Jogos. Cl ose; BD. Cl nt Dt St Jogos. Open; BD. Cl nt Dt St Jogos. Fi r s t ; i f BD. Cl nt Dt St Jogos. eof t hen begi n Bt nAl t er ar . Enabl ed : = Fal se; Bt nExcl ui r . Enabl ed : = Fal se; Bt nEscal acao. Enabl ed : = Fal se; Bt nLancesJogo. Enabl ed : = Fal se;

Page 154: 5.1 Programa de Controle de Campeonatos de Futebol

154

end el se begi n Bt nAl t er ar . Enabl ed : = Tr ue; Bt nExcl ui r . Enabl ed : = Tr ue; Bt nEscal acao. Enabl ed : = Tr ue; Bt nLancesJogo. Enabl ed : = Tr ue; end; Sel f . At ual i zar Cl assi f i cacao; Sel f . At ual i zar DadosJogos; end; pr ocedur e TFr mLi st aJogos. At ual i zar DadosJogos; var SQL: St r i ng; begi n I mgTi meCasa. Pi ct ur e : = I mgBr anco. Pi ct ur e; I mgTi meFor a. Pi ct ur e : = I mgBr anco. Pi ct ur e; Pnl NomeTC. Capt i on : = ' ' ; Pnl NomeTF. Capt i on : = ' ' ; Pnl DadosJogo1. Capt i on : = ' ' ; Pnl Pl acar Jogo. Capt i on : = ' ' ; Pnl Pl acar Pr or r ogacao. Capt i on : = ' ' ; Pnl Pl acar Penal t i s . Capt i on : = ' ' ; I mgTi meCasa. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Jogos. Cr eat eBl obSt r eam( BD. Cl nt Dt St Jogos. Fi el dByName( ' Escudo' ) , bmRead) ) ; I mgTi meFor a. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Jogos. Cr eat eBl obSt r eam( BD. Cl nt Dt St Jogos. Fi el dByName( ' Escudo_1' ) , bmRead) ) ; Pnl NomeTC. Capt i on : = BD. Cl nt Dt St Jogos. Fi el dByName( ' NomeEqui pe' ) . asSt r i ng; Pnl NomeTF. Capt i on : = BD. Cl nt Dt St Jogos. Fi el dByName( ' NomeEqui pe_1' ) . asSt r i ng; i f BD. Cl nt Dt St Jogos. Fi el dByName( ' CodEst adi o_2' ) . asI nt eger <> 0 t hen begi n SQL : = ' Sel ect * f r om Est adi o wher e CodEst adi o=' + BD. Cl nt Dt St Jogos. Fi el dByName( ' CodEst adi o_2' ) . asSt r i ng; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; end; Pnl DadosJogo1. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' NomeEst adi o' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Ci dadeEst adi o' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Pai s ' ) . asSt r i ng; end; i f BD. Cl nt Dt St Jogos. Fi el dByName( ' Real i zado' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Jogo. Capt i on : = BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meCasa' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meFor a' ) . asSt r i ng; i f BD. Cl nt Dt St Jogos. Fi el dByName( ' Pr or r ogacao' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Pr or r ogacao. Capt i on : = BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meCasaPr or r ogacao' ) . asSt r i ng + ' - Pr o - ' + BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meFor aPr or r ogacao' ) . asSt r i ng; end; i f BD. Cl nt Dt St Jogos. Fi el dByName( ' Penal t i s ' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Penal t i s . Capt i on : = BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meCasaPenal t i s ' ) . asSt r i ng + ' - Pên - ' + BD. Cl nt Dt St Jogos. Fi el dByName( ' Gol sTi meFor aPenal t i s ' ) . asSt r i ng; end; end; I mgTi meFor a. Pi ct ur e. Dest r oy; I mgTi meCasa. Pi ct ur e. Dest r oy; end; pr ocedur e TFr mLi st aJogos. At ual i zar Cl assi f i cacao; var i : I nt eger ; SQLText : St r i ng; begi n SQLText : = ' Sel ect SUM( C. PONTOS) PTS, SUM( C. JOGOS) JGS, SUM( C. VI TORI A) VI T, SUM( C. EMPATE) EMP, ' ; SQLText : = SQLText + ' SUM( C. DERROTA) DER, SUM( GOLSPRO) GP, SUM( GOLSCONTRA) GC, ' ; SQLText : = SQLText + ' SUM( C. SALDOGOLS) SG, E. NOMEEQUI PE f r om CLASSI FI CACAO C, EQUI PE E, ' ; SQLText : = SQLText + ' ESTRUTURATEMPORADA ET ' ; SQLText : = SQLText + ' wher e C. CODEQUI PE=E. CODEQUI PE AND C. CODESTRUTURATEMPORADA=ET. CODESTRUTURATEMPORADA AND ' ; SQLText : = SQLText + ' ( ET. CODGRUPO=: CODGRUPO or ET. CODESTRUTURATEMPORADA=: CODGRUPO) ' ; SQLText : = SQLText + ' gr oup by E. NOMEEQUI PE ' ; SQLText : = SQLText + ' or der by 1 desc, ' + Tempor ada. Get SQLDesempat e;

Page 155: 5.1 Programa de Controle de Campeonatos de Futebol

155

BD. SQLDt St Cl assi f i cacao. CommandText : = SQLText ; BD. SQLDt St Cl assi f i cacao. Par amByName( ' CODGRUPO' ) . AsI nt eger : = BD. Cl nt Dt St Gr upos. Fi el dByName( ' CODESTRUTURATEMPORADA' ) . AsI nt eger ; BD. Cl nt Dt St Cl assi f i cacao. Cl ose; BD. Cl nt Dt St Cl assi f i cacao. Open; BD. Cl nt Dt St Cl assi f i cacao. Last ; i : = 1; St r Gr dCl ass. RowCount : = 2; St r Gr dCl ass. Cel l s [ 0, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 1, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 2, 1] : = ' ' ; St r Gr dCl ass. Cel l s [ 3, 1] : = ' ' ; Pr omovi do : = Tempor ada. Get NumTi mePr omovi do; Compet 1 : = Tempor ada. Get NumTi meCompet 1; Compet 2 : = Tempor ada. Get NumTi meCompet 2; PORebai xament o : = Tempor ada. Get NumTi mePORebai xament o; Rebai xado : = Tempor ada. Get NumTi meRebai xado; whi l e not BD. Cl nt Dt St Cl assi f i cacao. Bof do begi n St r Gr dCl ass. RowCount : = i + 1; St r Gr dCl ass. Cel l s [ 0, i ] : = I nt ToSt r ( i ) + ' º ' ; St r Gr dCl ass. Cel l s [ 1, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' NomeEqui pe' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 2, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' PTS' ) . asSt r i ng; St r Gr dCl ass. Cel l s [ 3, i ] : = BD. Cl nt Dt St Cl assi f i cacao. Fi el dByName( ' SG' ) . asSt r i ng; i : = i + 1; BD. Cl nt Dt St Cl assi f i cacao. Pr i or ; end; Tot al Cl ass : = i ; end; pr ocedur e TFr mLi st aJogos. DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; begi n sel f . At ual i zar Gr upos; end; pr ocedur e TFr mLi st aJogos. DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; begi n sel f . At ual i zar Rodadas; end; pr ocedur e TFr mLi st aJogos. Bt nI nc l ui r Cl i ck( Sender : TObj ect ) ; begi n Fr mCadJogos : = TFr mCadJogos. cr eat e( ni l ) ; Fr mCadJogos. Set BD( conBD) ; Fr mCadJogos. Most r ar ( Tempor ada, BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodTempor ada' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodFase' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodGr upo' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger , 0, ' N' ) ; Fr eeAndNi l ( Fr mCadJogos) ; Sel f . At ual i zar Jogos; end; pr ocedur e TFr mLi st aJogos. DBGr dRodadasCel l Cl i ck( Col umn: TCol umn) ; begi n sel f . At ual i zar Jogos; end; pr ocedur e TFr mLi st aJogos. Bt nAl t er ar Cl i ck( Sender : TObj ect ) ; begi n Fr mCadJogos : = TFr mCadJogos. cr eat e( ni l ) ; Fr mCadJogos. Set BD( conBD) ; Fr mCadJogos. Most r ar ( Tempor ada, BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodTempor ada' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodFase' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodGr upo' ) . AsI nt eger , BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger , BD. Cl nt Dt St Jogos. Fi el dByName( ' CodJogo' ) . AsI nt eger , ' A' ) ; Fr mCadJogos. Dest r oy; Sel f . At ual i zar Jogos; end; pr ocedur e TFr mLi st aJogos. Bt nEscal acaoCl i ck( Sender : TObj ect ) ; begi n Fr mEscal acao : = TFr mEscal acao. Cr eat e( ni l ) ; Fr mEscal acao. Set BD( conBD) ; Fr mEscal acao. Def i ni r Escal acao ( Tempor ada, BD. Cl nt Dt St Jogos. Fi el dByName( ' CodJogo' ) . AsI nt eger ) ; Fr mEscal acao. Dest r oy; end;

Page 156: 5.1 Programa de Controle de Campeonatos de Futebol

156

pr ocedur e TFr mLi st aJogos. DBGr dJogosDbl Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nAl t er ar Cl i ck( Sender ) ; end; pr ocedur e TFr mLi st aJogos. DBGr dJogosCel l Cl i ck( Col umn: TCol umn) ; begi n sel f . At ual i zar DadosJogos; end; pr ocedur e TFr mLi st aJogos. Bt nLancesJogoCl i ck( Sender : TObj ect ) ; begi n Fr mLancesJogo : = TFr mLancesJogo. Cr eat e( ni l ) ; Fr mLancesJogo. Set BD( ConBD) ; Fr mLancesJogo. Def i ni r LancesJogo ( Tempor ada, BD. Cl nt Dt St Jogos. Fi el dByName( ' CodJogo' ) . AsI nt eger ) ; Fr mLancesJogo. Dest r oy; end; pr ocedur e TFr mLi st aJogos. CadCampeonat oCl i ck( Sender : TObj ect ) ; begi n Fr mCadCampeonat o : = TFr mCadCampeonat o. Cr eat e( ni l ) ; Fr mCadCampeonat o. Set BD( ConBD) ; Fr mCadCampeonat o. Most r ar ; Fr mCadCampeonat o. Dest r oy; end; pr ocedur e TFr mLi st aJogos. CadEqui peCl i ck( Sender : TObj ect ) ; begi n Fr mCadEqui pe : = TFr mCadEqui pe. Cr eat e( ni l ) ; Fr mCadEqui pe. Set BD( ConBD) ; Fr mCadEqui pe. Most r ar ; Fr mCadEqui pe. Dest r oy; Sel f . At ual i zar Jogos; end; pr ocedur e TFr mLi st aJogos. CadEst adi oCl i ck( Sender : TObj ect ) ; var Fr mCadEst adi o: TFr mCadEst adi o; begi n Fr mCadEst adi o : = TFr mCadEst adi o. Cr eat e( ni l ) ; Fr mCadEst adi o. Set BD( conBD) ; Fr mCadEst adi o. Most r ar ; Fr mCadEst adi o. Dest r oy; end; pr ocedur e TFr mLi st aJogos. Ar bi t r oCl i ck( Sender : TObj ect ) ; var Fr mCadAr bi t r o: TFr mCadAr bi t r o; begi n Fr mCadAr bi t r o : = TFr mCadAr bi t r o. Cr eat e( ni l ) ; Fr mCadAr bi t r o. Set BD( conBD) ; Fr mCadAr bi t r o. Most r ar ( Tempor ada) ; Fr mCadAr bi t r o. Dest r oy; end; pr ocedur e TFr mLi st aJogos. Bt nAbr i r CampCl i ck( Sender : TObj ect ) ; var Ar qI ni : TI ni Fi l e; begi n Tempor ada : = TTempor ada. cr eat e; Tempor ada. Set BD( ConBD) ; Tempor ada. Mat er i al i zar ( TI t emCombo( CmbBxCampeonat os. I t ems. Obj ect s[ CmbBxCampeonat os. I t emI ndex] ) . Get Oi d) ; Sel f . Capt i on : = TI t emCombo( CmbBxCampeonat os. I t ems. Obj ect s[ CmbBxCampeonat os. I t emI ndex] ) . Get Nome; Ar qI ni : = TI ni Fi l e. Cr eat e( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; Ar qI ni . Wr i t eI nt eger ( ' Tempor ada' , ' At ual ' , Tempor ada. Get CodTempor ada) ; Ar qI ni . Fr ee; sel f . At ual i zar Fases; end; pr ocedur e TFr mLi st aJogos. CadTempor adaCl i ck( Sender : TObj ect ) ; var Fr mCadTempor ada: TFr mCadTempor ada; begi n Fr mCadTempor ada : = TFr mCadTempor ada. Cr eat e( ni l ) ; Fr mCadTempor ada. Set BD( conBD) ; Fr mCadTempor ada. Most r ar ; Fr mCadTempor ada. Dest r oy; Sel f . At ual i zar Campeonat os; end;

Page 157: 5.1 Programa de Controle de Campeonatos de Futebol

157

pr ocedur e TFr mLi st aJogos. Est r ut ur aCampeonat oCl i ck( Sender : TObj ect ) ; var Fr mCadEst r ut ur aTempor ada: TFr mCadEst r ut ur aTempor ada; begi n Fr mCadEst r ut ur aTempor ada : = TFr mCadEst r ut ur aTempor ada. Cr eat e( ni l ) ; Fr mCadEst r ut ur aTempor ada. Set BD( conBD) ; Fr mCadEst r ut ur aTempor ada. Most r ar ( Tempor ada) ; Fr mCadEst r ut ur aTempor ada. Dest r oy; Sel f . At ual i zar Fases; end; pr ocedur e TFr mLi st aJogos. I nc l ui r Equi peCl i ck( Sender : TObj ect ) ; var Fr mCadEqui peCompet eTempor ada: TFr mCadEqui peCompet eTempor ada; begi n Fr mCadEqui peCompet eTempor ada : = TFr mCadEqui peCompet eTempor ada. Cr eat e( ni l ) ; Fr mCadEqui peCompet eTempor ada. Set BD( conBD) ; Fr mCadEqui peCompet eTempor ada. Most r ar ( Tempor ada) ; Fr mCadEqui peCompet eTempor ada. Dest r oy; end; pr ocedur e TFr mLi st aJogos. Bt nCadEst r ut ur aTempor adaCl i ck( Sender : TObj ect ) ; begi n Sel f . Est r ut ur aCampeonat oCl i ck( Sender ) ; end; pr ocedur e TFr mLi st aJogos. Jogador Cl i ck( Sender : TObj ect ) ; var Fr mCadJogador : TFr mCadJogador ; begi n Fr mCadJogador : = TFr mCadJogador . Cr eat e( ni l ) ; Fr mCadJogador . Set BD( conBD) ; Fr mCadJogador . Most r ar ( Tempor ada, 0) ; Fr mCadJogador . Dest r oy; end; pr ocedur e TFr mLi st aJogos. Bt nExcl ui r Cl i ck( Sender : TObj ect ) ; var Jogo: TJogo; nCode1: Wor d; begi n nCode1 : = MessageDl g ( ' Você r el ament e desej a excl ui r o Jogo?' , mt Conf i r mat i on, mbYesNo, 0) ; case nCode1 of mr Yes: begi n t r y Jogo : = TJogo. Cr eat e; Jogo. Set BD( ConBD) ; Jogo. Mat er i al i zar ( BD. Cl nt Dt St Jogos. Fi el dByName( ' CodJogo' ) . AsI nt eger ) ; i f Jogo. Possui Event os = Fal se t hen begi n Jogo. Excl ui r Jogo; end el se begi n i f MessageDl g ( ' Est e Jogo possui Event os ou Escal ação associ ados. Tem cer t eza que desej a r emove- l o?' , mt Conf i r mat i on, [ mbYes, mbNo] , 0) = Mr Yes t hen begi n Jogo. Excl ui r Jogo; end; end; Jogo. Dest r oy; Sel f . At ual i zar Jogos; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Cont act e o Supor t e' ) ; end; end; end; end; end; pr ocedur e TFr mLi st aJogos. For mKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; begi n i f key = VK_I NSERT t hen begi n i f Bt nI nc l ui r . Enabl ed = Tr ue t hen begi n Sel f . Bt nAl t er ar Cl i ck( Sender ) ; end; end; i f key = VK_DELETE t hen begi n i f Bt nExcl ui r . Enabl ed = Tr ue t hen begi n Sel f . Bt nExcl ui r Cl i ck( Sender ) ;

Page 158: 5.1 Programa de Controle de Campeonatos de Futebol

158

end; end; i f key = 13 t hen begi n i f Bt nAl t er ar . Enabl ed = Tr ue t hen begi n Sel f . Bt nAl t er ar Cl i ck( Sender ) ; end; end; end; pr ocedur e TFr mLi st aJogos. Puni es1Cl i ck( Sender : TObj ect ) ; var Fr mPuni coes: TFr mPuni coes; begi n Fr mPuni coes : = TFr mPuni coes. Cr eat e( ni l ) ; Fr mPuni coes. Set BD( conBD) ; Fr mPuni coes. Most r ar ( Tempor ada) ; Fr mPuni coes. Dest r oy; Sel f . At ual i zar Cl assi f i cacao; end; pr ocedur e TFr mLi st aJogos. St r Gr dCl assDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; var Text o: s t r i ng; X: I nt eger ; begi n i f Tot al Cl ass > 1 t hen begi n i f ( ARow <= Pr omovi do) and ( ARow > 0) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Li me; end; i f ( ARow > Pr omovi do) and ( ARow <= Compet 1+Pr omovi do) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Aqua; end; i f ( ARow > Pr omovi do+Compet 1) and ( ARow <= Compet 1+Pr omovi do+Compet 2) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l SkyBl ue; end; i f ( ARow >= Tot al Cl ass- PORebai xament o- Rebai xado) and ( ARow < Tot al Cl ass- Rebai xado) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Yel l ow; end; i f ( ARow >= Tot al Cl ass- Rebai xado) t hen begi n St r Gr dCl ass. Canvas. Br ush. Col or : = c l Red; St r Gr dCl ass. Canvas. Font . Col or : = c l Whi t e; end; end; St r Gr dCl ass. Canvas. Fi l l Rect ( Rect ) ; St r Gr dCl ass. Canvas. Text Out ( Rect . Lef t +2, Rect . Top, St r Gr dCl ass. Cel l s [ acol , ar ow] ) ; i f ( ACol <>1) t hen begi n Text o : = St r Gr dCl ass. Cel l s [ ACol , ARow] ; X : = Rect . Ri ght - St r Gr dCl ass. Canvas. Text Wi dt h( Text o) - 2; St r Gr dCl ass. Canvas. Text Rect ( Rect , X, Rect . Top+2, Text o) ; i f gdFocused i n St at e t hen begi n St r Gr dCl ass. Canvas. Dr awFocusRect ( Rect ) ; end; end; end; pr ocedur e TFr mLi st aJogos. Campeonat o1Cl i ck( Sender : TObj ect ) ; var Fr mTabCl assi f i cacao: TFr mTabCl assi f i cacao; begi n Fr mTabCl assi f i cacao : = TFr mTabCl assi f i cacao. Cr eat e( ni l ) ; Fr mTabCl assi f i cacao. Set BD( conBD) ; Fr mTabCl assi f i cacao. Most r ar ( Tempor ada) ; Fr mTabCl assi f i cacao. Dest r oy; end; pr ocedur e TFr mLi st aJogos. I mpor t ar Tabel adeJogos1Cl i ck( Sender : TObj ect ) ; var Fr mI mpor t a: TFr mI mpor t a; begi n Fr mI mpor t a : = TFr mI mpor t a. Cr eat e( ni l ) ; Fr mI mpor t a. Set BD( conBD) ; Fr mI mpor t a. Most r ar ( Tempor ada) ; Fr mI mpor t a. Dest r oy; Sel f . At ual i zar Rodadas; end; pr ocedur e TFr mLi st aJogos. DBGr dJogosMouseDown( Sender : TObj ect ;

Page 159: 5.1 Programa de Controle de Campeonatos de Futebol

159

But t on: TMouseBut t on; Shi f t : TShi f t St at e; X, Y: I nt eger ) ; var Poi nt : TPoi nt ; begi n Get Cur sor Pos( Poi nt ) ; i f But t on = mbRi ght t hen PopupMenu1. PopUp( Poi nt . X, Poi nt . Y) ; end; pr ocedur e TFr mLi st aJogos. Al t er ar Dat as1Cl i ck( Sender : TObj ect ) ; var Fr mAl t er aDat aRodada: TFr mAl t er aDat aRodada; begi n Fr mAl t er aDat aRodada : = TFr mAl t er aDat aRodada. Cr eat e( ni l ) ; Fr mAl t er aDat aRodada. Most r ar ( Tempor ada, BD. Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ) ; Fr mAl t er aDat aRodada. Dest r oy; Sel f . At ual i zar Jogos; end; end. ============================================================================================ ARQUI VO: UI LanceJogo. pas ============================================================================================ uni t UI LancesJogo; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . ComCt r l s , Syst em. Component Model , Bor l and. Vcl . Gr i ds, UDMDados, UDMI LancesJogo, UTempor ada, UJogo, Bor l and. Vcl . Db, FMTBcd, Bor l and. Vcl . Sql Expr , Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Menus, UI t emCombo, UI CadJogador ; t ype TFr mLancesJogo = c l ass( TFor m) St r Gr dEvent osJogo: TSt r i ngGr i d; PageCont r ol 1: TPageCont r ol ; TbSht Ti meCasa: TTabSheet ; TbSht Ti meFor a: TTabSheet ; Panel 2: TPanel ; Label 1: TLabel ; Label 3: TLabel ; Label 2: TLabel ; DBGr dTi t ul ar esFor a: TDBGr i d; CmbBxEvent oFor a: TComboBox; Pnl Jogador Event oFor a: TPanel ; CmbBxMi nut osFor a: TComboBox; ChckBxTi t ul ar esFor a: TCheckBox; Pnl Pl acar Pr or r ogacao: TPanel ; Panel 8: TPanel ; I mgTi meFor a: TI mage; Pnl NomeTC: TPanel ; Pnl NomeTF: TPanel ; Pnl Pl acar Jogo: TPanel ; Panel 7: TPanel ; I mgTi meCasa: TI mage; Pnl DadosJogo1: TPanel ; Pnl Pl acar Penal t i s : TPanel ; Pnl Ti meFor a: TPanel ; Panel 3: TPanel ; Bt nI nc l ui r Event oTF: TBut t on; I mgGol : TI mage; I mgGol Pen: TI mage; I mgGol Cont r a: TI mage; I mgAmar el o: TI mage; I mgVer mel ho: TI mage; I mgAmaVer : TI mage; I mgSubst : TI mage; PopupMenu1: TPopupMenu; Excl ui r Event o1: TMenuI t em; Panel 1: TPanel ; Label 4: TLabel ;

Page 160: 5.1 Programa de Controle de Campeonatos de Futebol

160

Label 5: TLabel ; Label 6: TLabel ; DBGr dTi t ul ar esCasa: TDBGr i d; CmbBxEvent oCasa: TComboBox; Pnl Jogador Event oCasa: TPanel ; CmbBxMi nut osCasa: TComboBox; ChckBxTi t ul ar esCasa: TCheckBox; Pnl Ti meCasa: TPanel ; Panel 6: TPanel ; Bt nI nc l ui r Event oTC: TBut t on; Bt nCadJogador esTF: TBut t on; But t on1: TBut t on; pr ocedur e ChckBxTi t ul ar esFor aCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dTi t ul ar esFor aCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e St r Gr dEvent osJogoDr awCel l ( Sender : TObj ect ; ACol , ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; pr ocedur e Bt nI nc l ui r Event oTFCl i ck( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e St r Gr dEvent osJogoMouseDown( Sender : TObj ect ; But t on: TMouseBut t on; Shi f t : TShi f t St at e; X, Y: I nt eger ) ; pr ocedur e Excl ui r Event o1Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Event oTCCl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxTi t ul ar esCasaCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dTi t ul ar esCasaCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nCadJogador esTFCl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } ConBD: TDt Mdl Dados; BD: TDt Mdl LancesJogo; Jogo: TJogo; CodJogo: I nt eger ; Tempor ada: TTempor ada; codTempor ada: I nt eger ; I magensLanceJogo: Ar r ay [ 0. . 49, 1. . 2] of I nt eger ; / / ( Col una da i magem , Ti po da I magem) Tot Event os: I nt eger ; Count Event os: I nt eger ; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Def i ni r LancesJogo ( umaTempor ada: TTempor ada; umCodJogo: I nt eger ) ; pr ocedur e At ual i zar I nt er f aceTC; pr ocedur e At ual i zar I nt er f aceTF; pr ocedur e At ual i zar DadosJogos; pr ocedur e At ual i zar LancesJogo; end; var Fr mLancesJogo: TFr mLancesJogo; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mLancesJogo. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n BD : = TDt Mdl LancesJogo. Cr eat e( ni l ) ; BD. Set ConexaoBD ( umaConBD) ; conBD : = umaConBD; end; pr ocedur e TFr mLancesJogo. Def i ni r LancesJogo ( umaTempor ada: TTempor ada; umCodJogo: I nt eger ) ; var Mi nut os, i : I nt eger ; begi n CodJogo : = umCodJogo; Tempor ada : = UmaTempor ada; CodTempor ada : = Tempor ada. Get CodTempor ada; BD. SQLDt St Jogo. Par amByName( ' Cod' ) . asI nt eger : = CodJogo; BD. Cl nt Dt St Jogo. Cl ose; BD. Cl nt Dt St Jogo. Open; BD. Cl nt Dt St Jogo. Fi r s t ; Jogo : = TJogo. Cr eat e; Jogo. Set BD ( ConBD) ; Jogo. Mat er i al i zar ( umCodJogo) ; Sel f . At ual i zar I nt er f aceTC; Sel f . At ual i zar I nt er f aceTF;

Page 161: 5.1 Programa de Controle de Campeonatos de Futebol

161

Sel f . At ual i zar DadosJogos; Sel f . At ual i zar LancesJogo; TbSht Ti meCasa. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; TbSht Ti meFor a. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe_1' ) . AsSt r i ng; Mi nut os : = 90; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . AsI nt eger = 1 t hen Mi nut os : = 120; f or i : =1 t o mi nut os do begi n CmbBxMi nut osCasa. I t ems. Add( I nt ToSt r ( i ) + ' ' ' ' ) ; end; f or i : =1 t o mi nut os do begi n CmbBxMi nut osFor a. I t ems. Add( I nt ToSt r ( i ) + ' ' ' ' ) ; end; CmbBxMi nut osCasa. I t emI ndex : = 0; CmbBxMi nut osFor a. I t emI ndex : = 0; PageCont r ol 1. Act i vePage : = TbSht Ti meCasa; ShowModal ; end; pr ocedur e TFr mLancesJogo. At ual i zar I nt er f aceTC; var SQL: St r i ng; begi n Pnl Ti meCasa. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; i f ChckBxTi t ul ar esCasa. Checked = Tr ue t hen begi n SQL : = ' Sel ect * f r om Jogador J, Escal acaoJogo EJ wher e J. CodJogador = EJ. CodJogador and EJ. CodJogo=' + I nt ToSt r ( CodJogo) + ' and EJ. CodEqui pe=' + I nt ToSt r ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ) ; end el se begi n SQL : = ' Sel ect * f r om Jogador J wher e J. CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsSt r i ng + ' and J. CodTempor ada=' + I nt ToSt r ( CodTempor ada) ; end; BD. SQLDt St Jogador esCasa. CommandText : = SQL; wi t h BD. Cl nt Dt St Jogador esCasa do begi n Cl ose; Open; Fi r s t ; end; Pnl Jogador Event oCasa. Capt i on : = ' ' + BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; end; pr ocedur e TFr mLancesJogo. At ual i zar I nt er f aceTF; var SQL: St r i ng; begi n Pnl Ti meFor a. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe_1' ) . AsSt r i ng; i f ChckBxTi t ul ar esFor a. Checked = Tr ue t hen begi n SQL : = ' Sel ect * f r om Jogador J, Escal acaoJogo EJ wher e J. CodJogador = EJ. CodJogador and EJ. CodJogo=' + I nt ToSt r ( CodJogo) + ' and EJ. CodEqui pe=' + I nt ToSt r ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ) ; end el se begi n SQL : = ' Sel ect * f r om Jogador J wher e J. CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsSt r i ng + ' and J. CodTempor ada=' + I nt ToSt r ( CodTempor ada) ; end; BD. SQLDt St Jogador esFor a. CommandText : = SQL; wi t h BD. Cl nt Dt St Jogador esFor a do begi n Cl ose; Open; Fi r s t ; end; Pnl Jogador Event oFor a. Capt i on : = ' ' + BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; end; pr ocedur e TFr mLancesJogo. ChckBxTi t ul ar esFor aCl i ck( Sender : TObj ect ) ; begi n Sel f . At ual i zar I nt er f aceTF; end; pr ocedur e TFr mLancesJogo. DBGr dTi t ul ar esFor aCel l Cl i ck( Col umn: TCol umn) ; begi n Pnl Jogador Event oFor a. Capt i on : = ' ' + BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; end;

Page 162: 5.1 Programa de Controle de Campeonatos de Futebol

162

pr ocedur e TFr mLancesJogo. At ual i zar DadosJogos; var SQL: St r i ng; begi n I mgTi meCasa. Pi ct ur e. Bi t map. Fr eeI mage; I mgTi meFor a. Pi ct ur e. Bi t map. Fr eeI mage; Pnl NomeTC. Capt i on : = ' ' ; Pnl NomeTF. Capt i on : = ' ' ; Pnl DadosJogo1. Capt i on : = ' ' ; Pnl Pl acar Jogo. Capt i on : = ' ' ; Pnl Pl acar Pr or r ogacao. Capt i on : = ' ' ; Pnl Pl acar Penal t i s . Capt i on : = ' ' ; I mgTi meCasa. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Jogo. Cr eat eBl obSt r eam( BD. Cl nt Dt St Jogo. Fi el dByName( ' Escudo' ) , bmRead) ) ; I mgTi meFor a. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Jogo. Cr eat eBl obSt r eam( BD. Cl nt Dt St Jogo. Fi el dByName( ' Escudo_1' ) , bmRead) ) ; Pnl NomeTC. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe' ) . asSt r i ng; Pnl NomeTF. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe_1' ) . asSt r i ng; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEst adi o' ) . asI nt eger <> 0 t hen begi n SQL : = ' Sel ect * f r om Est adi o wher e CodEst adi o=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEst adi o' ) . asSt r i ng; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; end; Pnl DadosJogo1. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' NomeEst adi o' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Ci dadeEst adi o' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Pai s ' ) . asSt r i ng; end; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Real i zado' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Jogo. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meCasa' ) . asSt r i ng + ' - ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meFor a' ) . asSt r i ng; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Pr or r ogacao. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meCasaPr or r ogacao' ) . asSt r i ng + ' - Pr o - ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meFor aPr or r ogacao' ) . asSt r i ng; end; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Penal t i s ' ) . asI nt eger = 1 t hen begi n Pnl Pl acar Penal t i s . Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meCasaPenal t i s ' ) . asSt r i ng + ' - Pên - ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' Gol sTi meFor aPenal t i s ' ) . asSt r i ng; end; end; end; pr ocedur e TFr mLancesJogo. At ual i zar LancesJogo; var Mi nut osSubst , Mi nut osLance: I nt eger ; Subst , Lance: bool ean; Event o: I nt eger ; Mi nut oUl t i moLance: I nt eger ; x , y : i nt eger ; TC, TF: I nt eger ; I t emCombo: TI t emCombo; begi n / / Li mpa o St r i ng Gr i d f or x : =0 t o St r Gr dEvent osJogo. Col Count do begi n f or y : =0 t o St r Gr dEvent osJogo. RowCount do begi n St r Gr dEvent osJogo. Cel l s [ x , y ] : =' ' ; end; end; / / I ni c i a as var i avei s Event o : = 0; Mi nut oUl t i moLance : = 0; Subst : = Tr ue; Lance : = Tr ue; Mi nut osSubst : = 0; Mi nut osSubst : = 0; TC : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ; TF : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ; / / Busca no BD as Subst i t ui coes BD. SQLDt St Subst . Par amByName( ' CodJogo' ) . AsI nt eger : = CodJogo; BD. SQLDt St Subst . Par amByName( ' CodEqui peCasa' ) . AsI nt eger : = TC;

Page 163: 5.1 Programa de Controle de Campeonatos de Futebol

163

BD. SQLDt St Subst . Par amByName( ' CodEqui peFor a' ) . AsI nt eger : = TF; wi t h BD. Cl nt Dt St Subst do begi n Cl ose; Open; Fi r s t ; end; BD. SQLDt St LancesJogo. Par amByName( ' CodJogo' ) . AsI nt eger : = CodJogo; BD. SQLDt St LancesJogo. Par amByName( ' CodEqui peCasa' ) . AsI nt eger : = TC; BD. SQLDt St LancesJogo. Par amByName( ' CodEqui peFor a' ) . AsI nt eger : = TF; wi t h BD. Cl nt Dt St LancesJogo do begi n Cl ose; Open; Fi r s t ; end; r epeat i f BD. Cl nt Dt St Subst . Eof = Fal se t hen begi n Mi nut osSubst : = BD. Cl nt Dt St Subst . Fi el dByName( ' Mi nut oSubst i t ui cao' ) . asI nt eger ; end el se begi n Subst : = Fal se; end; i f BD. Cl nt Dt St LancesJogo. Eof = Fal se t hen begi n Mi nut osLance : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Mi nut o' ) . asI nt eger ; end el se begi n Lance : = Fal se; end; i f ( ( Subst =Tr ue) and ( Lance=Tr ue) ) t hen begi n i f Mi nut osSubst < Mi nut osLance t hen begi n i f BD. Cl nt Dt St Subst . Fi el dByName( ' CodEqui pe' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = ' I n: ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng + ' / Out : ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador _1' ) . asSt r i ng; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 1; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = ' I n: ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng + ' / Out : ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador _1' ) . asSt r i ng; I magensLanceJogo [ Event o, 1] : = 3; I magensLanceJogo [ Event o, 2] : = 1; end; i f Mi nut osSubst <> Mi nut oUl t i moLance t hen begi n St r Gr dEvent osJogo. Cel l s [ 2, Event o] : = i nt ToSt r ( Mi nut osSubst ) + ' ' ' ' ; Mi nut oUl t i moLance : = Mi nut osSubst ; end; BD. Cl nt Dt St Subst . Next ; end el se begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodLancePar t i da' ) . asI nt eger ) ; case BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Ti poLance' ) . AsI nt eger of 1: begi n / / Gol i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 2; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 2; end; end; 2: begi n / / Gol de Penal t i i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 3; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng;

Page 164: 5.1 Programa de Controle de Campeonatos de Futebol

164

St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 3; end; end; 3: begi n / / Gol Cont r a i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 4; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 4; end; end; 4: begi n / / Car t ão Amar el o i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 5; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 5; end; end; 5: begi n / / Car t ão Amar el o e Ver mel ho i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 6; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 6; end; end; 6: begi n / / Car t ão Ver mel ho i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 7; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 7; end; end; end; I t emCombo. Fr ee; i f Mi nut osLance <> Mi nut oUl t i moLance t hen begi n St r Gr dEvent osJogo. Cel l s [ 2, Event o] : = i nt ToSt r ( Mi nut osLance) + ' ' ' ' ; Mi nut oUl t i moLance : = Mi nut osLance; end; BD. Cl nt Dt St LancesJogo. Next ; end;

Page 165: 5.1 Programa de Controle de Campeonatos de Futebol

165

Event o : = Event o + 1; end el se begi n i f ( Subst =Tr ue) t hen begi n i f BD. Cl nt Dt St Subst . Fi el dByName( ' CodEqui pe' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = ' I n: ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng + ' / Out : ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador _1' ) . asSt r i ng; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 1; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = ' I n: ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng + ' / Out : ' + BD. Cl nt Dt St Subst . Fi el dByName( ' Apel i doJogador _1' ) . asSt r i ng; I magensLanceJogo [ Event o, 1] : = 3; I magensLanceJogo [ Event o, 2] : = 1; end; i f Mi nut osSubst <> Mi nut oUl t i moLance t hen begi n St r Gr dEvent osJogo. Cel l s [ 2, Event o] : = i nt ToSt r ( Mi nut osSubst ) + ' ' ' ' ; Mi nut oUl t i moLance : = Mi nut osSubst ; end; BD. Cl nt Dt St Subst . Next ; end el se begi n i f ( Lance=Tr ue) t hen begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodLancePar t i da' ) . asI nt eger ) ; case BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Ti poLance' ) . AsI nt eger of 1: begi n / / Gol i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 2; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 2; end; end; 2: begi n / / Gol de Penal t i i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 3; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 3; end; end; 3: begi n / / Gol Cont r a i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 4; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo;

Page 166: 5.1 Programa de Controle de Campeonatos de Futebol

166

I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 4; end; end; 4: begi n / / Car t ão Amar el o i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 5; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 5; end; end; 5: begi n / / Car t ão Amar el o e Ver mel ho i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 6; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 6; end; end; 6: begi n / / Car t ão Ver mel ho i f BD. Cl nt Dt St LancesJogo. Fi el dByName( ' CodEqui peLance' ) . AsI nt eger = TC t hen begi n St r Gr dEvent osJogo. Cel l s [ 0, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 0, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 1; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 7; end el se begi n St r Gr dEvent osJogo. Cel l s [ 4, Event o] : = BD. Cl nt Dt St LancesJogo. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; St r Gr dEvent osJogo. Obj ect s[ 4, Event o] : = I t emCombo; I magensLanceJogo [ Event o, 1] : = 3; / / ( Col una da i magem , Ti po da I magem) I magensLanceJogo [ Event o, 2] : = 7; end; end; end; I t emCombo. Fr ee; i f Mi nut osLance <> Mi nut oUl t i moLance t hen begi n St r Gr dEvent osJogo. Cel l s [ 2, Event o] : = i nt ToSt r ( Mi nut osLance) + ' ' ' ' ; Mi nut oUl t i moLance : = Mi nut osLance; end; BD. Cl nt Dt St LancesJogo. Next ; end; end; Event o : = Event o + 1; end; Tot Event os : = Event o - 1; St r Gr dEvent osJogo. RowCount : = Event o + 1; unt i l ( ( Subst =Fal se) and ( Lance=Fal se) ) ; end; pr ocedur e TFr mLancesJogo. St r Gr dEvent osJogoDr awCel l ( Sender : TObj ect ; ACol ,

Page 167: 5.1 Programa de Controle de Campeonatos de Futebol

167

ARow: I nt eger ; Rect : TRect ; St at e: TGr i dDr awSt at e) ; var Text o: s t r i ng; X: I nt eger ; begi n / / Col oca Desenho i f ARow <= Tot Event os- 1 t hen begi n i f ( ACol = I magensLanceJogo[ ARow, 1] ) t hen begi n wi t h St r Gr dEvent osJogo. Canvas do begi n case I magensLanceJogo[ ARow, 2] of 1: Dr aw( Rect . Lef t , Rect . Top, I mgSubst . Pi ct ur e. Gr aphi c) ; 2: Dr aw( Rect . Lef t , Rect . Top, I mgGol . Pi ct ur e. Gr aphi c) ; 3: Dr aw( Rect . Lef t , Rect . Top, I mgGol Pen. Pi ct ur e. Gr aphi c) ; 4: Dr aw( Rect . Lef t , Rect . Top, I mgGol Cont r a. Pi ct ur e. Gr aphi c) ; 5: Dr aw( Rect . Lef t , Rect . Top, I mgAmar el o. Pi ct ur e. Gr aphi c) ; 6: Dr aw( Rect . Lef t , Rect . Top, I mgAmaVer . Pi ct ur e. Gr aphi c) ; 7: Dr aw( Rect . Lef t , Rect . Top, I mgVer mel ho. Pi ct ur e. Gr aphi c) ; end; end; end; end; Text o : = St r Gr dEvent osJogo. Cel l s [ ACol , ARow] ; i f ACol = 0 t hen begi n X : = Rect . Ri ght - St r Gr dEvent osJogo. Canvas. Text Wi dt h( Text o) - 2; St r Gr dEvent osJogo. Canvas. Text Rect ( Rect , X, Rect . Top+2, Text o) ; i f gdFocused i n St at e t hen begi n St r Gr dEvent osJogo. Canvas. Dr awFocusRect ( Rect ) ; end; end el se begi n i f ACol = 2 t hen begi n X : = Rect . Lef t + ( ( Rect . Ri ght - Rect . Lef t ) - St r Gr dEvent osJogo. Canvas. Text Wi dt h( Text o) ) di v 2; St r Gr dEvent osJogo. Canvas. Text Rect ( Rect , X, Rect . Top+2, Text o) ; i f gdFocused i n St at e t hen begi n St r Gr dEvent osJogo. Canvas. Dr awFocusRect ( Rect ) ; end; end; end; end; pr ocedur e TFr mLancesJogo. Bt nI nc l ui r Event oTFCl i ck( Sender : TObj ect ) ; var TC, TF: I nt eger ; Mi nut o: I nt eger ; TempoJogo: St r i ng; begi n TC : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ; TF : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ; TempoJogo : = CmbBxMi nut osFor a. Text ; Set Lengt h( TempoJogo, Lengt h( TempoJogo) - 1) ; Mi nut o : = St r ToI nt ( TempoJogo) ; t r y Case CmbBxEvent oFor a. I t emI ndex of 0: begi n i f Jogo. Get NumLancesGol sTF < Jogo. Get Gol sTi meFor a + Jogo. Get Gol sTi meFor aPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TF, TF, BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oFor a. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end; 1: begi n i f Jogo. Get NumLancesGol sTF < Jogo. Get Gol sTi meFor a + Jogo. Get Gol sTi meFor aPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TF, TF, BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oFor a. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end; 2: begi n

Page 168: 5.1 Programa de Controle de Campeonatos de Futebol

168

i f Jogo. Get NumLancesGol sTC < Jogo. Get Gol sTi meCasa + Jogo. Get Gol sTi meCasaPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TF, TC, BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oFor a. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end el se begi n Jogo. I nc l ui r LancePar t i da ( TF, TF, BD. Cl nt Dt St Jogador esFor a. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oFor a. I t emI ndex+1, Mi nut o) ; end; end; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar LancesJogo; end; pr ocedur e TFr mLancesJogo. For mDest r oy( Sender : TObj ect ) ; begi n BD. Dest r oy; Jogo. Dest r oy; Tempor ada. Dest r oy; end; pr ocedur e TFr mLancesJogo. St r Gr dEvent osJogoMouseDown( Sender : TObj ect ; But t on: TMouseBut t on; Shi f t : TShi f t St at e; X, Y: I nt eger ) ; var Poi nt : TPoi nt ; begi n Get Cur sor Pos( Poi nt ) ; i f But t on = mbRi ght t hen PopupMenu1. PopUp( Poi nt . X, Poi nt . Y) ; end; pr ocedur e TFr mLancesJogo. Excl ui r Event o1Cl i ck( Sender : TObj ect ) ; var Sel ec i onado: TRect ; X, Y: I nt eger ; begi n Sel ec i onado : = St r Gr dEvent osJogo. Sel ect i on; Y : = Sel ec i onado. Top; X : = Sel ec i onado. Ri ght ; t r y i f TI t emCombo( St r Gr dEvent osJogo. Obj ect s[ X, Y] ) . Get Oi d <> 0 t hen begi n Jogo. Excl ui r LancePar t i da( TI t emCombo( St r Gr dEvent osJogo. Obj ect s[ X, Y] ) . Get Oi d) ; TI t emCombo( St r Gr dEvent osJogo. Obj ect s[ X, Y] ) . Set Oi d( 0) ; Sel f . At ual i zar LancesJogo; end el se begi n ShowMessage ( ' ERRO: Não é possí vel exc l ui r o event o sel ec i onado' ) ; end; except on E: Except i on do begi n ShowMessage ( ' ERRO: Não é possí vel exc l ui r o event o sel ec i onado' ) ; end; end; end; pr ocedur e TFr mLancesJogo. Bt nI nc l ui r Event oTCCl i ck( Sender : TObj ect ) ; var TC, TF: I nt eger ; Mi nut o: I nt eger ; TempoJogo: St r i ng; begi n TC : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ; TF : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ; TempoJogo : = CmbBxMi nut osCasa. Text ; Set Lengt h( TempoJogo, Lengt h( TempoJogo) - 1) ; Mi nut o : = St r ToI nt ( TempoJogo) ; t r y Case CmbBxEvent oCasa. I t emI ndex of 0:

Page 169: 5.1 Programa de Controle de Campeonatos de Futebol

169

begi n i f Jogo. Get NumLancesGol sTC < Jogo. Get Gol sTi meCasa + Jogo. Get Gol sTi meCasaPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TC, TC, BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oCasa. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end; 1: begi n i f Jogo. Get NumLancesGol sTC < Jogo. Get Gol sTi meCasa + Jogo. Get Gol sTi meCasaPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TC, TC, BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oCasa. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end; 2: begi n i f Jogo. Get NumLancesGol sTF < Jogo. Get Gol sTi meFor a + Jogo. Get Gol sTi meFor aPr or r ogacao t hen begi n Jogo. I nc l ui r LancePar t i da ( TC, TF, BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oCasa. I t emI ndex+1, Mi nut o) ; end el se begi n ShowMessage ( ' Já For am i nc l usos t odos os event os de gol s dest e t i me' ) ; end; end el se begi n Jogo. I nc l ui r LancePar t i da ( TC, TC, BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' CodJogador ' ) . AsI nt eger , CmbBxEvent oCasa. I t emI ndex+1, Mi nut o) ; end; end; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar LancesJogo; end; pr ocedur e TFr mLancesJogo. ChckBxTi t ul ar esCasaCl i ck( Sender : TObj ect ) ; begi n Sel f . At ual i zar I nt er f aceTC; end; pr ocedur e TFr mLancesJogo. DBGr dTi t ul ar esCasaCel l Cl i ck( Col umn: TCol umn) ; begi n Pnl Jogador Event oCasa. Capt i on : = ' ' + BD. Cl nt Dt St Jogador esCasa. Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng; end; pr ocedur e TFr mLancesJogo. Bt nCadJogador esTFCl i ck( Sender : TObj ect ) ; var Fr mCadJogador : TFr mCadJogador ; begi n Fr mCadJogador : = TFr mCadJogador . Cr eat e( ni l ) ; Fr mCadJogador . Set BD( conBD) ; Fr mCadJogador . Most r ar ( Tempor ada, BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ) ; Fr mCadJogador . Dest r oy; Sel f . At ual i zar I nt er f aceTC; end; end. ============================================================================================ ARQUI VO: UI mpor t a. pas ============================================================================================

Page 170: 5.1 Programa de Controle de Campeonatos de Futebol

170

uni t UI I mpor t a; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . But t ons, Bor l and. Vcl . St dCt r l s , Syst em. Component Model , UDMDados, Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . Ext Ct r l s , FMTBcd, Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , UTempor ada, UI Equi peEqui val ent e, Bor l and. Vcl . ComCt r l s ; t ype TFr mI mpor t a = c l ass( TFor m) OpenDi al og1: TOpenDi al og; SQLDt St Fases: TSQLDat aSet ; Dt St Pr vdr Fases: TDat aSet Pr ovi der ; Cl nt Dt St Fases: TCl i ent Dat aSet ; Dt Sr cFases: TDat aSour ce; SQLDt St Gr upos: TSQLDat aSet ; Dt St Pr vdr Gr upos: TDat aSet Pr ovi der ; Cl nt Dt St Gr upos: TCl i ent Dat aSet ; Dt Sr cGr upos: TDat aSour ce; DBGr dRodadas: TDBGr i d; Panel 5: TPanel ; SQLDt St Rodadas: TSQLDat aSet ; Dt St Pr vdr Rodadas: TDat aSet Pr ovi der ; Cl nt Dt St Rodadas: TCl i ent Dat aSet ; Dt Sr cRodadas: TDat aSour ce; Lst BxJogos: TLi st Box; Panel 6: TPanel ; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ; Cl nt Dt St Dados: TCl i ent Dat aSet ; I mgBr anco: TI mage; Panel 7: TPanel ; Panel 8: TPanel ; Label 1: TLabel ; Lst BxCampos: TLi st Box; Lst BxCamposI mpor t ados: TLi st Box; Bt nI nc l ui r Campo: TBut t on; Bt nExcl ui r Campo: TBut t on; But t on1: TBut t on; Edt NomeAr qui vo: TEdi t ; Panel 3: TPanel ; DBGr dGr upos: TDBGr i d; DBGr dFases: TDBGr i d; Panel 4: TPanel ; Panel 1: TPanel ; Panel 2: TPanel ; Pr gr ssBr Li nhas: TPr ogr essBar ; Pnl Li nhas: TPanel ; Label 2: TLabel ; Dt TmPckr Dat aJogo: TDat eTi mePi cker ; Bt nI mpor t ar : TBi t Bt n; Bt nFechar : TBi t Bt n; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r CampoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r CampoCl i ck( Sender : TObj ect ) ; pr ocedur e Lst BxCamposDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Lst BxCamposI mpor t adosDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e But t on1Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI mpor t ar Cl i ck( Sender : TObj ect ) ; pr ocedur e For mCr eat e( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; Tempor ada: TTempor ada; NumRodadas: I nt eger ; Fr mEqui peEqui val ent e: TFr mEqui peEqui val ent e; Fot o1, Fot o2 : TMemor ySt r eam; publ i c { Publ i c decl ar at i ons } pr ocedur e Most r ar ( umaTemp: TTempor ada) ;

Page 171: 5.1 Programa de Controle de Campeonatos de Futebol

171

pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; pr ocedur e At ual i zar Fases; pr ocedur e At ual i zar Gr upos; pr ocedur e At ual i zar Rodadas; pr ocedur e Adi c i onar Rodada; pr ocedur e Gr avaJogo; end; var Fr mI mpor t a: TFr mI mpor t a; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mI mpor t a. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end; pr ocedur e TFr mI mpor t a. Most r ar ( umaTemp: TTempor ada) ; begi n Tempor ada : = umaTemp; Fr mEqui peEqui val ent e : = TFr mEqui peEqui val ent e. Cr eat e( ni l ) ; Fr mEqui peEqui val ent e. Set BD( conBD) ; Fr mEqui peEqui val ent e. Set Tempor ada( Tempor ada) ; Sel f . At ual i zar Fases; Sel f . ShowModal ; end; pr ocedur e TFr mI mpor t a. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mI mpor t a. Bt nI nc l ui r CampoCl i ck( Sender : TObj ect ) ; begi n i f Lst BxCampos. i t emi ndex >= 0 t hen begi n Lst BxCamposI mpor t ados. I t ems. Add( Lst BxCampos. i t ems[ Lst BxCampos. i t emi ndex] ) ; Lst BxCampos. I t ems. del et e( Lst BxCampos. i t emi ndex) ; end; end; pr ocedur e TFr mI mpor t a. Bt nExcl ui r CampoCl i ck( Sender : TObj ect ) ; begi n i f Lst BxCamposI mpor t ados. i t emi ndex >= 0 t hen begi n Lst BxCampos. I t ems. Add( Lst BxCamposI mpor t ados. i t ems[ Lst BxCamposI mpor t ados. i t emi ndex] ) ; Lst BxCamposI mpor t ados. I t ems. del et e( Lst BxCamposI mpor t ados. i t emi ndex) ; end; end; pr ocedur e TFr mI mpor t a. Lst BxCamposDbl Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nI nc l ui r CampoCl i ck( Sender ) ; end; pr ocedur e TFr mI mpor t a. Lst BxCamposI mpor t adosDbl Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nExcl ui r CampoCl i ck( Sender ) ; end; pr ocedur e TFr mI mpor t a. But t on1Cl i ck( Sender : TObj ect ) ; begi n i f OpenDi al og1. Execut e t hen begi n Edt NomeAr qui vo. Text : = OpenDi al og1. Fi l eName; end; end; pr ocedur e TFr mI mpor t a. Bt nI mpor t ar Cl i ck( Sender : TObj ect ) ; var Ar qui vo: Text Fi l e; Li nha, Pal avr a, Let r a, Let r aAnt er i or : St r i ng; TamLi nha, i : I nt eger ; Comecou, NovaRodada: Bool ean; begi n Pr gr ssBr Li nhas. Max : = 0; Pr gr ssBr Li nhas. Mi n : = 0; Pr gr ssBr Li nhas. Posi t i on : = 0;

Page 172: 5.1 Programa de Controle de Campeonatos de Futebol

172

i f f i l eExi st s( Edt NomeAr qui vo. Text ) t hen begi n ass i gnFi l e( Ar qui vo, Edt NomeAr qui vo. Text ) ; r eset ( Ar qui vo) ; whi l e not eof ( Ar qui vo) do begi n r eadl n( Ar qui vo) ; Pr gr ssBr Li nhas. Max : = Pr gr ssBr Li nhas. Max + 1; end; r eset ( Ar qui vo) ; r eadl n( Ar qui vo, Li nha) ; NovaRodada : = Tr ue; whi l e not eof ( Ar qui vo) do begi n Comecou : = Fal se; Let r aAnt er i or : = ' ' ; TamLi nha : = l engt h( Li nha) ; i f TamLi nha < 11 t hen begi n t r y Dt TmPckr Dat aJogo. Dat eTi me : = St r ToDat eTi me ( Li nha) ; Except on E: Except i on do begi n NovaRodada : = Tr ue; end; end; end el se begi n f or i : = 1 t o TamLi nha do begi n i f Li nha[ i ] = #9 t hen begi n Let r a : = ' ' ; end el se begi n Let r a : = Li nha[ i ] ; end; i f ( ( Let r a = ' ' ) and ( ( Let r aAnt er i or = ' ' ) or ( Let r aAnt er i or = ' ' ) ) ) t hen begi n Let r a : = ' ' ; end; i f Let r a <> ' ' t hen begi n i f not Comecou t hen begi n Pal avr a : = Let r a; Comecou : = Tr ue; end el se begi n i f Let r a <> ' ' t hen begi n Pal avr a : = Pal avr a + Let r a; end; end; end el se begi n i f Comecou t hen begi n Lst BxJogos. I t ems. Add( Pal avr a) ; comecou : = f al se; end; end; Let r aAnt er i or : = Let r a; end; i f Comecou t hen begi n Lst BxJogos. I t ems. Add( Pal avr a) ; Comecou : = Fal se; end; i f NovaRodada = Tr ue t hen begi n Sel f . Adi c i onar Rodada; Cl nt Dt St Rodadas. Last ; NovaRodada : = Fal se; end; Sel f . Gr avaJogo; end; Pr gr ssBr Li nhas. Posi t i on : = Pr gr ssBr Li nhas. Posi t i on + 1; Pnl Li nhas. Capt i on : = I nt ToSt r ( Pr gr ssBr Li nhas. Posi t i on) + ' Li nhas Li das de ' + I nt ToSt r ( Pr gr ssBr Li nhas. Max) ; r eadl n( Ar qui vo, Li nha) ; end; Cl oseFi l e( Ar qui vo) ; end el se begi n ShowMessage ( ' Ar qui vo I nexi st ent e' ) ; end; end; pr ocedur e TFr mI mpor t a. At ual i zar Fases; begi n SQLDt St Fases. Par amByName( ' codTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Fases. Cl ose;

Page 173: 5.1 Programa de Controle de Campeonatos de Futebol

173

Cl nt Dt St Fases. Open; Cl nt Dt St Fases. Fi r s t ; Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mI mpor t a. At ual i zar Gr upos; begi n SQLDt St Gr upos. Par amByName( ' CodFase' ) . AsI nt eger : = Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Cl nt Dt St Gr upos. Cl ose; Cl nt Dt St Gr upos. Open; Cl nt Dt St Gr upos. Fi r s t ; Sel f . At ual i zar Rodadas; end; pr ocedur e TFr mI mpor t a. At ual i zar Rodadas; var SQL: St r i ng; begi n SQLDt St Rodadas. Par amByName( ' CodGr upo' ) . AsI nt eger : = Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Cl nt Dt St Rodadas. Cl ose; Cl nt Dt St Rodadas. Open; Cl nt Dt St Rodadas. Fi r s t ; SQL : = ' Sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODGRUPO=' + Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumRodadas : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; end; pr ocedur e TFr mI mpor t a. Adi c i onar Rodada; begi n t r y i f NumRodadas < 9 t hen begi n Tempor ada. I nc l ui r Rodada( ' 0' +I nt ToSt r ( NumRodadas+1) , Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger , Cl nt Dt St Gr upos. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; end el se begi n Tempor ada. I nc l ui r Rodada( I nt ToSt r ( NumRodadas+1) , Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger , Cl nt Dt St Gr upos. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; end; Sel f . At ual i zar Rodadas; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mI mpor t a. Gr avaJogo; var i , CodEst Temp, CodEqui peCasa, CodEqui peFor a, Gol sEqui peCasa, Gol sEqui peFor a, Publ i co, Real i zado, CodEst adi o: I nt eger ; begi n i f Lst BxJogos. I t ems. Count <> Lst BxCamposI mpor t ados. I t ems. Count t hen begi n ShowMessage( ' Er r o na Li nha' ) ; end el se begi n CodEqui peCasa : = 0; CodEst adi o : = 0; CodEqui peFor a : = 0; Gol sEqui peCasa : = 0; Gol sEqui peFor a : = 0; Publ i co : = 0; Real i zado : = 0; f or i : = 0 t o Lst BxCamposI mpor t ados. i t ems. Count - 1 do begi n i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Equi pe da Casa' t hen begi n CodEqui peCasa : = Fr mEqui peEqui val ent e. Ret or neCodi goEqui pe( Lst BxJogos. I t ems[ i ] ) ; CodEst adi o : = Fr mEqui peEqui val ent e. Get CodEst adi o( CodEqui peCasa) ; end; i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Equi pe Vi s i t ant e' t hen begi n CodEqui peFor a : = Fr mEqui peEqui val ent e. Ret or neCodi goEqui pe( Lst BxJogos. I t ems[ i ] ) ; end;

Page 174: 5.1 Programa de Controle de Campeonatos de Futebol

174

i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Gol s Equi pe da Casa' t hen begi n Gol sEqui peCasa : = St r ToI nt ( Lst BxJogos. I t ems[ i ] ) ; end; i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Gol s Equi pe Vi s i t ant e' t hen begi n Gol sEqui peFor a : = St r ToI nt ( Lst BxJogos. I t ems[ i ] ) ; Real i zado : = 1; end; i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Dat a' t hen begi n Dt TmPckr Dat aJogo. Dat eTi me : = St r ToDat eTi me( Lst BxJogos. I t ems[ i ] ) ; end; i f Lst BxCamposI mpor t ados. I t ems[ i ] = ' Públ i co' t hen begi n Publ i co : = St r ToI nt ( Lst BxJogos. I t ems[ i ] ) ; end; end; CodEst Temp : = Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; t r y Tempor ada. NovoJogo( CodEst Temp, CodEqui peCasa, CodEqui peFor a, Dt TmPckr Dat aJogo. Dat eTi me, 0, CodEst adi o, Real i zado, Gol sEqui peCasa, Gol sEqui peFor a, 0, 0, 0, 0, 0, 0, Publ i co, 0, 0, 0, 0, 0, 0, 0, 0, ' ' , ' ' , Fot o1, Fot o2) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Cont act e o Supor t e' ) ; end; end; Lst BxJogos. I t ems. Cl ear ; end; end; pr ocedur e TFr mI mpor t a. For mCr eat e( Sender : TObj ect ) ; begi n Fot o1 : = TMemor ySt r eam. Cr eat e; Fot o2 : = TMemor ySt r eam. Cr eat e; I mgBr anco. Pi ct ur e. Gr aphi c. SaveToSt r eam( Fot o1) ; I mgBr anco. Pi ct ur e. Gr aphi c. SaveToSt r eam( Fot o2) ; end; pr ocedur e TFr mI mpor t a. For mDest r oy( Sender : TObj ect ) ; begi n Fot o1. Fr ee; Fot o2. Fr ee; Fr mEqui peEqui val ent e. Dest r oy; end; pr ocedur e TFr mI mpor t a. DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; begi n Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mI mpor t a. DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; begi n Sel f . At ual i zar Rodadas; end; end. ============================================================================================ ARQUI VO: UI Escal acao. pas ============================================================================================ uni t UI Escal acao; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . Gr i ds, Syst em. Component Model , Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . But t ons, UDMI Escal acao, UDMDados, UTempor ada, UI t emCombo, Bor l and. Vcl . DBGr i ds, FMTBcd, DBXpr ess, Bor l and. Vcl . Db, Bor l and. Vcl . Sql Expr , UJogo, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , UI CadJogador ; t ype TFr mEscal acao = c l ass( TFor m) TPageCont r ol 1: TPageCont r ol ; TbSht Ti meCasa: TTabSheet ;

Page 175: 5.1 Programa de Controle de Campeonatos de Futebol

175

TbSht Ti meFor a: TTabSheet ; Panel 1: TPanel ; Gr pBxSubFor a: TGr oupBox; Label 1: TLabel ; Label 2: TLabel ; Label 3: TLabel ; CmbBxReser vasFor a: TComboBox; CmbBxTi t ul ar esFor a: TComboBox; CmbBxMi nut osFor a: TComboBox; Bt nSubFor a: TBut t on; Bt nEscal ar JF: TBut t on; Bt nDesEscal ar JF: TBut t on; Pnl Ti meFor a: TPanel ; Bt nFechar : TBi t Bt n; Bt nCadJogador esTF: TBut t on; DBGr dJogador esFor a: TDBGr i d; DBGr dTi t ul ar esFor a: TDBGr i d; Gr pBxSubFei t asFor a: TGr oupBox; Bt nRemover Subst 1TF: TBut t on; Bt nRemover Subst 2TF: TBut t on; Bt nRemover Subst 3TF: TBut t on; SQLDt St Jogador For a: TSQLDat aSet ; Dt St Pr vdr Jogador For a: TDat aSet Pr ovi der ; Cl nt Dt St Jogador For a: TCl i ent Dat aSet ; Cl nt Dt St Jogador For aCODJOGADOR: TI nt eger Fi el d; Cl nt Dt St Jogador For aCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Jogador For aCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Jogador For aAPELI DOJOGADOR: TSt r i ngFi el d; Cl nt Dt St Jogador For aNOMEJOGADOR: TSt r i ngFi el d; Cl nt Dt St Jogador For aNUMEROCAMI SA: TI nt eger Fi el d; Cl nt Dt St Jogador For aDATANASCI MENTO: TDat eFi el d; Cl nt Dt St Jogador For aNACI ONALI DADE: TSt r i ngFi el d; Cl nt Dt St Jogador For aPOSI CAO: TI nt eger Fi el d; Cl nt Dt St Jogador For aSTATUS: TSt r i ngFi el d; Cl nt Dt St Jogador For aEMAI L: TSt r i ngFi el d; Cl nt Dt St Jogador For aFOTO: TBl obFi el d; Dt Sr cJogador For a: TDat aSour ce; SQLDt St EscJogoFor a: TSQLDat aSet ; Dt St Pr vdr EscJogoFor a: TDat aSet Pr ovi der ; Cl nt Dt St EscJogoFor a: TCl i ent Dat aSet ; Cl nt Dt St EscJogoFor aCODJOGADOR: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aAPELI DOJOGADOR: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aNOMEJOGADOR: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aNUMEROCAMI SA: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aDATANASCI MENTO: TDat eFi el d; Cl nt Dt St EscJogoFor aNACI ONALI DADE: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aPOSI CAO: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aEMAI L: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aFOTO: TBl obFi el d; Cl nt Dt St EscJogoFor aCODJOGO: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aCODJOGADOR_1: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aSTATUS_1: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aCODJOGADORENTROU: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aPos: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aMi n: TSt r i ngFi el d; Dt Sr cEscJogoFor a: TDat aSour ce; Panel 2: TPanel ; Panel 8: TPanel ; I mgJF: TI mage; Lbl NomeJF: TLabel ; Lbl Cami saJF: TLabel ; Lbl Posi caoJF: TLabel ; Lbl I dadeJF: TLabel ; Lbl Naci onal i dadeJF: TLabel ; Cl nt Dt St EscJogoFor aSAI U: TSt r i ngFi el d; Cl nt Dt St EscJogoFor aSTATUS: TSt r i ngFi el d; Panel 3: TPanel ; Gr pBxSubCasa: TGr oupBox; Label 4: TLabel ; Label 5: TLabel ; Label 6: TLabel ; CmbBxReser vasCasa: TComboBox; CmbBxTi t ul ar esCasa: TComboBox; CmbBxMi nut osCasa: TComboBox;

Page 176: 5.1 Programa de Controle de Campeonatos de Futebol

176

Bt nSubCasa: TBut t on; Bt nEscal ar JC: TBut t on; Bt nDesEscal ar JC: TBut t on; Pnl Ti meCasa: TPanel ; Bt nCadJogador esTC: TBut t on; DBGr dJogador esCasa: TDBGr i d; DBGr dTi t ul ar esCasa: TDBGr i d; Gr pBxSubFei t asCasa: TGr oupBox; Bt nRemover Subst 1TC: TBut t on; Bt nRemover Subst 2TC: TBut t on; Bt nRemover Subst 3TC: TBut t on; Panel 5: TPanel ; Lbl NomeJC: TLabel ; Lbl Cami saJC: TLabel ; Lbl Posi caoJC: TLabel ; Lbl I dadeJC: TLabel ; Lbl Naci onal i dadeJC: TLabel ; Panel 6: TPanel ; I mgJC: TI mage; SQLDt St EscJogoCasa: TSQLDat aSet ; Dt St Pr vdr EscJogoCasa: TDat aSet Pr ovi der ; Cl nt Dt St EscJogoCasa: TCl i ent Dat aSet ; Dt Sr cEscJogoCasa: TDat aSour ce; SQLDt St Jogador Casa: TSQLDat aSet ; Dt St Pr vdr Jogador Casa: TDat aSet Pr ovi der ; Cl nt Dt St Jogador Casa: TCl i ent Dat aSet ; I nt eger Fi el d11: TI nt eger Fi el d; I nt eger Fi el d12: TI nt eger Fi el d; I nt eger Fi el d13: TI nt eger Fi el d; St r i ngFi el d10: TSt r i ngFi el d; St r i ngFi el d11: TSt r i ngFi el d; I nt eger Fi el d14: TI nt eger Fi el d; Dat eFi el d2: TDat eFi el d; St r i ngFi el d12: TSt r i ngFi el d; I nt eger Fi el d15: TI nt eger Fi el d; St r i ngFi el d13: TSt r i ngFi el d; St r i ngFi el d14: TSt r i ngFi el d; Bl obFi el d2: TBl obFi el d; Dt Sr cJogador Casa: TDat aSour ce; Cl nt Dt St EscJogoCasaCODJOGADOR: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaAPELI DOJOGADOR: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaNOMEJOGADOR: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaNUMEROCAMI SA: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaDATANASCI MENTO: TDat eFi el d; Cl nt Dt St EscJogoCasaNACI ONALI DADE: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaPOSI CAO: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaSTATUS: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaEMAI L: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaFOTO: TBl obFi el d; Cl nt Dt St EscJogoCasaCODJOGO: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaCODJOGADOR_1: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaCODJOGADORENTROU: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaSTATUS_1: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaSAI U: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaPos: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaMi n: TSt r i ngFi el d; Cl nt Dt St EscJogoCasaTEMPOJOGADO: TI nt eger Fi el d; Cl nt Dt St EscJogoCasaMI NUTOSUBSTI TUI CAO: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aTEMPOJOGADO: TI nt eger Fi el d; Cl nt Dt St EscJogoFor aMI NUTOSUBSTI TUI CAO: TI nt eger Fi el d; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Cl nt Dt St EscJogoFor aCal cFi el ds( Dat aSet : TDat aSet ) ; pr ocedur e DBGr dTi t ul ar esFor aCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e Bt nEscal ar JFCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nDesEscal ar JFCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dJogador esFor aDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nSubFor aCl i ck( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e Cl nt Dt St EscJogoCasaCal cFi el ds( Dat aSet : TDat aSet ) ; pr ocedur e Bt nEscal ar JCCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nDesEscal ar JCCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nSubCasaCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nRemover Subst 1TCCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nRemover Subst 2TCCl i ck( Sender : TObj ect ) ;

Page 177: 5.1 Programa de Controle de Campeonatos de Futebol

177

pr ocedur e Bt nRemover Subst 3TCCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nRemover Subst 1TFCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nRemover Subst 2TFCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nRemover Subst 3TFCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dTi t ul ar esCasaCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dJogador esCasaDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCadJogador esTCCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCadJogador esTFCl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } BD: TDt Mdl I Escal acao; conBD: TDt Mdl Dados; Jogo: TJogo; CodJogo: I nt eger ; Tempor ada: TTempor ada; codTempor ada: I nt eger ; Mi nut os: I nt eger ; Subst i t ui coesTF: Ar r ay [ 1. . 3, 1. . 2] of I nt eger ; Subst i t ui coesTC: Ar r ay [ 1. . 3, 1. . 2] of I nt eger ; NumJogador esEscal adosTF, NumJogador esEscal adosTC: I nt eger ; NumSubst Ef et uadasTF, NumSubst Ef et uadasTC: I nt eger ; NumJogI nscTF, NumJogI nscTC: I nt eger ; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Def i ni r Escal acao ( umaTempor ada: TTempor ada; umCodJogo: I nt eger ) ; pr ocedur e At ual i zar I nt er f aceTF; pr ocedur e At ual i zar I nt er f aceTC; pr ocedur e Remover Subst i t ui caoTC ( i : I nt eger ) ; pr ocedur e Remover Subst i t ui caoTF ( i : I nt eger ) ; end; var Fr mEscal acao: TFr mEscal acao; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mEscal acao. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n BD : = TDt Mdl I Escal acao. Cr eat e( ni l ) ; BD. Set ConexaoBD ( umaConBD) ; conBD : = umaConBD; end; pr ocedur e TFr mEscal acao. Def i ni r Escal acao ( umaTempor ada: TTempor ada; umCodJogo: I nt eger ) ; begi n CodJogo : = umCodJogo; Tempor ada : = UmaTempor ada; CodTempor ada : = Tempor ada. Get CodTempor ada; BD. SQLDt St Jogo. Par amByName( ' Cod' ) . asI nt eger : = CodJogo; BD. Cl nt Dt St Jogo. Cl ose; BD. Cl nt Dt St Jogo. Open; BD. Cl nt Dt St Jogo. Fi r s t ; Jogo : = TJogo. Cr eat e; Jogo. Set BD ( ConBD) ; Jogo. Mat er i al i zar ( umCodJogo) ; sel f . At ual i zar I nt er f aceTC; sel f . At ual i zar I nt er f aceTF; TbSht Ti meCasa. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; TbSht Ti meFor a. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe_1' ) . AsSt r i ng; Pnl Ti meCasa. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; Pnl Ti meFor a. Capt i on : = BD. Cl nt Dt St Jogo. Fi el dByName( ' NomeEqui pe_1' ) . AsSt r i ng; TPageCont r ol 1. Act i vePage : = TbSht Ti meCasa; ShowModal ; end; pr ocedur e TFr mEscal acao. At ual i zar I nt er f aceTF; var I t emCombo: TI t emCombo; i : I nt eger ; SQL: St r i ng; begi n / / Dest r oi os obj et os dent r o dos ComboBox se houver em. i : = 1; whi l e ( i < CmbBxReser vasFor a. I t ems. Count ) do begi n

Page 178: 5.1 Programa de Controle de Campeonatos de Futebol

178

TI t emCombo( CmbBxReser vasFor a. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; i : = 1; whi l e ( i < CmbBxTi t ul ar esFor a. I t ems. Count ) do begi n TI t emCombo( CmbBxTi t ul ar esFor a. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; / / Ver i f i ca quant os j ogador es j á f or am escal ados como t i t ul ar es na Equi pe For a SQL : = ' sel ect Count ( * ) f r om Escal acaoJogo EJ wher e EJ. CodJogo = ' + I nt ToSt r ( CodJogo) ; SQL : = SQL + ' and EJ. CodEqui pe = ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsSt r i ng + ' and STATUS=' ' T' ' ' ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumJogador esEscal adosTF : = Fi el dByName( ' Count ' ) . asI nt eger ; end; / / Ver i f i ca quant os Jogador es a equi pe t em i nscr i t a no campeonat o e que ai nda não f or a escal adas SQL : = ' sel ect Count ( * ) f r om Jogador J wher e J. CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsSt r i ng; SQL : = SQL + ' AND J. CodTempor ada=' + I nt ToSt r ( CodTempor ada) + ' AND J. CodJogador not i n ( sel ect CodJogador f r om Escal acaoJogo wher e CodJogo=' ; SQL : = SQL + I nt ToSt r ( CodJogo) + ' AND CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsSt r i ng + ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumJogI nscTF : = Fi el dByName( ' Count ' ) . asI nt eger ; end; / / Habi l i t a bot ão de r emover Escal ação se exi s t e pel o menos 1 j ogador escal ado e desabi l i t a bot ão de escal acao se j á t em 11 j ogador es escal ados i f NumJogI nscTF > 0 t hen begi n Bt nEscal ar JF. Enabl ed : = Tr ue; end el se begi n Bt nEscal ar JF. Enabl ed : = Fal se; end; i f NumJogador esEscal adosTF > 0 t hen begi n Bt nDesEscal ar JF. Enabl ed : = Tr ue; i f NumJogador esEscal adosTF >= 11 t hen begi n Bt nEscal ar JF. Enabl ed : = Fal se; end; end el se begi n Bt nDesEscal ar JF. Enabl ed : = Fal se; end; SQLDt St Jogador For a. Par amByName( ' CodEqui pe' ) . asI nt eger : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ; SQLDt St Jogador For a. Par amByName( ' CodTemp' ) . asI nt eger : = CodTempor ada; SQLDt St Jogador For a. Par amByName( ' CodJogo' ) . asI nt eger : = CodJogo; Cl nt Dt St Jogador For a. Cl ose; Cl nt Dt St Jogador For a. Open; SQLDt St EscJogoFor a. Par amByName( ' CodEqui pe' ) . asI nt eger : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ; SQLDt St EscJogoFor a. Par amByName( ' CodJogo' ) . asI nt eger : = CodJogo; / / At ual i za Combo dos Mi nut os da Subst i t ui ção mi nut os : = 90; CmbBxMi nut osFor a. I t ems. Cl ear ; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Real i zado' ) . AsI nt eger = 1 t hen begi n / / Ver i f i ca quant os j ogador es j á f or am Subst i t ui dos na Equi pe For a SQL : = ' sel ect * f r om Jogador JT, Jogador JR, Escal acaoJogo EJ wher e EJ. CodJogo = ' + I nt ToSt r ( CodJogo) + ' and EJ. CodEqui pe = ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsSt r i ng + ' and JT. CodJogador = EJ. CodJogador and JR. CodJogador = EJ. CodJogador Ent r ou and EJ. Sai u = ' ' S' ' ' ; BD. SQLDt St Dados. CommandText : = SQL; NumSubst Ef et uadasTF : = 0; Bt nRemover Subst 1TF. Enabl ed : = Fal se; Bt nRemover Subst 2TF. Enabl ed : = Fal se; Bt nRemover Subst 3TF. Enabl ed : = Fal se; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ;

Page 179: 5.1 Programa de Controle de Campeonatos de Futebol

179

whi l e not eof do begi n NumSubst Ef et uadasTF : = NumSubst Ef et uadasTF + 1; i f NumSubst Ef et uadasTF = 1 t hen begi n Bt nRemover Subst 1TF. Enabl ed : = Tr ue; Bt nRemover Subst 1TF. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Gr pBxSubFor a. Capt i on : = ' Subst i t ui ção 2' ; Subst i t ui coesTF[ 1, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTF[ 1, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end el se begi n i f NumSubst Ef et uadasTF = 2 t hen begi n Bt nRemover Subst 2TF. Enabl ed : = Tr ue; Bt nRemover Subst 2TF. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Gr pBxSubFor a. Capt i on : = ' Subst i t ui ção 3' ; Subst i t ui coesTF[ 2, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTF[ 2, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end el se begi n Bt nRemover Subst 3TF. Enabl ed : = Tr ue; Bt nRemover Subst 3TF. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Bt nSubFor a. Enabl ed : = Fal se; Subst i t ui coesTF[ 3, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTF[ 3, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end; end; Next ; end; end; Gr pBxSubFor a. Capt i on : = ' Subst i t ui ção ' + I nt ToSt r ( NumSubst Ef et uadasTF + 1) ; i f ( ( NumSubst Ef et uadasTF < 3) and ( NumJogI nscTF > 0) and ( NumJogador esEscal adosTF > 0) ) t hen begi n Bt nSubFor a. Enabl ed : = Tr ue; end el se begi n Bt nSubFor a. Enabl ed : = Fal se; end; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . AsI nt eger = 1 t hen mi nut os : = 120; end; f or i : =1 t o mi nut os do begi n CmbBxMi nut osFor a. I t ems. Add( I nt ToSt r ( i ) + ' ' ' ' ) ; end; CmbBxMi nut osFor a. I t emI ndex : = 0; / / At ual i za Combo dos Jogador es Reser vas que podem ent r ar no j ogo CmbBxReser vasFor a. I t ems. Cl ear ; wi t h Cl nt Dt St Jogador For a do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng) ; CmbBxReser vasFor a. I t ems. AddObj ect ( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng, I t emCombo) ; Next ; end; CmbBxReser vasFor a. I t emI ndex : = 0; Fi r s t ; end; / / At ual i za Combo dos Jogador es Ti t ul ar es que podem ser subst i t ui dos no j ogo CmbBxTi t ul ar esFor a. I t ems. Cl ear ; wi t h Cl nt Dt St EscJogoFor a do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n i f Fi el dByName( ' Sai u' ) . asSt r i ng <> ' S' t hen begi n / / Se j á subst i t ui do não apar ece I t emCombo : = TI t emCombo. Cr eat e;

Page 180: 5.1 Programa de Controle de Campeonatos de Futebol

180

I t emCombo. Set Oi d( Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng) ; CmbBxTi t ul ar esFor a. I t ems. AddObj ect ( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng, I t emCombo) ; end; Next ; end; CmbBxTi t ul ar esFor a. I t emI ndex : = 0; Fi r s t ; end; / / Most r a dados Compl et os do j ogador sel ec i onado i f NumJogador esEscal adosTF > 0 t hen begi n Lbl NomeJF. Capt i on : = Cl nt Dt St EscJogoFor a. Fi el dByName( ' NomeJogador ' ) . asSt r i ng; Lbl Cami saJF. Capt i on : = ' Cami sa Nº : ' + Cl nt Dt St EscJogoFor a. Fi el dByName( ' Numer oCami sa' ) . asSt r i ng; case Cl nt Dt St EscJogoFor a. Fi el dByName( ' Posi cao' ) . asI nt eger of 1 : Lbl Posi caoJF. Capt i on : = ' GOLEI RO' ; 2 : Lbl Posi caoJF. Capt i on : = ' LATERAL' ; 3 : Lbl Posi caoJF. Capt i on : = ' ZAGUEI RO' ; 4 : Lbl Posi caoJF. Capt i on : = ' MEI O- CAMPO' ; 5 : Lbl Posi caoJF. Capt i on : = ' ATACANTE' ; end; Lbl I dadeJF. Capt i on : = ' I dade: ' + For mat Dat eTi me( ' yy ' , ( Dat e - Cl nt Dt St EscJogoFor a. Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me) ) + ' Anos' ; Lbl Naci onal i dadeJF. Capt i on : = Cl nt Dt St EscJogoFor a. Fi el dByName( ' Naci onal i dade' ) . asSt r i ng; I mgJF. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St EscJogoFor a. Cr eat eBl obSt r eam( Cl nt Dt St EscJogoFor a. Fi el dByName( ' Fot o' ) , bmRead) ) ; end el se begi n Lbl NomeJF. Capt i on : = ' ' ; Lbl Cami saJF. Capt i on : = ' ' ; Lbl Posi caoJF. Capt i on : = ' ' ; Lbl I dadeJF. Capt i on : = ' ' ; Lbl Naci onal i dadeJF. Capt i on : = ' ' ; I mgJF. Pi ct ur e. Bi t map. Fr eeI mage; end; end; pr ocedur e TFr mEscal acao. At ual i zar I nt er f aceTC; var I t emCombo: TI t emCombo; i : I nt eger ; SQL: St r i ng; begi n / / Dest r oi os obj et os dent r o dos ComboBox se houver em. i : = 1; whi l e ( i < CmbBxReser vasCasa. I t ems. Count ) do begi n TI t emCombo( CmbBxReser vasCasa. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; i : = 1; whi l e ( i < CmbBxTi t ul ar esCasa. I t ems. Count ) do begi n TI t emCombo( CmbBxTi t ul ar esCasa. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; / / Ver i f i ca quant os j ogador es j á f or am escal ados como t i t ul ar es na Equi pe For a SQL : = ' sel ect Count ( * ) f r om Escal acaoJogo EJ wher e EJ. CodJogo = ' + I nt ToSt r ( CodJogo) ; SQL : = SQL + ' and EJ. CodEqui pe = ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsSt r i ng + ' and STATUS=' ' T' ' ' ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumJogador esEscal adosTC : = Fi el dByName( ' Count ' ) . asI nt eger ; end; / / Ver i f i ca quant os Jogador es a equi pe t em i nscr i t a no campeonat o e que ai nda não f or a escal adas SQL : = ' sel ect Count ( * ) f r om Jogador J wher e J. CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsSt r i ng; SQL : = SQL + ' AND J. CodTempor ada=' + I nt ToSt r ( CodTempor ada) + ' AND J. CodJogador not i n ( sel ect CodJogador f r om Escal acaoJogo wher e CodJogo=' ; SQL : = SQL + I nt ToSt r ( CodJogo) + ' AND CodEqui pe=' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsSt r i ng + ' ) ' ; BD. SQLDt St Dados. CommandText : = SQL;

Page 181: 5.1 Programa de Controle de Campeonatos de Futebol

181

wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumJogI nscTC : = Fi el dByName( ' Count ' ) . asI nt eger ; end; / / Habi l i t a bot ão de r emover Escal ação se exi s t e pel o menos 1 j ogador escal ado e desabi l i t a bot ão de escal acao se j á t em 11 j ogador es escal ados i f NumJogI nscTC > 0 t hen begi n Bt nEscal ar JC. Enabl ed : = Tr ue; end el se begi n Bt nEscal ar JC. Enabl ed : = Fal se; end; i f NumJogador esEscal adosTC > 0 t hen begi n Bt nDesEscal ar JC. Enabl ed : = Tr ue; i f NumJogador esEscal adosTC >= 11 t hen begi n Bt nEscal ar JC. Enabl ed : = Fal se; end; end el se begi n Bt nDesEscal ar JC. Enabl ed : = Fal se; end; SQLDt St Jogador Casa. Par amByName( ' CodEqui pe' ) . asI nt eger : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ; SQLDt St Jogador Casa. Par amByName( ' CodTemp' ) . asI nt eger : = CodTempor ada; SQLDt St Jogador Casa. Par amByName( ' CodJogo' ) . asI nt eger : = CodJogo; Cl nt Dt St Jogador Casa. Cl ose; Cl nt Dt St Jogador Casa. Open; SQLDt St EscJogoCasa. Par amByName( ' CodEqui pe' ) . asI nt eger : = BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ; SQLDt St EscJogoCasa. Par amByName( ' CodJogo' ) . asI nt eger : = CodJogo; / / At ual i za Combo dos Mi nut os da Subst i t ui ção mi nut os : = 90; CmbBxMi nut osCasa. I t ems. Cl ear ; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Real i zado' ) . AsI nt eger = 1 t hen begi n / / Ver i f i ca quant os j ogador es j á f or am Subst i t ui dos na Equi pe For a SQL : = ' sel ect * f r om Jogador JT, Jogador JR, Escal acaoJogo EJ wher e EJ. CodJogo = ' + I nt ToSt r ( CodJogo) + ' and EJ. CodEqui pe = ' + BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsSt r i ng + ' and JT. CodJogador = EJ. CodJogador and JR. CodJogador = EJ. CodJogador Ent r ou and EJ. Sai u = ' ' S' ' ' ; BD. SQLDt St Dados. CommandText : = SQL; NumSubst Ef et uadasTC : = 0; Bt nRemover Subst 1TC. Enabl ed : = Fal se; Bt nRemover Subst 2TC. Enabl ed : = Fal se; Bt nRemover Subst 3TC. Enabl ed : = Fal se; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n NumSubst Ef et uadasTC : = NumSubst Ef et uadasTC + 1; i f NumSubst Ef et uadasTC = 1 t hen begi n Bt nRemover Subst 1TC. Enabl ed : = Tr ue; Bt nRemover Subst 1TC. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Gr pBxSubCasa. Capt i on : = ' Subst i t ui ção 2' ; Subst i t ui coesTC[ 1, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTC[ 1, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end el se begi n i f NumSubst Ef et uadasTC = 2 t hen begi n Bt nRemover Subst 2TC. Enabl ed : = Tr ue; Bt nRemover Subst 2TC. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Gr pBxSubCasa. Capt i on : = ' Subst i t ui ção 3' ; Subst i t ui coesTC[ 2, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTC[ 2, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end el se begi n Bt nRemover Subst 3TC. Enabl ed : = Tr ue; Bt nRemover Subst 3TC. Capt i on : = BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng + ' / ' + BD. Cl nt Dt St Dados. Fi el dByName( ' Apel i doJogador _1' ) . AsSt r i ng; Bt nSubCasa. Enabl ed : = Fal se;

Page 182: 5.1 Programa de Controle de Campeonatos de Futebol

182

Subst i t ui coesTC[ 3, 1] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _2' ) . AsI nt eger ; Subst i t ui coesTC[ 3, 2] : = BD. Cl nt Dt St Dados. Fi el dByName( ' CodJogador _1' ) . AsI nt eger ; end; end; Next ; end; end; Gr pBxSubCasa. Capt i on : = ' Subst i t ui ção ' + I nt ToSt r ( NumSubst Ef et uadasTC + 1) ; i f ( ( NumSubst Ef et uadasTC < 3) and ( NumJogI nscTC > 0) and ( NumJogador esEscal adosTC > 0) ) t hen begi n Bt nSubCasa. Enabl ed : = Tr ue; end el se begi n Bt nSubCasa. Enabl ed : = Fal se; end; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . AsI nt eger = 1 t hen mi nut os : = 120; end; f or i : =1 t o mi nut os do begi n CmbBxMi nut osCasa. I t ems. Add( I nt ToSt r ( i ) + ' ' ' ' ) ; end; CmbBxMi nut osCasa. I t emI ndex : = 0; / / At ual i za Combo dos Jogador es Reser vas que podem ent r ar no j ogo CmbBxReser vasCasa. I t ems. Cl ear ; wi t h Cl nt Dt St Jogador Casa do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng) ; CmbBxReser vasCasa. I t ems. AddObj ect ( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng, I t emCombo) ; Next ; end; CmbBxReser vasCasa. I t emI ndex : = 0; Fi r s t ; end; / / At ual i za Combo dos Jogador es Ti t ul ar es que podem ser subst i t ui dos no j ogo CmbBxTi t ul ar esCasa. I t ems. Cl ear ; wi t h Cl nt Dt St EscJogoCasa do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n i f Fi el dByName( ' Sai u' ) . asSt r i ng <> ' S' t hen begi n / / Se j á subst i t ui do não apar ece I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng) ; CmbBxTi t ul ar esCasa. I t ems. AddObj ect ( Fi el dByName( ' Apel i doJogador ' ) . asSt r i ng, I t emCombo) ; end; Next ; end; CmbBxTi t ul ar esCasa. I t emI ndex : = 0; Fi r s t ; end; / / Most r a dados Compl et os do j ogador sel ec i onado i f NumJogador esEscal adosTC > 0 t hen begi n Lbl NomeJC. Capt i on : = Cl nt Dt St EscJogoCasa. Fi el dByName( ' NomeJogador ' ) . asSt r i ng; Lbl Cami saJC. Capt i on : = ' Cami sa Nº : ' + Cl nt Dt St EscJogoCasa. Fi el dByName( ' Numer oCami sa' ) . asSt r i ng; case Cl nt Dt St EscJogoCasa. Fi el dByName( ' Posi cao' ) . asI nt eger of 1 : Lbl Posi caoJC. Capt i on : = ' GOLEI RO' ; 2 : Lbl Posi caoJC. Capt i on : = ' LATERAL' ; 3 : Lbl Posi caoJC. Capt i on : = ' ZAGUEI RO' ; 4 : Lbl Posi caoJC. Capt i on : = ' MEI O- CAMPO' ; 5 : Lbl Posi caoJC. Capt i on : = ' ATACANTE' ; end; Lbl I dadeJC. Capt i on : = ' I dade: ' + For mat Dat eTi me( ' yy ' , ( Dat e - Cl nt Dt St EscJogoCasa. Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me) ) + ' Anos' ; Lbl Naci onal i dadeJC. Capt i on : = Cl nt Dt St EscJogoCasa. Fi el dByName( ' Naci onal i dade' ) . asSt r i ng; I mgJC. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St EscJogoCasa. Cr eat eBl obSt r eam( Cl nt Dt St EscJogoCasa. Fi el dByName( ' Fot o' ) , bmRead) ) ;

Page 183: 5.1 Programa de Controle de Campeonatos de Futebol

183

end el se begi n Lbl NomeJC. Capt i on : = ' ' ; Lbl Cami saJC. Capt i on : = ' ' ; Lbl Posi caoJC. Capt i on : = ' ' ; Lbl I dadeJC. Capt i on : = ' ' ; Lbl Naci onal i dadeJC. Capt i on : = ' ' ; I mgJC. Pi ct ur e. Bi t map. Fr eeI mage; end; end; pr ocedur e TFr mEscal acao. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Cl ose; end; pr ocedur e TFr mEscal acao. Cl nt Dt St EscJogoFor aCal cFi el ds( Dat aSet : TDat aSet ) ; begi n i f Cl nt Dt St EscJogoFor aPosi cao. Val ue = 1 t hen Cl nt Dt St EscJogoFor aPos. Val ue : = ' GOL' ; i f Cl nt Dt St EscJogoFor aPosi cao. Val ue = 2 t hen Cl nt Dt St EscJogoFor aPos. Val ue : = ' LAT' ; i f Cl nt Dt St EscJogoFor aPosi cao. Val ue = 3 t hen Cl nt Dt St EscJogoFor aPos. Val ue : = ' ZAG' ; i f Cl nt Dt St EscJogoFor aPosi cao. Val ue = 4 t hen Cl nt Dt St EscJogoFor aPos. Val ue : = ' MC' ; i f Cl nt Dt St EscJogoFor aPosi cao. Val ue = 5 t hen Cl nt Dt St EscJogoFor aPos. Val ue : = ' ATA' ; Cl nt Dt St EscJogoFor aMi n. Val ue : = Cl nt Dt St EscJogoFor aTempoJogado. asSt r i ng + ' ' ' ' ; end; pr ocedur e TFr mEscal acao. DBGr dTi t ul ar esFor aCel l Cl i ck( Col umn: TCol umn) ; begi n Lbl NomeJF. Capt i on : = Cl nt Dt St EscJogoFor a. Fi el dByName( ' NomeJogador ' ) . asSt r i ng; Lbl Cami saJF. Capt i on : = ' Cami sa Nº : ' + Cl nt Dt St EscJogoFor a. Fi el dByName( ' Numer oCami sa' ) . asSt r i ng; case Cl nt Dt St EscJogoFor a. Fi el dByName( ' Posi cao' ) . asI nt eger of 1 : Lbl Posi caoJF. Capt i on : = ' GOLEI RO' ; 2 : Lbl Posi caoJF. Capt i on : = ' LATERAL' ; 3 : Lbl Posi caoJF. Capt i on : = ' ZAGUEI RO' ; 4 : Lbl Posi caoJF. Capt i on : = ' MEI O- CAMPO' ; 5 : Lbl Posi caoJF. Capt i on : = ' ATACANTE' ; end; Lbl I dadeJF. Capt i on : = ' I dade: ' + For mat Dat eTi me( ' yy ' , ( Dat e - Cl nt Dt St EscJogoFor a. Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me) ) + ' Anos' ; Lbl Naci onal i dadeJF. Capt i on : = Cl nt Dt St EscJogoFor a. Fi el dByName( ' Naci onal i dade' ) . asSt r i ng; I mgJF. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St EscJogoFor a. Cr eat eBl obSt r eam( Cl nt Dt St EscJogoFor a. Fi el dByName( ' Fot o' ) , bmRead) ) ; end; pr ocedur e TFr mEscal acao. Bt nEscal ar JFCl i ck( Sender : TObj ect ) ; var Mi nut osJogados: I nt eger ; begi n Mi nut osJogados : = 0; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Real i zado' ) . asI nt eger = 1 t hen begi n Mi nut osJogados : = 90; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . asI nt eger = 1 t hen begi n Mi nut osJogados : = 120; end; end; t r y Jogo. Escal ar Jogador ( Cl nt Dt St Jogador For a. Fi el dByName( ' CodEqui pe' ) . asI nt eger , Cl nt Dt St Jogador For a. Fi el dByName( ' CodJogador ' ) . asI nt eger , Mi nut osJogados) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTF; end; pr ocedur e TFr mEscal acao. Bt nDesEscal ar JFCl i ck( Sender : TObj ect ) ; begi n i f ( ( Cl nt Dt St EscJogoFor a. Fi el dByName( ' St at us_1' ) . asSt r i ng = ' T' ) and ( Cl nt Dt St EscJogoFor a. Fi el dByName( ' Sai u' ) . asSt r i ng = ' N' ) ) t hen begi n t r y Jogo. Remover Escal acaoJogador ( Cl nt Dt St EscJogoFor a. Fi el dByName( ' CodEqui pe' ) . asI nt eger , Cl nt Dt St EscJogoFor a. Fi el dByName( ' CodJogador ' ) . asI nt eger ) ;

Page 184: 5.1 Programa de Controle de Campeonatos de Futebol

184

except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTF; end el se begi n ShowMessage ( ' Oper ação I nvál i da' ) ; end; end; pr ocedur e TFr mEscal acao. DBGr dJogador esFor aDbl Cl i ck( Sender : TObj ect ) ; begi n i f NumJogador esEscal adosTF < 11 t hen begi n sel f . Bt nEscal ar JFCl i ck ( Sender ) ; end el se begi n ShowMessage ( ' Er r o: Já f or am escal ados 11 Jogador es Ti t ul ar es ' ) ; end; end; pr ocedur e TFr mEscal acao. Bt nSubFor aCl i ck( Sender : TObj ect ) ; var CodJogador Ent r ou, CodJogador Sai u: I nt eger ; Mi nut osJogadosEnt r ou, Mi nut osJogadosSai u: I nt eger ; TempoJogo: St r i ng; SQL: St r i ng; begi n CodJogador Ent r ou : = TI t emCombo( CmbBxReser vasFor a. I t ems. Obj ect s[ CmbBxReser vasFor a. I t emI ndex] ) . Get Oi d; CodJogador Sai u : = TI t emCombo( CmbBxTi t ul ar esFor a. I t ems. Obj ect s[ CmbBxTi t ul ar esFor a. I t emI ndex] ) . Get Oi d; TempoJogo : = CmbBxMi nut osFor a. Text ; Set Lengt h( TempoJogo, Lengt h( TempoJogo) - 1) ; Mi nut osJogadosEnt r ou : = Mi nut os - St r ToI nt ( TempoJogo) ; SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( CodJogador Sai u) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; Mi nut osJogadosSai u : = Fi el dByName( ' TempoJogado' ) . asI nt eger - Mi nut osJogadosEnt r ou; end; t r y Jogo. Pr omover Subst ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . asI nt eger , CodJogador Sai u, Mi nut osJogadosSai u, CodJogador Ent r ou, Mi nut osJogadosEnt r ou, St r ToI nt ( TempoJogo) ) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTF; end; pr ocedur e TFr mEscal acao. Remover Subst i t ui caoTF ( i : I nt eger ) ; var Mi nut osJogadosEnt r ou, Mi nut osJogadosSai u: I nt eger ; SQL: St r i ng; begi n SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( Subst i t ui coesTF[ i , 1] ) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; Mi nut osJogadosSai u : = Fi el dByName( ' TempoJogado' ) . asI nt eger ; end; SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( Subst i t ui coesTF[ i , 2] ) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open;

Page 185: 5.1 Programa de Controle de Campeonatos de Futebol

185

Fi r s t ; Mi nut osJogadosEnt r ou : = Fi el dByName( ' TempoJogado' ) . asI nt eger ; end; t r y Jogo. Remover Subst i t ui cao ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . asI nt eger , Subst i t ui coesTF[ i , 1] , Subst i t ui coesTF[ i , 2] , ( Mi nut osJogadosSai u + Mi nut osJogadosEnt r ou) ) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTF; end; pr ocedur e TFr mEscal acao. For mDest r oy( Sender : TObj ect ) ; var i : I nt eger ; begi n i : = 1; whi l e ( i < CmbBxReser vasFor a. I t ems. Count ) do begi n TI t emCombo( CmbBxReser vasFor a. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; i : = 1; whi l e ( i < CmbBxTi t ul ar esFor a. I t ems. Count ) do begi n TI t emCombo( CmbBxTi t ul ar esFor a. I t ems. Obj ect s[ i ] ) . Dest r oy; i : = i + 1; end; BD. Dest r oy; Jogo. Dest r oy; Tempor ada. Dest r oy; end; pr ocedur e TFr mEscal acao. Cl nt Dt St EscJogoCasaCal cFi el ds( Dat aSet : TDat aSet ) ; begi n i f Cl nt Dt St EscJogoCasaPosi cao. Val ue = 1 t hen Cl nt Dt St EscJogoCasaPos. Val ue : = ' GOL' ; i f Cl nt Dt St EscJogoCasaPosi cao. Val ue = 2 t hen Cl nt Dt St EscJogoCasaPos. Val ue : = ' LAT' ; i f Cl nt Dt St EscJogoCasaPosi cao. Val ue = 3 t hen Cl nt Dt St EscJogoCasaPos. Val ue : = ' ZAG' ; i f Cl nt Dt St EscJogoCasaPosi cao. Val ue = 4 t hen Cl nt Dt St EscJogoCasaPos. Val ue : = ' MC' ; i f Cl nt Dt St EscJogoCasaPosi cao. Val ue = 5 t hen Cl nt Dt St EscJogoCasaPos. Val ue : = ' ATA' ; Cl nt Dt St EscJogoCasaMi n. Val ue : = Cl nt Dt St EscJogoCasaTempoJogado. asSt r i ng + ' ' ' ' ; end; pr ocedur e TFr mEscal acao. Bt nEscal ar JCCl i ck( Sender : TObj ect ) ; var Mi nut osJogados: I nt eger ; begi n Mi nut osJogados : = 0; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Real i zado' ) . asI nt eger = 1 t hen begi n Mi nut osJogados : = 90; i f BD. Cl nt Dt St Jogo. Fi el dByName( ' Pr or r ogacao' ) . asI nt eger = 1 t hen begi n Mi nut osJogados : = 120; end; end; t r y Jogo. Escal ar Jogador ( Cl nt Dt St Jogador Casa. Fi el dByName( ' CodEqui pe' ) . asI nt eger , Cl nt Dt St Jogador Casa. Fi el dByName( ' CodJogador ' ) . asI nt eger , Mi nut osJogados) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTC; end; pr ocedur e TFr mEscal acao. Bt nDesEscal ar JCCl i ck( Sender : TObj ect ) ; begi n i f ( ( Cl nt Dt St EscJogoCasa. Fi el dByName( ' St at us_1' ) . asSt r i ng = ' T' ) and ( Cl nt Dt St EscJogoCasa. Fi el dByName( ' Sai u' ) . asSt r i ng = ' N' ) ) t hen begi n t r y Jogo. Remover Escal acaoJogador ( Cl nt Dt St EscJogoCasa. Fi el dByName( ' CodEqui pe' ) . asI nt eger , Cl nt Dt St EscJogoCasa. Fi el dByName( ' CodJogador ' ) . asI nt eger ) ; except

Page 186: 5.1 Programa de Controle de Campeonatos de Futebol

186

on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTC; end el se begi n ShowMessage ( ' Oper ação I nvál i da' ) ; end; end; pr ocedur e TFr mEscal acao. Remover Subst i t ui caoTC ( i : I nt eger ) ; var Mi nut osJogadosEnt r ou, Mi nut osJogadosSai u: I nt eger ; SQL: St r i ng; begi n SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( Subst i t ui coesTC[ i , 1] ) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; Mi nut osJogadosSai u : = Fi el dByName( ' TempoJogado' ) . asI nt eger ; end; SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( Subst i t ui coesTC[ i , 2] ) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; Mi nut osJogadosEnt r ou : = Fi el dByName( ' TempoJogado' ) . asI nt eger ; end; t r y Jogo. Remover Subst i t ui cao ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . asI nt eger , Subst i t ui coesTC[ i , 1] , Subst i t ui coesTC[ i , 2] , ( Mi nut osJogadosSai u + Mi nut osJogadosEnt r ou) ) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTC; end; pr ocedur e TFr mEscal acao. Bt nSubCasaCl i ck( Sender : TObj ect ) ; var CodJogador Ent r ou, CodJogador Sai u: I nt eger ; Mi nut osJogadosEnt r ou, Mi nut osJogadosSai u: I nt eger ; TempoJogo: St r i ng; SQL: St r i ng; begi n CodJogador Ent r ou : = TI t emCombo( CmbBxReser vasCasa. I t ems. Obj ect s[ CmbBxReser vasCasa. I t emI ndex] ) . Get Oi d; CodJogador Sai u : = TI t emCombo( CmbBxTi t ul ar esCasa. I t ems. Obj ect s[ CmbBxTi t ul ar esCasa. I t emI ndex] ) . Get Oi d; TempoJogo : = CmbBxMi nut osCasa. Text ; Set Lengt h( TempoJogo, Lengt h( TempoJogo) - 1) ; Mi nut osJogadosEnt r ou : = Mi nut os - St r ToI nt ( TempoJogo) ; SQL : = ' Sel ect TempoJogado f r om Escal acaoJogo wher e CodJogo=' + I nt ToSt r ( CodJogo) + ' And CodJogador =' + I nt ToSt r ( CodJogador Sai u) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; Mi nut osJogadosSai u : = Fi el dByName( ' TempoJogado' ) . asI nt eger - Mi nut osJogadosEnt r ou; end; t r y Jogo. Pr omover Subst ( BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . asI nt eger , CodJogador Sai u, Mi nut osJogadosSai u, CodJogador Ent r ou, Mi nut osJogadosEnt r ou, St r ToI nt ( TempoJogo) ) ; except on E: Except i on do begi n

Page 187: 5.1 Programa de Controle de Campeonatos de Futebol

187

ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; Sel f . At ual i zar I nt er f aceTC; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 1TCCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTC( 1) ; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 2TCCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTC( 2) ; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 3TCCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTC( 3) ; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 1TFCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTF( 1) ; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 2TFCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTF( 2) ; end; pr ocedur e TFr mEscal acao. Bt nRemover Subst 3TFCl i ck( Sender : TObj ect ) ; begi n Sel f . Remover Subst i t ui caoTF( 3) ; end; pr ocedur e TFr mEscal acao. DBGr dTi t ul ar esCasaCel l Cl i ck( Col umn: TCol umn) ; begi n Lbl NomeJC. Capt i on : = Cl nt Dt St EscJogoCasa. Fi el dByName( ' NomeJogador ' ) . asSt r i ng; Lbl Cami saJC. Capt i on : = ' Cami sa Nº : ' + Cl nt Dt St EscJogoCasa. Fi el dByName( ' Numer oCami sa' ) . asSt r i ng; case Cl nt Dt St EscJogoCasa. Fi el dByName( ' Posi cao' ) . asI nt eger of 1 : Lbl Posi caoJC. Capt i on : = ' GOLEI RO' ; 2 : Lbl Posi caoJC. Capt i on : = ' LATERAL' ; 3 : Lbl Posi caoJC. Capt i on : = ' ZAGUEI RO' ; 4 : Lbl Posi caoJC. Capt i on : = ' MEI O- CAMPO' ; 5 : Lbl Posi caoJC. Capt i on : = ' ATACANTE' ; end; Lbl I dadeJC. Capt i on : = ' I dade: ' + For mat Dat eTi me( ' yy ' , ( Dat e - Cl nt Dt St EscJogoCasa. Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me) ) + ' Anos' ; Lbl Naci onal i dadeJC. Capt i on : = Cl nt Dt St EscJogoCasa. Fi el dByName( ' Naci onal i dade' ) . asSt r i ng; I mgJC. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St EscJogoCasa. Cr eat eBl obSt r eam( Cl nt Dt St EscJogoCasa. Fi el dByName( ' Fot o' ) , bmRead) ) ; end; pr ocedur e TFr mEscal acao. DBGr dJogador esCasaDbl Cl i ck( Sender : TObj ect ) ; begi n i f NumJogador esEscal adosTC < 11 t hen begi n sel f . Bt nEscal ar JCCl i ck ( Sender ) ; end el se begi n ShowMessage ( ' Er r o: Já f or am escal ados 11 Jogador es Ti t ul ar es ' ) ; end; end; pr ocedur e TFr mEscal acao. Bt nCadJogador esTCCl i ck( Sender : TObj ect ) ; var Fr mCadJogador : TFr mCadJogador ; begi n Fr mCadJogador : = TFr mCadJogador . Cr eat e( ni l ) ; Fr mCadJogador . Set BD( conBD) ; Fr mCadJogador . Most r ar ( Tempor ada, BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peCasa' ) . AsI nt eger ) ; Fr mCadJogador . Dest r oy; Sel f . At ual i zar I nt er f aceTC; end;

Page 188: 5.1 Programa de Controle de Campeonatos de Futebol

188

pr ocedur e TFr mEscal acao. Bt nCadJogador esTFCl i ck( Sender : TObj ect ) ; var Fr mCadJogador : TFr mCadJogador ; begi n Fr mCadJogador : = TFr mCadJogador . Cr eat e( ni l ) ; Fr mCadJogador . Set BD( conBD) ; Fr mCadJogador . Most r ar ( Tempor ada, BD. Cl nt Dt St Jogo. Fi el dByName( ' CodEqui peFor a' ) . AsI nt eger ) ; Fr mCadJogador . Dest r oy; Sel f . At ual i zar I nt er f aceTF; end; end. ============================================================================================ ARQUI VO: UI Equi peEqui val ent e. pas ============================================================================================ uni t UI Equi peEqui val ent e; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . But t ons, Bor l and. Vcl . Ext Ct r l s , Syst em. Component Model , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , UTempor ada, UDMDados, Bor l and. Vcl . St r Ut i l s , UI CadEqui peCompet eTempor ada; t ype Col ecaoEqui pes = r ecor d Nome: St r i ng; Codi go: I nt eger ; CodEst adi o: I nt eger ; end; t ype TFr mEqui peEqui val ent e = c l ass( TFor m) Cl nt Dt St Equi peDi sput aTemp: TCl i ent Dat aSet ; Cl nt Dt St Equi peDi sput aTempCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peDi sput aTempCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempPAI S: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempESCUDO: TBl obFi el d; Cl nt Dt St Equi peDi sput aTempCODESTADI O: TI nt eger Fi el d; Dt Sr cEqui peDi sput aTemp: TDat aSour ce; SQLDt St Equi peDi sput aTemp: TSQLDat aSet ; Dt St Pr vdr Equi peDi sput aTemp: TDat aSet Pr ovi der ; Panel 2: TPanel ; Pnl Equi pe: TPanel ; Pnl Equi peEqui val ent e: TPanel ; Label 2: TLabel ; Label 1: TLabel ; Panel 3: TPanel ; Panel 4: TPanel ; Bt nFechar : TBi t Bt n; DBGr dEqui pes: TDBGr i d; Panel 1: TPanel ; Panel 5: TPanel ; ChckBxTodasEqui pes: TCheckBox; But t on1: TBut t on; pr ocedur e DBGr dEqui pesDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dEqui pesCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e ChckBxTodasEqui pesCl i ck( Sender : TObj ect ) ; pr ocedur e But t on1Cl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; Tempor ada: TTempor ada;

Page 189: 5.1 Programa de Controle de Campeonatos de Futebol

189

CodEqui pe: I nt eger ; Equi pes: Ar r ay [ 1. . 50] of Col ecaoEqui pes; Tot Equi pes: I nt eger ; Nome: St r i ng; CodEst adi o: I nt eger ; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Set Tempor ada ( umaTemp: TTempor ada) ; pr ocedur e Most r ar ; pr ocedur e At ual i zaI nt er f ace; f unct i on Get CodEqui pe: I nt eger ; f unct i on Ret or neCodi goEqui pe( umNome: St r i ng) : I nt eger ; f unct i on Get CodEst adi o ( umCodEqui pe: I nt eger ) : I nt eger ; end; var Fr mEqui peEqui val ent e: TFr mEqui peEqui val ent e; i mpl ement at i on { $R * . nf m} f unct i on TFr mEqui peEqui val ent e. Ret or neCodi goEqui pe( umNome: St r i ng) : I nt eger ; var i : I nt eger ; Achou: Bool ean; begi n Achou : = Fal se; i : = 1; Nome : = umNome; whi l e ( ( Achou=Fal se) and ( i <= Tot Equi pes) ) do begi n i f Equi pes[ i ] . Nome = Nome t hen begi n CodEqui pe : = Equi pes[ i ] . Codi go; Achou : = Tr ue; end; I nc( i ) ; end; i f ( Achou = Fal se) t hen begi n Sel f . Most r ar ; CodEqui pe : = Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' CodEqui pe' ) . AsI nt eger ; CodEst adi o : = Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' CodEst adi o' ) . AsI nt eger ; Equi pes[ Tot Equi pes + 1] . Nome : = Nome; Equi pes[ Tot Equi pes + 1] . Codi go : = CodEqui pe; Equi pes[ Tot Equi pes + 1] . CodEst adi o : = CodEst adi o; i nc( Tot Equi pes) ; end; Ret or neCodi goEqui pe : = CodEqui pe; end; pr ocedur e TFr mEqui peEqui val ent e. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end; pr ocedur e TFr mEqui peEqui val ent e. Set Tempor ada ( umaTemp: TTempor ada) ; begi n Tempor ada : = umaTemp; Tot Equi pes : = 0; end; pr ocedur e TFr mEqui peEqui val ent e. Most r ar ; begi n Pnl Equi pe. Text : = Nome; Sel f . At ual i zaI nt er f ace; ShowModal ; end; pr ocedur e TFr mEqui peEqui val ent e. At ual i zaI nt er f ace; var SQL: St r i ng; i : I nt eger ; Achou: Bool ean; begi n i f ChckBxTodasEqui pes. Checked = Fal se t hen begi n SQL : = ' Sel ect * FROM EQUI PECOMPETETEMPORADA ECT, EQUI PE E wher e CODTEMPORADA=: CodTemp and ' ;

Page 190: 5.1 Programa de Controle de Campeonatos de Futebol

190

SQL : = SQL + ' ECT. CODEQUI PE=E. CODEQUI PE ' ; f or i : =1 t o Tot Equi pes do begi n SQL : = SQL + ' and ECT. CodEqui pe<>' + I nt ToSt r ( Equi pes[ i ] . Codi go) + ' ' ; end; SQL : = SQL + ' Or der by NOMEEQUI PE' ; end el se begi n SQL : = ' Sel ect * FROM EQUI PECOMPETETEMPORADA ECT, EQUI PE E wher e CODTEMPORADA=: CodTemp and ' ; SQL : = SQL + ' ECT. CODEQUI PE=E. CODEQUI PE Or der by NOMEEQUI PE' ; end; SQLDt St Equi peDi sput aTemp. CommandText : = SQL; SQLDt St Equi peDi sput aTemp. Par amByName( ' CodTemp' ) . asI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Equi peDi sput aTemp. Cl ose; Cl nt Dt St Equi peDi sput aTemp. Open; Cl nt Dt St Equi peDi sput aTemp. Fi r s t ; Achou : = f al se; Whi l e ( ( Cl nt Dt St Equi peDi sput aTemp. Eof =f al se) and ( Achou=f al se) ) do begi n i f SoundexSi mi l ar ( Nome, Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng) t hen begi n Achou : = t r ue; end el se begi n Cl nt Dt St Equi peDi sput aTemp. Next ; end; end; i f ( Achou=f al se) t hen begi n Cl nt Dt St Equi peDi sput aTemp. Fi r s t ; end; Pnl Equi peEqui val ent e. Text : = Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; end; pr ocedur e TFr mEqui peEqui val ent e. DBGr dEqui pesDbl Cl i ck( Sender : TObj ect ) ; begi n Pnl Equi peEqui val ent e. Text : = Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; Sel f . Bt nFechar Cl i ck( Sender ) ; end; pr ocedur e TFr mEqui peEqui val ent e. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; f unct i on TFr mEqui peEqui val ent e. Get CodEqui pe: I nt eger ; begi n Get CodEqui pe : = CodEqui pe; end; pr ocedur e TFr mEqui peEqui val ent e. DBGr dEqui pesCel l Cl i ck( Col umn: TCol umn) ; begi n Pnl Equi peEqui val ent e. Text : = Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; end; pr ocedur e TFr mEqui peEqui val ent e. ChckBxTodasEqui pesCl i ck( Sender : TObj ect ) ; begi n Sel f . At ual i zaI nt er f ace; end; pr ocedur e TFr mEqui peEqui val ent e. But t on1Cl i ck( Sender : TObj ect ) ; var Fr mCadEqui peCompet eTempor ada: TFr mCadEqui peCompet eTempor ada; begi n Fr mCadEqui peCompet eTempor ada : = TFr mCadEqui peCompet eTempor ada. Cr eat e( ni l ) ; Fr mCadEqui peCompet eTempor ada. Set BD( conBD) ; Fr mCadEqui peCompet eTempor ada. Most r ar ( Tempor ada) ; Fr mCadEqui peCompet eTempor ada. Dest r oy; Sel f . At ual i zaI nt er f ace; end; f unct i on TFr mEqui peEqui val ent e. Get CodEst adi o ( umCodEqui pe: I nt eger ) : I nt eger ; var Achou: Bool ean; i : I nt eger ; begi n i : = 1;

Page 191: 5.1 Programa de Controle de Campeonatos de Futebol

191

Achou : = Fal se; whi l e ( ( achou=f al se) and ( i <=Tot Equi pes) ) do begi n i f Equi pes[ i ] . Codi go = umCodEqui pe t hen begi n Get CodEst adi o : = Equi pes[ i ] . CodEst adi o; Achou : = Tr ue; end; I nc( i ) ; end; end; end. ============================================================================================ ARQUI VO: UI CadTempor ada. pas ============================================================================================ uni t UI CadTempor ada; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . But t ons, Syst em. Component Model , Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , UDMDados, UI t emCombo, UI CadCampeonat o, UTempor ada; t ype TFr mCadTempor ada = c l ass( TFor m) Pnl Dados: TPanel ; Label 5: TLabel ; Edt NomeTempor ada: TEdi t ; Gr pBxTN: TGr oupBox; Label 9: TLabel ; Label 10: TLabel ; Edt Pt sVi t TN: TEdi t ; Edt Pt sEmpTN: TEdi t ; Gr pBxPr o: TGr oupBox; Label 6: TLabel ; Label 7: TLabel ; Label 8: TLabel ; Edt Pt sVi t Pr o: TEdi t ; Edt Pt sEmpPr o: TEdi t ; Edt Pt sDer Pr o: TEdi t ; Gr pBxPen: TGr oupBox; Label 11: TLabel ; Label 12: TLabel ; Edt Pt sVi t Pen: TEdi t ; Edt Pt sDer Pen: TEdi t ; MmDescr i cao: TMemo; Label 2: TLabel ; Gr pBxCl as: TGr oupBox; Label 3: TLabel ; Edt NumPr o: TEdi t ; Lst BxCr i t er i oDesempat e: TLi st Box; Label 1: TLabel ; Bt nSubi r : TBi t Bt n; Bt nDescer : TBi t Bt n; Label 14: TLabel ; Edt NumComp1: TEdi t ; Label 4: TLabel ; Edt NumComp2: TEdi t ; Edt NumPOReb: TEdi t ; Label 13: TLabel ; Edt NumReb: TEdi t ; Label 15: TLabel ; CmbBxCampeonat o: TComboBox; DBGr dEqui pe: TDBGr i d; Panel 3: TPanel ; Pnl Bt ns: TPanel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; Label 16: TLabel ; Cl nt Dt St Campeonat o: TCl i ent Dat aSet ; Dt Sr cCampeonat o: TDat aSour ce;

Page 192: 5.1 Programa de Controle de Campeonatos de Futebol

192

SQLDt St Campeonat o: TSQLDat aSet ; Dt St Pr vdr Campeonat o: TDat aSet Pr ovi der ; Cl nt Dt St Campeonat oCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Campeonat oCODCAMPEONATO: TI nt eger Fi el d; Cl nt Dt St Campeonat oNOMETEMPORADA: TSt r i ngFi el d; Cl nt Dt St Campeonat oPONTOSVI TORI A: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSEMPATE: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSVI TORI APRORROGACAO: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSVI TORI APENALTI S: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSDERROTAPRORROGACAO: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSDERROTAPENALTI S: TI nt eger Fi el d; Cl nt Dt St Campeonat oDESCRI CAO: TMemoFi el d; Cl nt Dt St Campeonat oNUMTI MEREBAI XADO: TI nt eger Fi el d; Cl nt Dt St Campeonat oNUMTI MEPROMOVI DO: TI nt eger Fi el d; Cl nt Dt St Campeonat oPONTOSEMPATEPRORROGACAO: TI nt eger Fi el d; Cl nt Dt St Campeonat oCODCAMPEONATO_1: TI nt eger Fi el d; Cl nt Dt St Campeonat oNOME: TSt r i ngFi el d; Cl nt Dt St Campeonat oTI PO: TI nt eger Fi el d; Cl nt Dt St Campeonat oPAI S: TSt r i ngFi el d; Cl nt Dt St Campeonat oESCUDO: TBl obFi el d; Cl nt Dt St Campeonat oNomeCampeoTemp: TSt r i ngFi el d; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ; Cl nt Dt St Dados: TCl i ent Dat aSet ; Cl nt Dt St Campeonat oSQLDESEMPATE: TSt r i ngFi el d; Cl nt Dt St Campeonat oNUMTI MECOMPET1: TI nt eger Fi el d; Cl nt Dt St Campeonat oNUMTI MECOMPET2: TI nt eger Fi el d; Cl nt Dt St Campeonat oNUMTI MEPOREBAI XAMENTO: TI nt eger Fi el d; Bt nI nc l ui r Campeonat o: TBut t on; Bt nFechar : TBi t Bt n; Bt nI nc l ui r Tempor ada: TBi t Bt n; Bt nAl t er ar Tempor ada: TBi t Bt n; Bt nExcl ui r Tempor ada: TBi t Bt n; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Cl nt Dt St Campeonat oCal cFi el ds( Dat aSet : TDat aSet ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Edt Pt sVi t TNKeyPr ess( Sender : TObj ect ; var Key: Char ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Tempor adaCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Campeonat oCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Tempor adaCl i ck( Sender : TObj ect ) ; pr ocedur e For mShow( Sender : TObj ect ) ; pr ocedur e DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nSubi r Cl i ck( Sender : TObj ect ) ; pr ocedur e For mCr eat e( Sender : TObj ect ) ; pr ocedur e Bt nDescer Cl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; St at us: St r i ng; CodTempor ada: I nt eger ; NumTempCadast r adas: I nt eger ; pr ocedur e Car r egar CmbBxCampeonat o; pr ocedur e Li mpar CmbBxEst adi oEqui pe; pr ocedur e At i vaFor mul ar i o; pr ocedur e Bl oquei aFor mul ar i o; f unct i on Get Cr i t er i oDesempat e: St r i ng; f unct i on val i daCadast r o: Bool ean; pr ocedur e At ual i zaLst BxCr i t er i oDesempat e ( Text o: St r i ng) ; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; pr ocedur e Most r ar ; end; var Fr mCadTempor ada: TFr mCadTempor ada; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadTempor ada. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end;

Page 193: 5.1 Programa de Controle de Campeonatos de Futebol

193

pr ocedur e TFr mCadTempor ada. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadTempor ada. Most r ar ; begi n Cl nt Dt St Campeonat o. Cl ose; Cl nt Dt St Campeonat o. Open; ShowModal ; end; pr ocedur e TFr mCadTempor ada. Cl nt Dt St Campeonat oCal cFi el ds( Dat aSet : TDat aSet ) ; begi n Cl nt Dt St Campeonat oNomeCampeoTemp. Val ue : = Cl nt Dt St Campeonat oNome. Val ue + ' ' + Cl nt Dt St Campeonat oNomeTempor ada. Val ue; end; pr ocedur e TFr mCadTempor ada. Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i o; end; pr ocedur e TFr mCadTempor ada. Edt Pt sVi t TNKeyPr ess( Sender : TObj ect ; var Key: Char ) ; begi n i f not ( Key i n [ ' 0' . . ' 9' , #8, #0] ) t hen begi n Key : = #0; Beep; end; end; pr ocedur e TFr mCadTempor ada. Car r egar CmbBxCampeonat o; var SQL: St r i ng; I t emCombo: TI t emCombo; begi n SQL : = ' Sel ect * f r om CAMPEONATO ORDER BY NOME' ; SQLDt St Dados. CommandText : = SQL; wi t h Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodCampeonat o' ) . AsI nt eger ) ; CmbBxCampeonat o. I t ems. AddObj ect ( Fi el dByName( ' Nome' ) . asSt r i ng, I t emCombo) ; Next ; end; CmbBxCampeonat o. I t emI ndex : = 0; end; I t emCombo. Fr ee; end; pr ocedur e TFr mCadTempor ada. Li mpar CmbBxEst adi oEqui pe; var I t emCombo: TI t emCombo; i : I nt eger ; begi n f or i : =1 t o CmbBxCampeonat o. I t ems. Count - 1 do begi n TI t emCombo( CmbBxCampeonat o. I t ems. Obj ect s[ i ] ) . Dest r oy; end; CmbBxCampeonat o. Cl ear ; end; pr ocedur e TFr mCadTempor ada. For mDest r oy( Sender : TObj ect ) ; begi n Sel f . Li mpar CmbBxEst adi oEqui pe; end; pr ocedur e TFr mCadTempor ada. Bt nI nc l ui r Tempor adaCl i ck( Sender : TObj ect ) ; begi n St at us : = ' N' ; Sel f . Bl oquei aFor mul ar i o; Sel f . At i vaFor mul ar i o; Edt NomeTempor ada. Text : = ' ' ;

Page 194: 5.1 Programa de Controle de Campeonatos de Futebol

194

MmDescr i cao. Li nes. Cl ear ; Edt Pt sVi t TN. Text : = ' 3' ; Edt Pt sEmpTN. Text : = ' 1' ; Edt Pt sVi t Pr o. Text : = ' 0' ; Edt Pt sEmpPr o. Text : = ' 0' ; Edt Pt sDer Pr o. Text : = ' 0' ; Edt Pt sVi t Pen. Text : = ' 0' ; Edt Pt sDer Pen. Text : = ' 0' ; Edt NumPr o. Text : = ' 0' ; Edt NumComp1. Text : = ' 0' ; Edt NumComp2. Text : = ' 0' ; Edt NumPOReb. Text : = ' 0' ; Edt NumReb. Text : = ' 0' ; end; pr ocedur e TFr mCadTempor ada. At i vaFor mul ar i o; begi n Sel f . Car r egar CmbBxCampeonat o; CmbBxCampeonat o. Enabl ed : = Tr ue; Edt NomeTempor ada. Enabl ed : = Tr ue; MmDescr i cao. Enabl ed : = Tr ue; Edt Pt sVi t TN. Enabl ed : = Tr ue; Edt Pt sEmpTN. Enabl ed : = Tr ue; Edt Pt sVi t Pr o. Enabl ed : = Tr ue; Edt Pt sEmpPr o. Enabl ed : = Tr ue; Edt Pt sDer Pr o. Enabl ed : = Tr ue; Edt Pt sVi t Pen. Enabl ed : = Tr ue; Edt Pt sDer Pen. Enabl ed : = Tr ue; Edt NumPr o. Enabl ed : = Tr ue; Edt NumComp1. Enabl ed : = Tr ue; Edt NumComp2. Enabl ed : = Tr ue; Edt NumPOReb. Enabl ed : = Tr ue; Edt NumReb. Enabl ed : = Tr ue; Bt nSubi r . Enabl ed : = Tr ue; Bt nDescer . Enabl ed : = Tr ue; Bt nI nc l ui r Campeonat o. Enabl ed : = Tr ue; Lst BxCr i t er i oDesempat e. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; CmbBxCampeonat o. Set Focus; end; pr ocedur e TFr mCadTempor ada. Bl oquei aFor mul ar i o; begi n Edt NomeTempor ada. Text : = ' ' ; MmDescr i cao. Li nes. Cl ear ; Edt Pt sVi t TN. Text : = ' ' ; Edt Pt sEmpTN. Text : = ' ' ; Edt Pt sVi t Pr o. Text : = ' ' ; Edt Pt sEmpPr o. Text : = ' ' ; Edt Pt sDer Pr o. Text : = ' ' ; Edt Pt sVi t Pen. Text : = ' ' ; Edt Pt sDer Pen. Text : = ' ' ; Edt NumPr o. Text : = ' ' ; Edt NumComp1. Text : = ' ' ; Edt NumComp2. Text : = ' ' ; Edt NumPOReb. Text : = ' ' ; Edt NumReb. Text : = ' ' ; Sel f . Li mpar CmbBxEst adi oEqui pe; CmbBxCampeonat o. Enabl ed : = Fal se; Edt NomeTempor ada. Enabl ed : = Fal se; MmDescr i cao. Enabl ed : = Fal se; Edt Pt sVi t TN. Enabl ed : = Fal se; Edt Pt sEmpTN. Enabl ed : = Fal se; Edt Pt sVi t Pr o. Enabl ed : = Fal se; Edt Pt sEmpPr o. Enabl ed : = Fal se; Edt Pt sDer Pr o. Enabl ed : = Fal se; Edt Pt sVi t Pen. Enabl ed : = Fal se; Edt Pt sDer Pen. Enabl ed : = Fal se; Edt NumPr o. Enabl ed : = Fal se; Edt NumComp1. Enabl ed : = Fal se; Edt NumComp2. Enabl ed : = Fal se; Edt NumPOReb. Enabl ed : = Fal se; Edt NumReb. Enabl ed : = Fal se; Bt nSubi r . Enabl ed : = Fal se; Bt nDescer . Enabl ed : = Fal se; Lst BxCr i t er i oDesempat e. Enabl ed : = Fal se;

Page 195: 5.1 Programa de Controle de Campeonatos de Futebol

195

Bt nGr avar . Enabl ed : = Fal se; Bt nCancel ar . Enabl ed : = Fal se; Bt nI nc l ui r Campeonat o. Enabl ed : = Fal se; SQLDt St Dados. CommandText : = ' Sel ect Count ( * ) f r om Tempor ada' ; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; NumTempCadast r adas : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; i f NumTempCadast r adas = 0 t hen begi n Bt nAl t er ar Tempor ada. Enabl ed : = Fal se; end el se begi n Bt nAl t er ar Tempor ada. Enabl ed : = Tr ue; end; end; pr ocedur e TFr mCadTempor ada. Bt nI nc l ui r Campeonat oCl i ck( Sender : TObj ect ) ; var Fr mCadCampeonat o: TFr mCadCampeonat o; begi n Fr mCadCampeonat o : = TFr mCadCampeonat o. Cr eat e( ni l ) ; Fr mCadCampeonat o. Set BD( ConBD) ; Fr mCadCampeonat o. Most r ar ; Fr mCadCampeonat o. Dest r oy; Sel f . Car r egar CmbBxCampeonat o; end; pr ocedur e TFr mCadTempor ada. Bt nAl t er ar Tempor adaCl i ck( Sender : TObj ect ) ; var i : I nt eger ; achou: Bool ean; begi n St at us : = ' A' ; CodTempor ada : = Cl nt Dt St Campeonat o. Fi el dByName( ' CodTempor ada' ) . asI nt eger ; Sel f . Bl oquei aFor mul ar i o; Sel f . At i vaFor mul ar i o; Edt NomeTempor ada. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NomeTempor ada' ) . asSt r i ng; MmDescr i cao. Li nes. Add ( Cl nt Dt St Campeonat o. Fi el dByName( ' Descr i cao' ) . asSt r i ng) ; Edt Pt sVi t TN. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osVi t or i a' ) . asSt r i ng; Edt Pt sEmpTN. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osEmpat e' ) . asSt r i ng; Edt Pt sVi t Pr o. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osVi t or i aPr or r ogacao' ) . asSt r i ng; Edt Pt sEmpPr o. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osEmpat ePr or r ogacao' ) . asSt r i ng; Edt Pt sDer Pr o. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osDer r ot aPr or r ogacao' ) . asSt r i ng; Edt Pt sVi t Pen. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osVi t or i aPenal t i s ' ) . asSt r i ng; Edt Pt sDer Pen. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' Pont osDer r ot aPenal t i s ' ) . asSt r i ng; Edt NumPr o. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NumTi mePr omovi do' ) . asSt r i ng; Edt NumComp1. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NumTi meCompet 1' ) . asSt r i ng; Edt NumComp2. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NumTi meCompet 2' ) . asSt r i ng; Edt NumPOReb. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NumTi mePORebai xament o' ) . asSt r i ng; Edt NumReb. Text : = Cl nt Dt St Campeonat o. Fi el dByName( ' NumTi meRebai xado' ) . asSt r i ng; whi l e ( ( i < CmbBxCampeonat o. I t ems. Count ) and ( not achou) ) do begi n i f TI t emCombo( CmbBxCampeonat o. I t ems. Obj ect s[ i ] ) . Get Oi d = Cl nt Dt St Campeonat o. Fi el dByName( ' CodCampeonat o' ) . AsI nt eger t hen begi n CmbBxCampeonat o. I t emI ndex : = i ; achou : = t r ue; end; i : = i + 1; end; Lst BxCr i t er i oDesempat e. I t ems. Cl ear ; Sel f . At ual i zaLst BxCr i t er i oDesempat e( Cl nt Dt St Campeonat o. Fi el dByName( ' SQLDesempat e' ) . asSt ri ng) ; end; pr ocedur e TFr mCadTempor ada. For mShow( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i o; end; pr ocedur e TFr mCadTempor ada. DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; begi n i f NumTempCadast r adas > 0 t hen begi n Sel f . Bt nAl t er ar Tempor adaCl i ck( Sender ) ; end; end; pr ocedur e TFr mCadTempor ada. Bt nGr avar Cl i ck( Sender : TObj ect ) ;

Page 196: 5.1 Programa de Controle de Campeonatos de Futebol

196

var Tempor ada: TTempor ada; CodCampeonat o, Pt sVi t , Pt sEmp, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen: I nt eger ; NumPr o, NumComp1, NumComp2, NumPOReb, NumReb: I nt eger ; NomeTempor ada, Descr i cao, Cr i t er i o: St r i ng; begi n i f Sel f . Val i daCadast r o t hen begi n CodCampeonat o : = TI t emCombo( CmbBxCampeonat o. I t ems. Obj ect s[ CmbBxCampeonat o. I t emI ndex] ) . Get Oi d; NomeTempor ada : = Edt NomeTempor ada. Text ; Descr i cao : = MmDescr i cao. Text ; Cr i t er i o : = Sel f . Get Cr i t er i oDesempat e; Pt sVi t : = St r ToI nt ( Edt Pt sVi t TN. Text ) ; Pt sEmp : = St r ToI nt ( Edt Pt sEmpTN. Text ) ; Pt sVi t Pr o : = St r ToI nt ( Edt Pt sVi t Pr o. Text ) ; Pt sEmpPr o : = St r ToI nt ( Edt Pt sEmpPr o. Text ) ; Pt sDer Pr o : = St r ToI nt ( Edt Pt sDer pr o. Text ) ; Pt sVi t Pen : = St r ToI nt ( Edt Pt sVi t Pen. Text ) ; Pt sDer Pen : = St r ToI nt ( Edt Pt sDer Pen. Text ) ; NumPr o : = St r ToI nt ( Edt NumPr o. Text ) ; NumComp1 : = St r ToI nt ( Edt NumComp1. Text ) ; NumComp2 : = St r ToI nt ( Edt NumComp2. Text ) ; NumPOReb : = St r ToI nt ( Edt NumPOReb. Text ) ; NumReb : = St r ToI nt ( Edt NumReb. Text ) ; t r y Tempor ada : = TTempor ada. Cr eat e; Tempor ada. Set BD( ConBD) ; i f St at us = ' N' t hen begi n Tempor ada. NovaTempor ada( CodCampeonat o, Pt sVi t , Pt sEmp, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb, NomeTempor ada, Descr i cao, Cr i t er i o) ; end el se begi n Tempor ada. Mat er i al i zar ( CodTempor ada) ; Tempor ada. Al t er ar Tempor ada( CodCampeonat o, Pt sVi t , Pt sEmp, Pt sVi t Pr o, Pt sEmpPr o, Pt sDer Pr o, Pt sVi t Pen, Pt sDer Pen, NumPr o, NumComp1, NumComp2, NumPOReb, NumReb, NomeTempor ada, Descr i cao, Cr i t er i o) ; end; Sel f . Bl oquei aFor mul ar i o; Cl nt Dt St Campeonat o. Cl ose; Cl nt Dt St Campeonat o. Open; Tempor ada. Dest r oy; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end; f unct i on TFr mCadTempor ada. val i daCadast r o: Bool ean; begi n i f CmbBxCampeonat o. I t emI ndex < 0 t hen begi n ShowMessage( ' Você deve i nc l ui r um Campeonat o ant es de I nc l ui r a Tempor ada' ) ; Bt nI nc l ui r Campeonat o. Set Focus; end el se begi n i f Edt NomeTempor ada. Text = ' ' t hen begi n ShowMessage( ' Nome da Tempor ada I nvál i do' ) ; Edt NomeTempor ada. Set Focus; end el se begi n Val i daCadast r o : = Tr ue; i f Edt Pt sVi t TN. Text = ' ' t hen Edt Pt sVi t TN. Text : = ' 3' ; i f Edt Pt sEmpTN. Text = ' ' t hen Edt Pt sEmpTN. Text : = ' 1' ; i f Edt Pt sVi t Pr o. Text = ' ' t hen Edt Pt sVi t Pr o. Text : = ' 0' ; i f Edt Pt sEmpPr o. Text = ' ' t hen Edt Pt sEmpPr o. Text : = ' 0' ; i f Edt Pt sDer Pr o. Text = ' ' t hen Edt Pt sEmpPr o. Text : = ' 0' ; i f Edt Pt sVi t Pen. Text = ' ' t hen Edt Pt sVi t Pen. Text : = ' 0' ; i f Edt Pt sDer Pen. Text = ' ' t hen Edt Pt sDer Pen. Text : = ' 0' ; i f Edt NumPr o. Text = ' ' t hen Edt NumPr o. Text : = ' 0' ; i f Edt NumComp1. Text = ' ' t hen Edt NumComp1. Text : = ' 0' ; i f Edt NumComp2. Text = ' ' t hen Edt NumComp2. Text : = ' 0' ; i f Edt NumPOReb. Text = ' ' t hen Edt NumPOReb. Text : = ' 0' ; i f Edt NumReb. Text = ' ' t hen Edt NumReb. Text : = ' 0' ; end; end;

Page 197: 5.1 Programa de Controle de Campeonatos de Futebol

197

end; f unct i on TFr mCadTempor ada. Get Cr i t er i oDesempat e: St r i ng; var SQL: St r i ng; i : i nt eger ; begi n / / Sal do de Gol s: 1; Vi t or i as: 2; Gol sPr o: 3; Gol s For a: 4 SQL : = ' ' ; f or i : = 0 t o 3 do begi n i f Lst BxCr i t er i oDesempat e. I t ems[ i ] = ' Sal do de Gol s ' t hen begi n SQL : = SQL + ' 1' ; end el se begi n i f Lst BxCr i t er i oDesempat e. I t ems[ i ] = ' Numer o de Vi t or i as ' t hen begi n SQL : = SQL + ' 2' ; end el se begi n i f Lst BxCr i t er i oDesempat e. I t ems[ i ] = ' Gol s Pr o' t hen begi n SQL : = SQL + ' 3' ; end el se begi n SQL : = SQL + ' 4' ; / / Gol s For a de Casa end; end; end; end; Get Cr i t er i oDesempat e : = SQL; end; pr ocedur e TFr mCadTempor ada. For mCr eat e( Sender : TObj ect ) ; begi n Lst BxCr i t er i oDesempat e. I t emI ndex : = 0; end; pr ocedur e TFr mCadTempor ada. At ual i zaLst BxCr i t er i oDesempat e ( Text o: St r i ng) ; var i : I nt eger ; begi n f or i : =1 t o Lengt h( Text o) do begi n i f Text o[ i ] = ' 1' t hen begi n Lst BxCr i t er i oDesempat e. I t ems. Add( ' Sal do de Gol s ' ) ; end el se begi n i f Text o[ i ] = ' 2' t hen begi n Lst BxCr i t er i oDesempat e. I t ems. Add( ' Numer o de Vi t or i as ' ) ; end el se begi n i f Text o[ i ] = ' 3' t hen begi n Lst BxCr i t er i oDesempat e. I t ems. Add( ' Gol s Pr o' ) ; end el se begi n i f Text o[ i ] = ' 4' t hen begi n Lst BxCr i t er i oDesempat e. I t ems. Add( ' Gol s For a de Casa' ) ; end; end; end; end; end; end; pr ocedur e TFr mCadTempor ada. Bt nSubi r Cl i ck( Sender : TObj ect ) ; var Text o: St r i ng; begi n i f Lst BxCr i t er i oDesempat e. I t emI ndex <> 0 t hen begi n Text o : = Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex- 1] ; Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex- 1] : = Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex] ; Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex] : = Text o; Lst BxCr i t er i oDesempat e. I t emI ndex : = Lst BxCr i t er i oDesempat e. I t emI ndex - 1; end; end; pr ocedur e TFr mCadTempor ada. Bt nDescer Cl i ck( Sender : TObj ect ) ; var Text o: St r i ng; begi n i f Lst BxCr i t er i oDesempat e. I t emI ndex <> 3 t hen begi n Text o : = Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex+1] ; Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex+1] : = Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex] ; Lst BxCr i t er i oDesempat e. I t ems[ Lst BxCr i t er i oDesempat e. I t emI ndex] : = Text o;

Page 198: 5.1 Programa de Controle de Campeonatos de Futebol

198

Lst BxCr i t er i oDesempat e. I t emI ndex : = Lst BxCr i t er i oDesempat e. I t emI ndex + 1; end; end; end. ============================================================================================ ARQUI VO: UI CadJogos. pas ============================================================================================ uni t UI CadJogos; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . DBCt r l s , Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . Mask, Syst em. Component Model , DBXpr ess, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Db, Bor l and. Vcl . Sql Expr , Bor l and. Vcl . But t ons, UTempor ada, UI t emCombo, UMeuUt i l s , UDMDados, Bor l and. Vcl . Ext Dl gs, UDMI CadJogos, UI CadEst adi o, UI CadAr bi t r o, Bor l and. Vcl . I ni Fi l es; t ype TFr mCadJogos = c l ass( TFor m) Panel 1: TPanel ; PgCnt r l Dados: TPageCont r ol ; TabSheet 1: TTabSheet ; TabSheet 2: TTabSheet ; Pnl TmpNor mal : TPanel ; Pnl Pr or r og: TPanel ; Pnl Pen: TPanel ; ChckBxTempoNor mal : TCheckBox; ChckBxPr or r ogacao: TCheckBox; ChckBxPenal t i s : TCheckBox; Label 1: TLabel ; Dt TmPckr Dat aJogo: TDat eTi mePi cker ; Label 2: TLabel ; Label 5: TLabel ; Bt nI nc l ui r Ar bi t r o: TBut t on; Label 4: TLabel ; CmbBxEst adi o: TComboBox; Bt nI nc l ui r Est adi o: TBut t on; Label 3: TLabel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; Panel 5: TPanel ; Panel 6: TPanel ; Panel 7: TPanel ; Label 7: TLabel ; Edt TV: TEdi t ; Panel 8: TPanel ; Panel 9: TPanel ; Panel 10: TPanel ; Panel 11: TPanel ; TabSheet 3: TTabSheet ; MmComent ar i os: TMemo; Label 6: TLabel ; Pnl Di aSemana: TPanel ; CmbBxEqui peCasa: TComboBox; CmbBxEqui peFor a: TComboBox; Edt Gol sCasa: TEdi t ; Edt Gol sCasaPr or r og: TEdi t ; Edt Gol sCasaPen: TEdi t ; Edt Gol sFor a: TEdi t ; Edt Gol sFor aPr or r og: TEdi t ; Edt Gol sFor aPen: TEdi t ; Edt Publ i co: TEdi t ; Edt Hor aJogo: TMaskEdi t ; CmbBxAr bi t r o: TComboBox; Pnl Equi peCasa: TPanel ; Panel 13: TPanel ; Pnl Equi peFor a: TPanel ; Edt Chut esCasa: TEdi t ; Edt Fal t asCasa: TEdi t ; Edt Escant ei osCasa: TEdi t ;

Page 199: 5.1 Programa de Controle de Campeonatos de Futebol

199

Edt I mpedi ment osCasa: TEdi t ; Edt Chut esFor a: TEdi t ; Edt Fal t asFor a: TEdi t ; Edt I mpedi ment osFor a: TEdi t ; Edt Escant ei osFor a: TEdi t ; Panel 12: TPanel ; I mgEqui peFor a: TI mage; Panel 14: TPanel ; I mgEqui peCasa: TI mage; Panel 15: TPanel ; I mgEst adi o: TI mage; TabSheet 4: TTabSheet ; Bt nFot o1: TBut t on; Panel 17: TPanel ; Bt nFot o2: TBut t on; OpenPi ct ur eDi al og1: TOpenPi ct ur eDi al og; I mgJogo2: TI mage; Panel 16: TPanel ; I mgJogo1: TI mage; I mgBr anco: TI mage; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxTempoNor mal Cl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxPr or r ogacaoCl i ck( Sender : TObj ect ) ; pr ocedur e ChckBxPenal t i sCl i ck( Sender : TObj ect ) ; pr ocedur e Dt TmPckr Dat aJogoChange( Sender : TObj ect ) ; pr ocedur e Edt Gol sFor aKeyPr ess( Sender : TObj ect ; var Key: Char ) ; pr ocedur e CmbBxEqui peCasaChange( Sender : TObj ect ) ; pr ocedur e For mCr eat e( Sender : TObj ect ) ; pr ocedur e CmbBxEqui peFor aChange( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e CmbBxEst adi oChange( Sender : TObj ect ) ; pr ocedur e Bt nFot o1Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nFot o2Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Ar bi t r oCl i ck( Sender : TObj ect ) ; pr ocedur e At ual i zaCmbBxEst adi o; pr ocedur e At ual i zaCmbBxAr bi t r o; pr ocedur e Edt Hor aJogoChange( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } CodTempor ada, CodFase, CodGr upo, CodRodada, CodJogo : i nt eger ; Tempor ada: TTempor ada; MeusUt i l s : TMeusUt i l s ; conBD: TDt Mdl Dados; BD: TDt Mdl I CadJogos; St at us: St r i ng; / / A: Al t er ar Jogo; N: NovoJogo; publ i c { Publ i c decl ar at i ons } pr ocedur e Most r ar ( umaTempor ada : TTempor ada; umCodTemp, umaFase, umGr upo, umaRodada, umCodJogo : i nt eger ; umSt at us: St r i ng) ; pr ocedur e Set BD ( var conBD: TDt Mdl Dados) ; pr ocedur e Car r egar DadosJogo; pr ocedur e At ual i zar DadosJogo; pr ocedur e Set Est adi o; f unct i on Val i daJogo : bool ean; f unct i on Test aHor ar i o : bool ean; end; var Fr mCadJogos: TFr mCadJogos; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadJogos. Most r ar ( umaTempor ada : TTempor ada; umCodTemp, umaFase, umGr upo, umaRodada, umCodJogo : i nt eger ; umSt at us: St r i ng) ; var SQL: St r i ng; NumTi mesCadast r ados: I nt eger ; umaDat a, umaHor a: St r i ng; Ar qI ni : TI ni Fi l e; begi n Tempor ada : = umaTempor ada; CodTempor ada : = umCodTemp; CodFase : = umaFase; CodGr upo : = umGr upo;

Page 200: 5.1 Programa de Controle de Campeonatos de Futebol

200

CodRodada : = umaRodada; CodJogo : = umCodJogo; St at us : = umSt at us; Ar qI ni : = TI ni Fi l e. Cr eat e( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; umaDat a : = Ar qI ni . ReadSt r i ng( ' CadJogo' , ' Dat a' , umaDat a) ; umaHor a : = Ar qI ni . ReadSt r i ng( ' CadJogo' , ' Hor a' , umaHor a) ; Dt TmPckr Dat aJogo. Dat eTi me : = St r ToDat eTi me( umaDat a) ; Edt Hor aJogo. Text : = umaHor a; Ar qI ni . Fr ee; SQL : = ' Sel ect COUNT( * ) f r om EQUI PECOMPETETEMPORADA wher e CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; NumTi mesCadast r ados : = Fi el dByName( ' Count ' ) . asI nt eger ; end; i f NumTi mesCadast r ados > 1 t hen begi n Sel f . At ual i zar DadosJogo; i f St at us = ' A' t hen begi n Sel f . Car r egar DadosJogo; end; Pnl Di aSemana. Capt i on : = MeusUt i l s . Di aDaSemana( Dt TmPckr Dat aJogo. Dat e) ; showModal ; end el se begi n ShowMessage( ' Est a Tempor ada não possui equi pes par a i nc l ui r o j ogo' ) ; end; end; pr ocedur e TFr mCadJogos. Car r egar DadosJogo; var codEst , i : i nt eger ; achou : bool ean; Hor a, Mi nut o: St r i ng; begi n BD. SQLDt St Jogo. Par amByName( ' Cod' ) . AsI nt eger : = codJogo; wi t h BD. Cl nt Dt St Jogo do begi n Cl ose; Open; Fi r s t ; / / - - - - - - At ual i za o Ti me da Casa achou : = f al se; i : = 0; whi l e ( achou=f al se) and ( i < CmbBxEqui peCasa. I t ems. Count ) do begi n i f TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ i ] ) . Get Oi d = Fi el dByName( ' CodEqui peCasa' ) . asI nt eger t hen begi n Achou : = t r ue; CmbBxEqui peCasa. I t emI ndex : = i ; end; i : = i + 1; end; Pnl Equi peCasa. capt i on : = CmbBxEqui peCasa. I t ems. St r i ngs[ CmbBxEqui peCasa. I t emI ndex] ; Sel f . CmbBxEqui peCasaChange( ni l ) ; / / - - - - - - At ual i za o Ti me da For a achou : = f al se; i : = 0; whi l e ( achou=f al se) and ( i < CmbBxEqui peFor a. I t ems. Count ) do begi n i f TI t emCombo( CmbBxEqui peFor a. I t ems. Obj ect s[ i ] ) . Get Oi d = Fi el dByName( ' CodEqui peFor a' ) . asI nt eger t hen begi n Achou : = t r ue; CmbBxEqui peFor a. I t emI ndex : = i ; end; i : = i + 1; end; Pnl Equi peFor a. capt i on : = CmbBxEqui peFor a. I t ems. St r i ngs[ CmbBxEqui peFor a. I t emI ndex] ; Sel f . CmbBxEqui peFor aChange( ni l ) ; / / - - - - - - At ual i za o Est adi o do Jogo achou : = f al se; i : = 0; whi l e ( achou=f al se) and ( i < CmbBxEst adi o. I t ems. Count ) do begi n i f TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ i ] ) . Get Oi d = Fi el dByName( ' CodEst adi o' ) . asI nt eger t hen begi n Achou : = t r ue; CmbBxEst adi o. I t emI ndex : = i ; end; i : = i + 1;

Page 201: 5.1 Programa de Controle de Campeonatos de Futebol

201

end; Sel f . CmbBxEst adi oChange( ni l ) ; / / - - - - - - At ual i za o Ar bi t r o do Jogo achou : = f al se; i : = 0; whi l e ( achou=f al se) and ( i < CmbBxAr bi t r o. I t ems. Count ) do begi n i f TI t emCombo( CmbBxAr bi t r o. I t ems. Obj ect s[ i ] ) . Get Oi d = Fi el dByName( ' CodAr bi t r o' ) . asI nt eger t hen begi n Achou : = t r ue; CmbBxAr bi t r o. I t emI ndex : = i ; end; i : = i + 1; end; / / - - - - - - At ual i za Demai s campos i f Fi el dByName( ' Real i zado' ) . asI nt eger = 1 t hen begi n CmbBxEqui peCasa. Enabl ed : = Fal se; CmbBxEqui peFor a. Enabl ed : = Fal se; ChckBxTempoNor mal . Checked : = Tr ue; ChckBxTempoNor mal . Enabl ed : = Tr ue; Edt Gol sCasa. Enabl ed : = Tr ue; Edt Gol sCasa. Text : = Fi el dByName( ' Gol sTi meCasa' ) . asSt r i ng; Edt Gol sFor a. Enabl ed : = Tr ue; Edt Gol sFor a. Text : = Fi el dByName( ' Gol sTi meFor a' ) . asSt r i ng; Edt Fal t asCasa. Enabl ed : = Tr ue; Edt Fal t asCasa. Text : = Fi el dByName( ' Est at Fal t aCasa' ) . asSt r i ng; Edt Fal t asFor a. Enabl ed : = Tr ue; Edt Fal t asFor a. Text : = Fi el dByName( ' Est at Fal t aFor a' ) . asSt r i ng; Edt Escant ei osCasa. Enabl ed : = Tr ue; Edt Escant ei osCasa. Text : = Fi el dByName( ' Est at Escant ei oCasa' ) . asSt r i ng; Edt Escant ei osFor a. Enabl ed : = Tr ue; Edt Escant ei osFor a. Text : = Fi el dByName( ' Est at Escant ei oFor a' ) . asSt r i ng; Edt I mpedi ment osCasa. Enabl ed : = Tr ue; Edt I mpedi ment osCasa. Text : = Fi el dByName( ' Est at I mpedi ment oCasa' ) . asSt r i ng; Edt I mpedi ment osFor a. Enabl ed : = Tr ue; Edt I mpedi ment osFor a. Text : = Fi el dByName( ' Est at I mpedi ment oFor a' ) . asSt r i ng; Edt Chut esCasa. Enabl ed : = Tr ue; Edt Chut esCasa. Text : = Fi el dByName( ' Est at Chut eCasa' ) . asSt r i ng; Edt Chut esFor a. Enabl ed : = Tr ue; Edt Chut esFor a. Text : = Fi el dByName( ' Est at Chut eFor a' ) . asSt r i ng; Edt Publ i co. Text : = Fi el dByName( ' Publ i co' ) . asSt r i ng; i f Fi el dByName( ' Pr or r ogacao' ) . asI nt eger = 1 t hen begi n ChckBxPr or r ogacao. Checked : = Tr ue; ChckBxPr or r ogacao. Enabl ed : = Tr ue; Edt Gol sCasaPr or r og. Text : = Fi el dByName( ' Gol sTi meCasaPr or r ogacao' ) . asSt r i ng; Edt Gol sFor aPr or r og. Text : = Fi el dByName( ' Gol sTi meFor aPr or r ogacao' ) . asSt r i ng; i f Fi el dByName( ' Penal t i s ' ) . asI nt eger = 1 t hen begi n ChckBxPenal t i s . Checked : = Tr ue; ChckBxPenal t i s . Enabl ed : = Tr ue; Edt Gol sCasaPen. Text : = Fi el dByName( ' Gol sTi meCasaPenal t i s ' ) . asSt r i ng; Edt Gol sFor aPen. Text : = Fi el dByName( ' Gol sTi meFor aPenal t i s ' ) . asSt r i ng; end; end; end; Edt TV. Text : = Fi el dByName( ' TV' ) . asSt r i ng; Dt TmPckr Dat aJogo. Dat eTi me : = Fi el dByName( ' Dat aHor aJogo' ) . asDat eTi me; Hor a : = Ti meToSt r ( Fi el dByName( ' Dat aHor aJogo' ) . asDat eTi me) . Subst r i ng( 0, 2) ; Mi nut o : = Ti meToSt r ( Fi el dByName( ' Dat aHor aJogo' ) . asDat eTi me) . Subst r i ng( 3, 2) ; Edt Hor aJogo. Text : = Hor a + ' : ' + Mi nut o; MmComent ar i os. Li nes. Add ( Fi el dByName( ' Not i c i a' ) . asSt r i ng) ; I mgJogo1. Pi ct ur e. Bi t Map. LoadFr omSt r eam( Cr eat eBl obSt r eam( Fi el dByName( ' Fot o1' ) , bmRead) ) ; I mgJogo2. Pi ct ur e. Bi t Map. LoadFr omSt r eam( Cr eat eBl obSt r eam( Fi el dByName( ' Fot o2' ) , bmRead) ) ; end; end; pr ocedur e TFr mCadJogos. Set BD ( var conBD: TDt Mdl Dados) ; begi n BD : = TDt Mdl I CadJogos. Cr eat e( ni l ) ; BD. Set ConexaoBD( conBD) ; end; pr ocedur e TFr mCadJogos. At ual i zar DadosJogo; var I t emCombo : TI t emCombo; I magem: TSt r eam; umaDat a: St r i ng;

Page 202: 5.1 Programa de Controle de Campeonatos de Futebol

202

begi n / / - - - - - - At ual i za os ComboBox dos Ti mes da Casa e dos Ti mes de For a - - - - - - - - - - - BD. SQLDt St Equi pe. Par amByName( ' codTemp' ) . AsI nt eger : = codTempor ada; wi t h BD. Cl nt Dt St Equi pe do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( Fi el dByName( ' CodEqui pe' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng) ; I t emCombo. set Oi d2( Fi el dByName( ' CodEst adi o' ) . asI nt eger ) ; CmbBxEqui peCasa. I t ems. AddObj ect ( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng, I t emCombo) ; CmbBxEqui peFor a. I t ems. AddObj ect ( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng, I t emCombo) ; Next ; end; end; CmbBxEqui peCasa. I t emI ndex : = 0; CmbBxEqui peFor a. I t emI ndex : = 1; Pnl Equi peCasa. capt i on : = CmbBxEqui peCasa. I t ems. St r i ngs[ CmbBxEqui peCasa. I t emI ndex] ; Pnl Equi peFor a. capt i on : = CmbBxEqui peFor a. I t ems. St r i ngs[ CmbBxEqui peFor a. I t emI ndex] ; / / - - - - - - At ual i za os ComboBox do Jui z - - - - - - - - - - - Sel f . At ual i zaCmbBxAr bi t r o; / / - - - - - - At ual i za os ComboBox do Est ádi o - - - - - - - - - - - Sel f . At ual i zaCmbBxEst adi o; Sel f . CmbBxEqui peCasaChange( ni l ) ; Sel f . CmbBxEqui peFor aChange( ni l ) ; end; pr ocedur e TFr mCadJogos. At ual i zaCmbBxAr bi t r o; var I t emCombo: TI t emCombo; i : I nt eger ; begi n f or i : =0 t o CmbBxAr bi t r o. I t ems. Count - 1 do begi n TI t emCombo( CmbBxAr bi t r o. I t ems. Obj ect s[ i ] ) . Dest r oy; end; CmbBxAr bi t r o. I t ems. Cl ear ; I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( 0) ; CmbBxAr bi t r o. I t ems. AddObj ect ( ' ' , I t emCombo) ; BD. SQLDt St Ar bi t r o. Par amByName( ' codTemp' ) . AsI nt eger : = codTempor ada; wi t h BD. Cl nt Dt St Ar bi t r o do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( Fi el dByName( ' CodAr bi t r o' ) . asI nt eger ) ; I t emCombo. Set Nome( Fi el dByName( ' NomeAr bi t r o' ) . asSt r i ng) ; CmbBxAr bi t r o. I t ems. AddObj ect ( Fi el dByName( ' NomeAr bi t r o' ) . asSt r i ng, I t emCombo) ; Next ; end; end; CmbBxAr bi t r o. I t emI ndex : = 0; end; pr ocedur e TFr mCadJogos. At ual i zaCmbBxEst adi o; var I t emCombo: TI t emCombo; I magem: TSt r eam; i : I nt eger ; begi n f or i : =0 t o CmbBxEst adi o. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ i ] ) . Dest r oy; end; CmbBxEst adi o. I t ems. Cl ear ; I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( 0) ; CmbBxEst adi o. I t ems. AddObj ect ( ' ' , I t emCombo) ; wi t h BD. Cl nt Dt St Est adi o do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( Fi el dByName( ' CodEst adi o' ) . asI nt eger ) ;

Page 203: 5.1 Programa de Controle de Campeonatos de Futebol

203

I t emCombo. Set Nome( Fi el dByName( ' NomeEst adi o' ) . asSt r i ng) ; CmbBxEst adi o. I t ems. AddObj ect ( Fi el dByName( ' NomeEst adi o' ) . asSt r i ng + ' , ' + Fi el dByName( ' Ci dadeEst adi o' ) . asSt r i ng, I t emCombo) ; Next ; end; end; Sel f . Set Est adi o; Sel f . CmbBxEst adi oChange( ni l ) ; end; pr ocedur e TFr mCadJogos. Bt nGr avar Cl i ck( Sender : TObj ect ) ; var Ret or no : St r i ng; CodEst Temp, CodEqui peCasa, CodEqui peFor a, CodAr bi t r o, CodEst adi o, Real i zado, Pr or r ogacao, Penal t i s : I nt eger ; Gol sTi meCasa, Gol sTi meFor a, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Gol sTi meCasaPen, Gol sTi meFor aPen : I nt eger ; Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a : I nt eger ; Dat aHor aJogo: TDat eTi me; Not i c i a : St r i ng; Tv : St r i ng; Fot o1, Fot o2 : TMemor ySt r eam; begi n i f Val i daJogo t hen begi n CodEst Temp : = CodRodada; CodEqui peCasa : = TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ CmbBxEqui peCasa. I t emI ndex] ) . Get Oi d; CodEqui peFor a : = TI t emCombo( CmbBxEqui peFor a. I t ems. Obj ect s[ CmbBxEqui peFor a. I t emI ndex] ) . Get Oi d; CodAr bi t r o : = TI t emCombo( CmbBxAr bi t r o. I t ems. Obj ect s[ CmbBxAr bi t r o. I t emI ndex] ) . Get Oi d; CodEst adi o : = TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ CmbBxEst adi o. I t emI ndex] ) . Get Oi d; TV : = Edt TV. Text ; Not i c i a : = MmComent ar i os. Li nes. Text ; i f ChckBxTempoNor mal . Checked = Tr ue t hen Real i zado : = 1 el se Real i zado : = 0; Gol sTi meCasa : = St r ToI nt ( Edt Gol sCasa. Text ) ; Gol sTi meFor a : = St r ToI nt ( Edt Gol sFor a. Text ) ; Chut esTi meCasa : = St r ToI nt ( Edt Chut esCasa. Text ) ; Chut esTi meFor a : = St r ToI nt ( Edt Chut esFor a. Text ) ; I mpedTi meCasa : = St r ToI nt ( Edt I mpedi ment osCasa. Text ) ; I mpedTi meFor a : = St r ToI nt ( Edt I mpedi ment osFor a. Text ) ; Escant ei osTi meCasa : = St r ToI nt ( Edt Escant ei osCasa. Text ) ; Escant ei osTi meFor a : = St r ToI nt ( Edt Escant ei osFor a. Text ) ; Fal t asTi meCasa : = St r ToI nt ( Edt Fal t asCasa. Text ) ; Fal t asTi meFor a : = St r ToI nt ( Edt Fal t asFor a. Text ) ; Publ i co : = St r ToI nt ( Edt Publ i co. Text ) ; i f ChckBxPr or r ogacao. Checked = Tr ue t hen Pr or r ogacao : = 1 el se Pr or r ogacao : = 0; Gol sTi meCasaPr or r og : = St r ToI nt ( Edt Gol sCasaPr or r og. Text ) ; Gol sTi meFor aPr or r og : = St r ToI nt ( Edt Gol sFor aPr or r og. Text ) ; i f ChckBxPenal t i s . Checked = Tr ue t hen Penal t i s : = 1 el se Penal t i s : = 0; Gol sTi meCasaPen : = St r ToI nt ( Edt Gol sCasaPen. Text ) ; Gol sTi meFor aPen : = St r ToI nt ( Edt Gol sFor aPen. Text ) ; Dat aHor aJogo : = I nt ( Dt TmPckr Dat aJogo. dat e) + Fr ac( St r ToTi me( Edt Hor aJogo. Text ) ) ; Fot o1 : = TMemor ySt r eam. Cr eat e; Fot o2 : = TMemor ySt r eam. Cr eat e; I mgJogo1. Pi ct ur e. Gr aphi c. SaveToSt r eam( Fot o1) ; I mgJogo2. Pi ct ur e. Gr aphi c. SaveToSt r eam( Fot o2) ; i f s t at us = ' N' t hen begi n t r y Tempor ada. NovoJogo( CodEst Temp, CodEqui peCasa, CodEqui peFor a, Dat aHor aJogo, CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a, Not i c i a, TV, Fot o1, Fot o2) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Cont act e o Supor t e' ) ; end; end; end el se begi n t r y

Page 204: 5.1 Programa de Controle de Campeonatos de Futebol

204

Tempor ada. Al t er ar Jogo( CodJogo, CodEst Temp, CodEqui peCasa, CodEqui peFor a, Dat aHor aJogo, CodAr bi t r o, CodEst adi o, Real i zado, Gol sTi meCasa, Gol sTi meFor a, Pr or r ogacao, Gol sTi meCasaPr or r og, Gol sTi meFor aPr or r og, Penal t i s , Gol sTi meCasaPen, Gol sTi meFor aPen, Publ i co, Chut esTi meCasa, Chut esTi meFor a, I mpedTi meCasa, I mpedTi meFor a, Fal t asTi meCasa, Fal t asTi meFor a, Escant ei osTi meCasa, Escant ei osTi meFor a, Not i c i a, TV, Fot o1, Fot o2) ; except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; sel f . Cl ose; end; end; f unct i on TFr mCadJogos. Val i daJogo : bool ean; var Hor a : TDat eTi me; begi n i f TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ CmbBxEqui peCasa. I t emI ndex] ) . Get Oi d = TI t emCombo( CmbBxEqui peFor a. I t ems. Obj ect s[ CmbBxEqui peFor a. I t emI ndex] ) . Get Oi d t hen begi n showMessage ( ' Er r o: Ti me Anf i t r i ão = Ti me Vi s i t ant e' ) ; CmbBxEqui peCasa. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxTempoNor mal . Checked = Tr ue) and ( Edt Gol sCasa. Text = ' ' ) t hen begi n showMessage ( ' Er r o: Pl acar I nvál i do no Tempo Nor mal ' ) ; Edt Gol sCasa. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxTempoNor mal . Checked = Tr ue) and ( Edt Gol sFor a. Text = ' ' ) t hen begi n showMessage ( ' Er r o: Pl acar I nvál i do no Tempo Nor mal ' ) ; Edt Gol sFor a. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxPr or r ogacao. Checked = Tr ue) and ( Edt Gol sCasaPr or r og. Text = ' ' ) t hen begi n ShowMessage ( ' Er r o: Pl acar I nvál i do na Pr or r ogação' ) ; Edt Gol sCasaPr or r og. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxPr or r ogacao. Checked = Tr ue) and ( Edt Gol sFor aPr or r og. Text = ' ' ) t hen begi n showMessage ( ' Er r o: Pl acar I nvál i do na Pr or r ogação' ) ; Edt Gol sFor aPr or r og. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxPenal t i s . Checked = Tr ue) and ( Edt Gol sCasaPen. Text = ' ' ) t hen begi n ShowMessage ( ' Er r o: Pl acar I nvál i do nos Pênal t i s ' ) ; Edt Gol sCasaPen. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( ChckBxPenal t i s . Checked = Tr ue) and ( Edt Gol sFor aPen. Text = ' ' ) t hen begi n showMessage ( ' Er r o: Pl acar I nvál i do nos Pênat i l s ' ) ; Edt Gol sFor aPen. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( Edt Gol sCasaPen. Text = Edt Gol sFor aPen. Text ) and ( ChckBxPenal t i s . Checked = Tr ue) t hen begi n showMessage ( ' Er r o: Não pode haver empat e nos penal t i s ' ) ; Edt Gol sCasaPen. Set Focus; Val i daJogo : = f al se; end el se begi n i f sel f . Test aHor ar i o = f al se t hen begi n showMessage ( ' Er r o: Hor ár i o I nvál i do' ) ; Edt Hor aJogo. Set Focus; Val i daJogo : = f al se; end el se begi n i f ( Edt Gol sCasa. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Gol sCasa. Text : = ' 0' ;

Page 205: 5.1 Programa de Controle de Campeonatos de Futebol

205

i f ( Edt Gol sFor a. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Gol sFor a. Text : = ' 0' ; i f ( Edt Gol sCasaPr or r og. Text = ' ' ) or ( ChckBxPr or r ogacao. Checked = Fal se) t hen Edt Gol sCasaPr or r og. Text : = ' 0' ; i f ( Edt Gol sFor aPr or r og. Text = ' ' ) or ( ChckBxPr or r ogacao. Checked = Fal se) t hen Edt Gol sFor aPr or r og. Text : = ' 0' ; i f ( Edt Gol sCasaPen. Text = ' ' ) or ( ChckBxPenal t i s . Checked = Fal se) t hen Edt Gol sCasaPen. Text : = ' 0' ; i f ( Edt Gol sFor aPen. Text = ' ' ) or ( ChckBxPenal t i s . Checked = Fal se) t hen Edt Gol sFor aPen. Text : = ' 0' ; i f ( Edt Chut esCasa. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Chut esCasa. Text : = ' 0' ; i f ( Edt Chut esFor a. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Chut esFor a. Text : = ' 0' ; i f ( Edt I mpedi ment osCasa. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt I mpedi ment osCasa. Text : = ' 0' ; i f ( Edt I mpedi ment osFor a. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt I mpedi ment osFor a. Text : = ' 0' ; i f ( Edt Escant ei osCasa. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Escant ei osCasa. Text : = ' 0' ; i f ( Edt Escant ei osFor a. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Escant ei osFor a. Text : = ' 0' ; i f ( Edt Fal t asCasa. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Fal t asCasa. Text : = ' 0' ; i f ( Edt Fal t asFor a. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Fal t asFor a. Text : = ' 0' ; i f ( Edt Publ i co. Text = ' ' ) or ( ChckBxTempoNor mal . Checked = Fal se) t hen Edt Publ i co. Text : = ' 0' ; i f ( Edt Hor aJogo. Text = ' : ' ) t hen Edt Hor aJogo. Text : = ' 00: 00' ; Val i daJogo : = t r ue; end; end; end; end; end; end; end; end; end; end; pr ocedur e TFr mCadJogos. ChckBxTempoNor mal Cl i ck( Sender : TObj ect ) ; begi n i f ChckBxTempoNor mal . Checked = Tr ue t hen begi n Edt Gol sCasa. Enabl ed : = Tr ue; Edt Gol sFor a. Enabl ed : = Tr ue; ChckBxPr or r ogacao. Enabl ed : = Tr ue; ChckBxPenal t i s . Enabl ed : = Tr ue; Edt Fal t asCasa. Enabl ed : = Tr ue; Edt Fal t asFor a. Enabl ed : = Tr ue; Edt Escant ei osCasa. Enabl ed : = Tr ue; Edt Escant ei osFor a. Enabl ed : = Tr ue; Edt I mpedi ment osCasa. Enabl ed : = Tr ue; Edt I mpedi ment osFor a. Enabl ed : = Tr ue; Edt Chut esCasa. Enabl ed : = Tr ue; Edt Chut esFor a. Enabl ed : = Tr ue; end el se begi n ChckBxPr or r ogacao. Checked : = Fal se; ChckBxPenal t i s . Checked : = Fal se; Edt Gol sCasa. Enabl ed : = Fal se; Edt Gol sFor a. Enabl ed : = Fal se; ChckBxPr or r ogacao. Enabl ed : = Fal se; ChckBxPenal t i s . Enabl ed : = Fal se; Edt Fal t asCasa. Enabl ed : = Fal se; Edt Fal t asFor a. Enabl ed : = Fal se; Edt Escant ei osCasa. Enabl ed : = Fal se; Edt Escant ei osFor a. Enabl ed : = Fal se; Edt I mpedi ment osCasa. Enabl ed : = Fal se; Edt I mpedi ment osFor a. Enabl ed : = Fal se; Edt Chut esCasa. Enabl ed : = Fal se; Edt Chut esFor a. Enabl ed : = Fal se; end; end; pr ocedur e TFr mCadJogos. ChckBxPr or r ogacaoCl i ck( Sender : TObj ect ) ; begi n i f ChckBxPr or r ogacao. Checked = Tr ue t hen begi n

Page 206: 5.1 Programa de Controle de Campeonatos de Futebol

206

Edt Gol sCasaPr or r og. Enabl ed : = Tr ue; Edt Gol sFor aPr or r og. Enabl ed : = Tr ue; end el se begi n Edt Gol sCasaPr or r og. Enabl ed : = Fal se; Edt Gol sFor aPr or r og. Enabl ed : = Fal se; end; end; pr ocedur e TFr mCadJogos. ChckBxPenal t i sCl i ck( Sender : TObj ect ) ; begi n i f ChckBxPenal t i s . Checked = Tr ue t hen begi n Edt Gol sCasaPen. Enabl ed : = Tr ue; Edt Gol sFor aPen. Enabl ed : = Tr ue; end el se begi n Edt Gol sCasaPen. Enabl ed : = Fal se; Edt Gol sFor aPen. Enabl ed : = Fal se; end; end; pr ocedur e TFr mCadJogos. Dt TmPckr Dat aJogoChange( Sender : TObj ect ) ; var Ar qI ni : TI ni Fi l e; begi n Pnl Di aSemana. Capt i on : = MeusUt i l s . Di aDaSemana ( Dt TmPckr Dat aJogo. Dat e) ; Ar qI ni : = TI ni Fi l e. Cr eat e( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; t r y Ar qI ni . Wr i t eSt r i ng( ' CadJogo' , ' Dat a' , Dat eTi meToSt r ( Dt TmPckr Dat aJogo. Dat eTi me) ) ; Fi nal l y Ar qI ni . Fr ee; end; end; pr ocedur e TFr mCadJogos. Edt Gol sFor aKeyPr ess( Sender : TObj ect ; var Key: Char ) ; begi n i f not ( Key i n [ ' 0' . . ' 9' , #8, #0] ) t hen begi n Key : = #0; Beep; end; end; pr ocedur e TFr mCadJogos. Set Est adi o; var codEst , i : i nt eger ; achou : bool ean; begi n codEst : = TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ CmbBxEqui peCasa. I t emI ndex] ) . Get Oi d2; achou : = f al se; i : = 1; whi l e ( achou=f al se) and ( i < CmbBxEst adi o. I t ems. Count ) do begi n i f TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ i ] ) . Get Oi d = codEst t hen begi n Achou : = t r ue; CmbBxEst adi o. I t emI ndex : = i ; end; i : = i + 1; end; i f Achou = f al se t hen begi n CmbBxEst adi o. I t emI ndex : = 0; end; Sel f . CmbBxEst adi oChange( ni l ) end; pr ocedur e TFr mCadJogos. CmbBxEqui peCasaChange( Sender : TObj ect ) ; var SQL: St r i ng; begi n Sel f . Set Est adi o; Pnl Equi peCasa. capt i on : = CmbBxEqui peCasa. I t ems. St r i ngs[ CmbBxEqui peCasa. I t emI ndex] ; SQL : = ' sel ect ESCUDO f r om EQUI PE wher e CODEQUI PE=' + I nt ToSt r ( TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ CmbBxEqui peCasa. I t emI ndex] ) . Get Oi d) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ;

Page 207: 5.1 Programa de Controle de Campeonatos de Futebol

207

I mgEqui peCasa. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Dados. Cr eat eBl obSt r eam( BD. Cl nt Dt St Dados. Fi el dByName( ' Escudo' ) , bmRead) ) ; end; I mgEqui peCasa. Pi ct ur e. Bi t map. Dest r oy; end; pr ocedur e TFr mCadJogos. For mCr eat e( Sender : TObj ect ) ; begi n PgCnt r l Dados. Act i vePage : = TabSheet 1; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TFr mCadJogos. CmbBxEqui peFor aChange( Sender : TObj ect ) ; var SQL: St r i ng; begi n Pnl Equi peFor a. capt i on : = CmbBxEqui peFor a. I t ems. St r i ngs[ CmbBxEqui peFor a. I t emI ndex] ; SQL : = ' sel ect ESCUDO f r om EQUI PE wher e CODEQUI PE=' + I nt ToSt r ( TI t emCombo( CmbBxEqui peFor a. I t ems. Obj ect s[ CmbBxEqui peFor a. I t emI ndex] ) . Get Oi d) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; I mgEqui peFor a. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Dados. Cr eat eBl obSt r eam( BD. Cl nt Dt St Dados. Fi el dByName( ' Escudo' ) , bmRead) ) ; end; I mgEqui peFor a. Pi ct ur e. Bi t map. Dest r oy; end; f unct i on TFr mCadJogos. Test aHor ar i o : bool ean; var Hor a : TDat eTi me; begi n i f edt Hor aJogo. Text <> ' : ' t hen begi n t r y Hor a : = St r ToTi me ( edt Hor aJogo. Text ) ; Test aHor ar i o : = t r ue; except on e: EConver t Er r or do begi n Test aHor ar i o : = f al se; end; end; end el se begi n Test aHor ar i o : = t r ue; end; end; pr ocedur e TFr mCadJogos. For mDest r oy( Sender : TObj ect ) ; var i : I nt eger ; begi n f or i : =0 t o CmbBxEqui peCasa. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEqui peCasa. I t ems. Obj ect s[ i ] ) . Dest r oy; end; f or i : =0 t o CmbBxEqui peFor a. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEqui peFor a. I t ems. Obj ect s[ i ] ) . Dest r oy; end; f or i : =0 t o CmbBxEst adi o. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ i ] ) . Dest r oy; end; f or i : =0 t o CmbBxAr bi t r o. I t ems. Count - 1 do begi n TI t emCombo( CmbBxAr bi t r o. I t ems. Obj ect s[ i ] ) . Dest r oy; end; BD. Dest r oy; MeusUt i l s . Fr ee; Tempor ada. Dest r oy; end; pr ocedur e TFr mCadJogos. CmbBxEst adi oChange( Sender : TObj ect ) ; var SQL: St r i ng; begi n i f CmbBxEst adi o. I t emI ndex <> 0 t hen begi n

Page 208: 5.1 Programa de Controle de Campeonatos de Futebol

208

SQL : = ' sel ect FOTO f r om ESTADI O wher e CODESTADI O=' + I nt ToSt r ( TI t emCombo( CmbBxEst adi o. I t ems. Obj ect s[ CmbBxEst adi o. I t emI ndex] ) . Get Oi d) ; BD. SQLDt St Dados. CommandText : = SQL; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; I mgEst adi o. Pi ct ur e. Bi t map. LoadFr omSt r eam( BD. Cl nt Dt St Dados. Cr eat eBl obSt r eam( BD. Cl nt Dt St Dados. Fi el dByName( ' Fot o' ) , bmRead) ) ; end; end el se begi n I mgEst adi o. Pi ct ur e : = I mgBr anco. Pi ct ur e; end; I mgEst adi o. Pi ct ur e. Bi t map. Dest r oy; end; pr ocedur e TFr mCadJogos. Bt nFot o1Cl i ck( Sender : TObj ect ) ; begi n i f OpenPi ct ur eDi al og1. Execut e t hen begi n I mgJogo1. Pi ct ur e. LoadFr omFi l e( OpenPi ct ur eDi al og1. Fi l eName) ; end; end; pr ocedur e TFr mCadJogos. Bt nFot o2Cl i ck( Sender : TObj ect ) ; begi n i f OpenPi ct ur eDi al og1. Execut e t hen begi n I mgJogo2. Pi ct ur e. LoadFr omFi l e( OpenPi ct ur eDi al og1. Fi l eName) ; end; end; pr ocedur e TFr mCadJogos. Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n sel f . Cl ose; end; pr ocedur e TFr mCadJogos. Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; var Fr mCadEst adi o: TFr mCadEst adi o; begi n Fr mCadEst adi o : = TFr mCadEst adi o. Cr eat e( ni l ) ; Fr mCadEst adi o. Set BD( conBD) ; Fr mCadEst adi o. Most r ar ; Fr mCadEst adi o. Dest r oy; Sel f . At ual i zaCmbBxEst adi o; end; pr ocedur e TFr mCadJogos. Bt nI nc l ui r Ar bi t r oCl i ck( Sender : TObj ect ) ; var Fr mCadAr bi t r o: TFr mCadAr bi t r o; begi n Fr mCadAr bi t r o : = TFr mCadAr bi t r o. Cr eat e( ni l ) ; Fr mCadAr bi t r o. Set BD( conBD) ; Fr mCadAr bi t r o. Most r ar ( Tempor ada) ; Fr mCadAr bi t r o. Dest r oy; Sel f . At ual i zaCmbBxAr bi t r o; end; pr ocedur e TFr mCadJogos. Edt Hor aJogoChange( Sender : TObj ect ) ; var Ar qI ni : TI ni Fi l e; begi n Ar qI ni : = TI ni Fi l e. Cr eat e( ChangeFi l eExt ( Appl i cat i on. Exename, ' . . I NI ' ) ) ; t r y Ar qI ni . Wr i t eSt r i ng( ' CadJogo' , ' Hor a' , Edt Hor aJogo. Text ) ; Fi nal l y Ar qI ni . Fr ee; end; end; end. ============================================================================================ ARQUI VO: UI CadJogador . pas ============================================================================================ uni t UI CadJogador ;

Page 209: 5.1 Programa de Controle de Campeonatos de Futebol

209

i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Ext Dl gs, Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . But t ons, Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Ext Ct r l s , Syst em. Component Model , UDMDados, UTempor ada, UMeuUt i l s , UI t emCombo, UEqui pe; t ype TFr mCadJogador = c l ass( TFor m) I mgBr anco: TI mage; Pnl DadosCamp: TPanel ; Label 1: TLabel ; Label 2: TLabel ; Label 3: TLabel ; Label 4: TLabel ; Label 5: TLabel ; Label 6: TLabel ; Label 7: TLabel ; Label 8: TLabel ; Edt NomeJogador : TEdi t ; Edt Naci onal i dade: TEdi t ; CmbBxPosi cao: TComboBox; Panel 7: TPanel ; I mgJogador : TI mage; Bt nCar r egar I mg: TBut t on; Edt Apel i doJogador : TEdi t ; Dt Dat aNasci ment o: TDat eTi mePi cker ; Edt NumCami sa: TEdi t ; Pnl I dade: TPanel ; Pnl Bt ns: TPanel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; DBGr dJogador es: TDBGr i d; Panel 3: TPanel ; OpenPi ct ur eDi al og1: TOpenPi ct ur eDi al og; Panel 1: TPanel ; CmbBxEqui pe: TComboBox; Edt Emai l : TEdi t ; SQLDt St Equi peDi sput aTemp: TSQLDat aSet ; Dt St Pr vdr Equi peDi sput aTemp: TDat aSet Pr ovi der ; Cl nt Dt St Equi peDi sput aTemp: TCl i ent Dat aSet ; Cl nt Dt St Equi peDi sput aTempCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peDi sput aTempCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempPAI S: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempESCUDO: TBl obFi el d; Cl nt Dt St Equi peDi sput aTempCODESTADI O: TI nt eger Fi el d; Dt Sr cEqui peDi sput aTemp: TDat aSour ce; SQLDt St Jogador : TSQLDat aSet ; Dt St Pr vdr Jogador : TDat aSet Pr ovi der ; Cl nt Dt St Jogador : TCl i ent Dat aSet ; I nt eger Fi el d11: TI nt eger Fi el d; I nt eger Fi el d12: TI nt eger Fi el d; I nt eger Fi el d13: TI nt eger Fi el d; St r i ngFi el d10: TSt r i ngFi el d; St r i ngFi el d11: TSt r i ngFi el d; I nt eger Fi el d14: TI nt eger Fi el d; Dat eFi el d2: TDat eFi el d; St r i ngFi el d12: TSt r i ngFi el d; I nt eger Fi el d15: TI nt eger Fi el d; St r i ngFi el d13: TSt r i ngFi el d; St r i ngFi el d14: TSt r i ngFi el d; Bl obFi el d2: TBl obFi el d; Dt Sr cJogador : TDat aSour ce; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ; Cl nt Dt St Dados: TCl i ent Dat aSet ; Bt nFechar : TBi t Bt n; Bt nI nc l ui r Jogador : TBi t Bt n;

Page 210: 5.1 Programa de Controle de Campeonatos de Futebol

210

Bt nAl t er ar Jogador : TBi t Bt n; Bt nExcl ui r Jogador : TBi t Bt n; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e CmbBxEqui peChange( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; pr ocedur e Edt NumCami saKeyPr ess( Sender : TObj ect ; var Key: Char ) ; pr ocedur e Bt nI nc l ui r Jogador Cl i ck( Sender : TObj ect ) ; pr ocedur e Dt Dat aNasci ment oChange( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Jogador Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; f unct i on Val i daFor mul ar i o : Bool ean; pr ocedur e DBGr dJogador esDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r Jogador Cl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; MeusUt i l s : TMeusUt i l s ; St at us: St r i ng; CodJogador : I nt eger ; CodEqui pe: I nt eger ; Tempor ada: TTempor ada; NumTi mes: I nt eger ; pr ocedur e At ual i zaI nt er f ace; pr ocedur e Bl oquei aFor mul ar i o; pr ocedur e Li ber aFor mul ar i o; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Most r ar ( umaTemp: TTempor ada; umCodEqui pe: I nt eger ) ; end; var Fr mCadJogador : TFr mCadJogador ; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadJogador . Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadJogador . Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TFr mCadJogador . Most r ar ( umaTemp: TTempor ada; umCodEqui pe: I nt eger ) ; var SQL: St r i ng; I t emCombo: TI t emCombo; Achou: Bool ean; i : I nt eger ; begi n Tempor ada : = umaTemp; SQL : = ' Sel ect Count ( * ) f r om EQUI PECOMPETETEMPORADA wher e CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumTi mes : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; i f NumTi mes > 0 t hen begi n Achou : = Fal se; SQLDt St Equi peDi sput aTemp. Par amByName( ' CodTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; wi t h Cl nt Dt St Equi peDi sput aTemp do begi n Cl ose; Open; Fi r s t ; i : = 0; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e;

Page 211: 5.1 Programa de Controle de Campeonatos de Futebol

211

I t emCombo. Set Oi d( Fi el dByName( ' CodEqui pe' ) . AsI nt eger ) ; CmbBxEqui pe. I t ems. AddObj ect ( Fi el dByName( ' NomeEqui pe' ) . asSt r i ng, I t emCombo) ; i f ( ( not Achou) and ( umCodEqui pe >0) ) t hen begi n i : = i + 1; i f Fi el dByName( ' CodEqui pe' ) . AsI nt eger = umCodEqui pe t hen begi n Achou : = Tr ue; i : = i - 1; end; end; Next ; end; CmbBxEqui pe. I t emI ndex : = i ; end; I t emCombo. Fr ee; Sel f . At ual i zaI nt er f ace; end; ShowModal ; end; pr ocedur e TFr mCadJogador . At ual i zaI nt er f ace; var NumJogador es: I nt eger ; SQL: St r i ng; begi n SQL : = ' Sel ect Count ( * ) f r om JOGADOR wher e CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; SQL : = SQL + ' and CODEQUI PE=' + I nt ToSt r ( TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d) ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumJogador es : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; SQLDt St Jogador . Par amByName( ' CodTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; SQLDt St Jogador . Par amByName( ' CodEqui pe' ) . AsI nt eger : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; Cl nt Dt St Jogador . Cl ose; Cl nt Dt St Jogador . Open; Cl nt Dt St Jogador . Fi r s t ; Bt nI nc l ui r Jogador . Enabl ed : = Tr ue; i f NumJogador es > 0 t hen begi n Bt nAl t er ar Jogador . Enabl ed : = Tr ue; Bt nExcl ui r Jogador . Enabl ed : = Tr ue; end el se begi n Bt nAl t er ar Jogador . Enabl ed : = Fal se; Bt nExcl ui r Jogador . Enabl ed : = Fal se; end; end; pr ocedur e TFr mCadJogador . For mDest r oy( Sender : TObj ect ) ; var i : I nt eger ; begi n f or i : =1 t o CmbBxEqui pe. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ i ] ) . Dest r oy; end; MeusUt i l s . Fr ee; Tempor ada. Dest r oy; end; pr ocedur e TFr mCadJogador . Bl oquei aFor mul ar i o; begi n Edt Apel i doJogador . Text : = ' ' ; Edt NomeJogador . Text : = ' ' ; Edt NumCami sa. Text : = ' ' ; CmbBxPosi cao. I t emI ndex : = 0; Edt Naci onal i dade. Text : = ' ' ; Edt Emai l . Text : = ' ' ; Pnl I dade. Capt i on : = ' ' ; I mgJogador . Pi ct ur e : = I mgBr anco. Pi ct ur e; Edt Apel i doJogador . Enabl ed : = Fal se; Edt NomeJogador . Enabl ed : = Fal se; Edt NumCami sa. Enabl ed : = Fal se; CmbBxPosi cao. Enabl ed : = Fal se; Edt Naci onal i dade. Enabl ed : = Fal se; Dt Dat aNasci ment o. Enabl ed : = Fal se; Edt Emai l . Enabl ed : = Fal se;

Page 212: 5.1 Programa de Controle de Campeonatos de Futebol

212

Bt nCar r egar I mg. Enabl ed : = Fal se; Bt nGr avar . Enabl ed : = Fal se; Bt nCancel ar . Enabl ed : = Fal se; Bt nI nc l ui r Jogador . Set Focus; end; pr ocedur e TFr mCadJogador . Li ber aFor mul ar i o; begi n I mgJogador . Pi ct ur e : = I mgJogador . Pi ct ur e; Edt Apel i doJogador . Enabl ed : = Tr ue; Edt NomeJogador . Enabl ed : = Tr ue; Edt NumCami sa. Enabl ed : = Tr ue; CmbBxPosi cao. Enabl ed : = Tr ue; Edt Naci onal i dade. Enabl ed : = Tr ue; Dt Dat aNasci ment o. Enabl ed : = Tr ue; Edt Emai l . Enabl ed : = Tr ue; Bt nCar r egar I mg. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; Pnl I dade. Capt i on : = I nt ToSt r ( MeusUt i l s . Cal cAnos ( Dt Dat aNasci ment o. Dat eTi me) ) + ' ANOS' ; Edt Apel i doJogador . Set Focus; end; pr ocedur e TFr mCadJogador . CmbBxEqui peChange( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i o; Sel f . At ual i zaI nt er f ace; end; pr ocedur e TFr mCadJogador . Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i o; end; pr ocedur e TFr mCadJogador . Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; var Fi l eName : St r i ng; begi n i f OpenPi ct ur eDi al og1. Execut e t hen begi n Fi l eName : = OpenPi ct ur eDi al og1. Fi l eName; I mgJogador . Pi ct ur e. LoadFr omFi l e( Fi l eName) ; end; end; pr ocedur e TFr mCadJogador . Edt NumCami saKeyPr ess( Sender : TObj ect ; var Key: Char ) ; begi n i f not ( Key i n [ ' 0' . . ' 9' , #8, #0] ) t hen begi n Key : = #0; Beep; end; end; pr ocedur e TFr mCadJogador . Bt nI nc l ui r Jogador Cl i ck( Sender : TObj ect ) ; begi n St at us : = ' N' ; CodEqui pe : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; Sel f . Bl oquei aFor mul ar i o; Sel f . Li ber aFor mul ar i o; end; pr ocedur e TFr mCadJogador . Dt Dat aNasci ment oChange( Sender : TObj ect ) ; begi n Pnl I dade. Capt i on : = I nt ToSt r ( MeusUt i l s . Cal cAnos ( Dt Dat aNasci ment o. Dat eTi me) ) + ' ANOS' ; end; pr ocedur e TFr mCadJogador . Bt nAl t er ar Jogador Cl i ck( Sender : TObj ect ) ; begi n St at us : = ' A' ; CodJogador : = Cl nt Dt St Jogador . Fi el dByName( ' CodJogador ' ) . AsI nt eger ; CodEqui pe : = TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d; Sel f . Bl oquei aFor mul ar i o; Sel f . Li ber aFor mul ar i o; Edt Apel i doJogador . Text : = Cl nt Dt St Jogador . Fi el dByName( ' Apel i doJogador ' ) . AsSt r i ng; Edt NomeJogador . Text : = Cl nt Dt St Jogador . Fi el dByName( ' NomeJogador ' ) . AsSt r i ng; Edt NumCami sa. Text : = Cl nt Dt St Jogador . Fi el dByName( ' Numer oCami sa' ) . AsSt r i ng;

Page 213: 5.1 Programa de Controle de Campeonatos de Futebol

213

Case Cl nt Dt St Jogador . Fi el dByName( ' Posi cao' ) . AsI nt eger of 1: CmbBxPosi cao. I t emI ndex : = 0; 2: CmbBxPosi cao. I t emI ndex : = 1; 3: CmbBxPosi cao. I t emI ndex : = 2; 4: CmbBxPosi cao. I t emI ndex : = 3; 5: CmbBxPosi cao. I t emI ndex : = 4; end; Edt Naci onal i dade. Text : = Cl nt Dt St Jogador . Fi el dByName( ' Naci onal i dade' ) . AsSt r i ng; Edt Emai l . Text : = Cl nt Dt St Jogador . Fi el dByName( ' EMai l ' ) . AsSt r i ng; Dt Dat aNasci ment o. Dat eTi me : = Cl nt Dt St Jogador . Fi el dByName( ' Dat aNasci ment o' ) . AsDat eTi me; Pnl I dade. Capt i on : = I nt ToSt r ( MeusUt i l s . Cal cAnos ( Dt Dat aNasci ment o. Dat eTi me) ) + ' ANOS' ; I mgJogador . Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St Jogador . Cr eat eBl obSt r eam( Cl nt Dt St Jogador . Fi el dByName( ' Fot o' ) , bmRead) ) ; end; pr ocedur e TFr mCadJogador . Bt nGr avar Cl i ck( Sender : TObj ect ) ; var Apel i do, Nome, Naci onal i dade, Emai l : St r i ng; Cami sa, Posi cao: I nt eger ; Dat aNasc: TDat eTi me; Fot o: TMemor ySt r eam; Equi pe: TEqui pe; begi n i f Sel f . Val i daFor mul ar i o = Tr ue t hen begi n t r y Apel i do : = Edt Apel i doJogador . Text ; Nome : = Edt NomeJogador . Text ; Naci onal i dade : = Edt Naci onal i dade. Text ; Emai l : = Edt Emai l . Text ; Cami sa : = St r ToI nt ( Edt NumCami sa. Text ) ; Case CmbBxPosi cao. I t emI ndex of 0: Posi cao : = 1; 1: Posi cao : = 2; 2: Posi cao : = 3; 3: Posi cao : = 4; 4: Posi cao : = 5; end; Dat aNasc : = Dt Dat aNasci ment o. Dat eTi me; Fot o : = TMemor ySt r eam. Cr eat e; I mgJogador . Pi ct ur e. Gr aphi c. SaveToSt r eam( Fot o) ; Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( CodEqui pe) ; i f St at us=' N' t hen begi n Equi pe. I nc l ui r Jogador ( Tempor ada. Get CodTempor ada, Apel i do, Nome, Cami sa, Posi cao, Naci onal i dade, Dat aNasc, Emai l , Fot o) ; end el se begi n Equi pe. Al t er ar Jogador ( CodJogador , Apel i do, Nome, Cami sa, Posi cao, Naci onal i dade, Dat aNasc, Emai l , Fot o) ; end; Fot o. Fr ee; Equi pe. Dest r oy; Sel f . Bl oquei aFor mul ar i o; Sel f . At ual i zaI nt er f ace; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end; f unct i on TFr mCadJogador . Val i daFor mul ar i o : Bool ean; begi n i f Edt Apel i doJogador . Text = ' ' t hen begi n Edt Apel i doJogador . Set Focus; ShowMessage( ' Nome do Jogador I nvál i do' ) ; Val i daFor mul ar i o : = Fal se; end el se begi n i f Edt NomeJogador . Text = ' ' t hen begi n Edt NomeJogador . Text : = Edt Apel i doJogador . Text ; end; i f Edt NumCami sa. Text = ' ' t hen begi n Edt NumCami sa. Text : = ' 0' ; end;

Page 214: 5.1 Programa de Controle de Campeonatos de Futebol

214

Val i daFor mul ar i o : = Tr ue; end; end; pr ocedur e TFr mCadJogador . DBGr dJogador esDbl Cl i ck( Sender : TObj ect ) ; begi n i f Bt nAl t er ar Jogador . Enabl ed = Tr ue t hen begi n Sel f . Bt nAl t er ar Jogador Cl i ck( Sender ) ; end; end; pr ocedur e TFr mCadJogador . Bt nExcl ui r Jogador Cl i ck( Sender : TObj ect ) ; var Equi pe: TEqui pe; Excl ui u: Bool ean; begi n t r y Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( TI t emCombo( CmbBxEqui pe. I t ems. Obj ect s[ CmbBxEqui pe. I t emI ndex] ) . Get Oi d); Excl ui u : = Equi pe. Excl ui r Jogador ( Cl nt Dt St Jogador . Fi el dByName( ' CodJogador ' ) . AsI nt eger ) ; I f Excl ui u = Fal se t hen begi n ShowMessage( ' O Jogador não pode ser excl ui do. El e j á at uou nest a t empor ada' ) ; end el se begi n Sel f . At ual i zaI nt er f ace; end; Equi pe. Dest r oy; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end. ============================================================================================ ARQUI VO: UI CadEst r ut ur aTempor ada. pas ============================================================================================ uni t UI CadEst r ut ur aTempor ada; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . But t ons, Bor l and. Vcl . Ext Ct r l s , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Syst em. Component Model , FMTBcd, Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , UDMDados, UTempor ada; t ype TFr mCadEst r ut ur aTempor ada = c l ass( TFor m) Bt nI nc l ui r Fase: TBut t on; Bt nAl t er ar Fase: TBut t on; Bt nExcl ui r Fase: TBut t on; Bt nI nc l ui r Gr upo: TBut t on; Bt nAl t er ar Gr upo: TBut t on; Bt nExcl ui r Gr upo: TBut t on; DBGr dGr upos: TDBGr i d; Panel 3: TPanel ; Panel 4: TPanel ; DBGr dFases: TDBGr i d; Panel 5: TPanel ; Pnl Bt nsFases: TPanel ; Bt nGr avar Fase: TBi t Bt n; Bt nCancel ar Fase: TBi t Bt n; Pnl DadosFases: TPanel ; Label 1: TLabel ; Edt NomeFase: TEdi t ; Pnl DadosGr upos: TPanel ; Label 2: TLabel ; Edt NomeGr upo: TEdi t ;

Page 215: 5.1 Programa de Controle de Campeonatos de Futebol

215

Pnl Bt nsGr upos: TPanel ; Bt nGr avar Gr upo: TBi t Bt n; Bt nCancel ar Gr upo: TBi t Bt n; Bt nFechar : TBi t Bt n; SQLDt St Fases: TSQLDat aSet ; Dt St Pr vdr Fases: TDat aSet Pr ovi der ; Cl nt Dt St Fases: TCl i ent Dat aSet ; Dt Sr cFases: TDat aSour ce; SQLDt St Gr upos: TSQLDat aSet ; Dt St Pr vdr Gr upos: TDat aSet Pr ovi der ; Cl nt Dt St Gr upos: TCl i ent Dat aSet ; Dt Sr cGr upos: TDat aSour ce; SQLDt St Rodadas: TSQLDat aSet ; Dt St Pr vdr Rodadas: TDat aSet Pr ovi der ; Cl nt Dt St Rodadas: TCl i ent Dat aSet ; Dt Sr cRodadas: TDat aSour ce; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ; Cl nt Dt St Dados: TCl i ent Dat aSet ; Bt nAdi c i onar Rodadas: TBut t on; Bt nDi mi nui r Rodadas: TBut t on; DBGr dRodadas: TDBGr i d; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar FaseCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Gr upoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r FaseCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Gr upoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar FaseCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Gr upoCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; pr ocedur e DBGr dFasesDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dGr uposDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAdi c i onar RodadasCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nDi mi nui r RodadasCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Gr upoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r Gr upoCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar FaseCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r FaseCl i ck( Sender : TObj ect ) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; St at us: St r i ng; CodEst r ut ur aTempor ada: I nt eger ; Tempor ada: TTempor ada; NumFases, NumGr upos, NumRodadas: I nt eger ; pr ocedur e At ual i zar Fases; pr ocedur e At ual i zar Gr upos; pr ocedur e At ual i zar Rodadas; pr ocedur e Bl oquei aFor mul ar i oFases; pr ocedur e Bl oquei aFor mul ar i oGr upos; pr ocedur e At i vaFor mul ar i oFases; pr ocedur e At i vaFor mul ar i oGr upos; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; pr ocedur e Most r ar ( umaTemp: TTempor ada) ; f unct i on Get CodEst r ut ur aTempor ada : I nt eger ; end; var Fr mCadEst r ut ur aTempor ada: TFr mCadEst r ut ur aTempor ada; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end;

Page 216: 5.1 Programa de Controle de Campeonatos de Futebol

216

pr ocedur e TFr mCadEst r ut ur aTempor ada. Most r ar ( umaTemp: TTempor ada) ; begi n Tempor ada : = umaTemp; Sel f . At ual i zar Fases; ShowModal ; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. At ual i zar Fases; var SQL: St r i ng; begi n SQLDt St Fases. Par amByName( ' CodTemp' ) . AsI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Fases. Cl ose; Cl nt Dt St Fases. Open; Cl nt Dt St Fases. Fi r s t ; SQL : = ' Sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODFASE i s nul l and CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumFases : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; i f NumFases = 0 t hen begi n Bt nAl t er ar Fase. Enabl ed : = Fal se; Bt nExcl ui r Fase. Enabl ed : = Fal se; Bt nI nc l ui r Gr upo. Enabl ed : = Fal se; Bt nAl t er ar Gr upo. Enabl ed : = Fal se; Bt nExcl ui r Gr upo. Enabl ed : = Fal se; Bt nAdi c i onar Rodadas. Enabl ed : = Fal se; Bt nDi mi nui r Rodadas. Enabl ed : = Fal se; end el se begi n Bt nAl t er ar Fase. Enabl ed : = Tr ue; Bt nExcl ui r Fase. Enabl ed : = Tr ue; Bt nI nc l ui r Gr upo. Enabl ed : = Tr ue; Sel f . At ual i zar Gr upos; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. At ual i zar Gr upos; var SQL: St r i ng; begi n SQLDt St Gr upos. Par amByName( ' CodFase' ) . AsI nt eger : = Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Cl nt Dt St Gr upos. Cl ose; Cl nt Dt St Gr upos. Open; Cl nt Dt St Gr upos. Fi r s t ; SQL : = ' Sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODGRUPO i s nul l and CODFASE=' + Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumGr upos : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; i f NumGr upos = 0 t hen begi n Bt nAl t er ar Gr upo. Enabl ed : = Fal se; Bt nExcl ui r Gr upo. Enabl ed : = Fal se; Bt nAdi c i onar Rodadas. Enabl ed : = Fal se; Bt nDi mi nui r Rodadas. Enabl ed : = Fal se; end el se begi n Bt nAl t er ar Gr upo. Enabl ed : = Tr ue; Bt nExcl ui r Gr upo. Enabl ed : = Tr ue; Sel f . At ual i zar Rodadas; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. At ual i zar Rodadas; var SQL: St r i ng; begi n SQLDt St Rodadas. Par amByName( ' CodGr upo' ) . AsI nt eger : = Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Cl nt Dt St Rodadas. Cl ose; Cl nt Dt St Rodadas. Open; Cl nt Dt St Rodadas. Fi r s t ;

Page 217: 5.1 Programa de Controle de Campeonatos de Futebol

217

SQL : = ' Sel ect COUNT( * ) f r om ESTRUTURATEMPORADA wher e CODGRUPO=' + Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsSt r i ng; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Cl nt Dt St Dados. Fi r s t ; NumRodadas : = Cl nt Dt St Dados. Fi el dByName( ' Count ' ) . AsI nt eger ; Bt nAdi c i onar Rodadas. Enabl ed : = Tr ue; i f NumRodadas = 0 t hen begi n Bt nDi mi nui r Rodadas. Enabl ed : = Fal se; end el se begi n Bt nDi mi nui r Rodadas. Enabl ed : = Tr ue; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. At i vaFor mul ar i oFases; var SQL: St r i ng; begi n Edt NomeFase. Text : = ' ' ; Edt NomeFase. Enabl ed : = Tr ue; Bt nGr avar Fase. Enabl ed : = Tr ue; Bt nCancel ar Fase. Enabl ed : = Tr ue; Edt NomeFase. Set Focus; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bl oquei aFor mul ar i oFases; begi n Edt NomeFase. Text : = ' ' ; Edt NomeFase. Enabl ed : = Fal se; Bt nGr avar Fase. Enabl ed : = Fal se; Bt nCancel ar Fase. Enabl ed : = Fal se; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. At i vaFor mul ar i oGr upos; begi n Edt NomeGr upo. Text : = ' ' ; Edt NomeGr upo. Enabl ed : = Tr ue; Bt nGr avar Gr upo. Enabl ed : = Tr ue; Bt nCancel ar Gr upo. Enabl ed : = Tr ue; Edt NomeGr upo. Set Focus; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bl oquei aFor mul ar i oGr upos; begi n Edt NomeGr upo. Text : = ' ' ; Edt NomeGr upo. Enabl ed : = Fal se; Bt nGr avar Gr upo. Enabl ed : = Fal se; Bt nCancel ar Gr upo. Enabl ed : = Fal se; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. For mDest r oy( Sender : TObj ect ) ; begi n Tempor ada. Dest r oy; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nCancel ar FaseCl i ck( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i oFases; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nCancel ar Gr upoCl i ck( Sender : TObj ect ) ; begi n Sel f . Bl oquei aFor mul ar i oGr upos; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nI nc l ui r FaseCl i ck( Sender : TObj ect ) ; begi n St at us : = ' N' ; CodEst r ut ur aTempor ada : = Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Sel f . Bl oquei aFor mul ar i oFases; Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At i vaFor mul ar i oFases; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nI nc l ui r Gr upoCl i ck( Sender : TObj ect ) ; begi n

Page 218: 5.1 Programa de Controle de Campeonatos de Futebol

218

St at us : = ' N' ; CodEst r ut ur aTempor ada : = Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Sel f . Bl oquei aFor mul ar i oFases; Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At i vaFor mul ar i oGr upos; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nAl t er ar FaseCl i ck( Sender : TObj ect ) ; begi n St at us : = ' A' ; CodEst r ut ur aTempor ada : = Cl nt Dt St Fases. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Sel f . Bl oquei aFor mul ar i oFases; Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At i vaFor mul ar i oFases; Edt NomeFase. Text : = Cl nt Dt St Fases. Fi el dByName( ' NomeEst r ut ur aTempor ada' ) . AsSt r i ng; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nAl t er ar Gr upoCl i ck( Sender : TObj ect ) ; var SQL: St r i ng; begi n St at us : = ' A' ; CodEst r ut ur aTempor ada : = Cl nt Dt St Gr upos. Fi el dByName( ' CodEst r ut ur aTempor ada' ) . AsI nt eger ; Sel f . Bl oquei aFor mul ar i oFases; Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At i vaFor mul ar i oGr upos; Edt NomeGr upo. Text : = Cl nt Dt St Gr upos. Fi el dByName( ' NomeEst r ut ur aTempor ada' ) . AsSt r i ng; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. DBGr dFasesCel l Cl i ck( Col umn: TCol umn) ; begi n i f NumFases > 0 t hen Sel f . At ual i zar Gr upos; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. DBGr dGr uposCel l Cl i ck( Col umn: TCol umn) ; begi n i f NumGr upos > 0 t hen Sel f . At ual i zar Rodadas; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. DBGr dFasesDbl Cl i ck( Sender : TObj ect ) ; begi n i f NumFases > 0 t hen Sel f . Bt nAl t er ar FaseCl i ck( Sender ) ; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. DBGr dGr uposDbl Cl i ck( Sender : TObj ect ) ; begi n i f NumGr upos > 0 t hen Sel f . Bt nAl t er ar Gr upoCl i ck( Sender ) ; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nAdi c i onar RodadasCl i ck( Sender : TObj ect ) ; begi n t r y i f NumRodadas < 9 t hen begi n Tempor ada. I nc l ui r Rodada( ' 0' +I nt ToSt r ( NumRodadas+1) , Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger , Cl nt Dt St Gr upos. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; end el se begi n Tempor ada. I nc l ui r Rodada( I nt ToSt r ( NumRodadas+1) , Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger , Cl nt Dt St Gr upos. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; end; Sel f . At ual i zar Rodadas; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nDi mi nui r RodadasCl i ck( Sender : TObj ect ) ; begi n whi l e not Cl nt Dt St Rodadas. eof do begi n Cl nt Dt St Rodadas. Next ;

Page 219: 5.1 Programa de Controle de Campeonatos de Futebol

219

end; t r y Tempor ada. Excl ui r Est r ut ur aTempor ada( Cl nt Dt St Rodadas. Fi el dByName( ' CodEst r ut ur aTempor ada' ). AsI nt eger ) ; Sel f . At ual i zar Rodadas; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nGr avar Gr upoCl i ck( Sender : TObj ect ) ; begi n i f Edt NomeGr upo. Text = ' ' t hen begi n ShowMessage ( ' Nome do Gr upo I nvál i do' ) ; end el se begi n t r y i f St at us=' N' t hen begi n Tempor ada. I nc l ui r Gr upo( Edt NomeGr upo. Text , Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; end el se begi n Tempor ada. Al t er ar Gr upo( codEst r ut ur aTempor ada, Edt NomeGr upo. Text ) ; end; Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At ual i zar Gr upos; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nExcl ui r Gr upoCl i ck( Sender : TObj ect ) ; var Excl ui u: Bool ean; begi n t r y Excl ui u : = Tempor ada. Excl ui r Est r ut ur aTempor ada( Cl nt Dt St Gr upos. Fi el dByName( ' codEst r ut ur aTempor ada' ) .AsI nt eger ) ; i f Excl ui u = Fal se t hen begi n ShowMessage( ' ERRO: Exi st em Rodadas Cadast r adas Nest e Gr upo' ) ; end el se begi n Sel f . Bl oquei aFor mul ar i oGr upos; Sel f . At ual i zar Gr upos; end; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nGr avar FaseCl i ck( Sender : TObj ect ) ; begi n i f Edt NomeFase. Text = ' ' t hen begi n ShowMessage ( ' Nome da Fase I nvál i do' ) ; end el se begi n t r y i f St at us=' N' t hen begi n Tempor ada. I nc l ui r Fase( Edt NomeFase. Text ) ; end el se begi n Tempor ada. Al t er ar Fase( CodEst r ut ur aTempor ada, Edt NomeFase. Text ) ; end; Sel f . Bl oquei aFor mul ar i oFases; Sel f . At ual i zar Fases; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end;

Page 220: 5.1 Programa de Controle de Campeonatos de Futebol

220

end; end; end; pr ocedur e TFr mCadEst r ut ur aTempor ada. Bt nExcl ui r FaseCl i ck( Sender : TObj ect ) ; var Excl ui u: Bool ean; begi n t r y Excl ui u : = Tempor ada. Excl ui r Est r ut ur aTempor ada( Cl nt Dt St Fases. Fi el dByName( ' codEst r ut ur aTempor ada' ) . AsI nt eger ) ; i f Excl ui u = Fal se t hen begi n ShowMessage( ' ERRO: Exi st em Gr upos Cadast r ados nest a Fase' ) ; end el se begi n Sel f . Bl oquei aFor mul ar i oFases; Sel f . At ual i zar Fases; end; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; f unct i on TFr mCadEst r ut ur aTempor ada. Get CodEst r ut ur aTempor ada : I nt eger ; begi n Get CodEst r ut ur aTempor ada : = CodEst r ut ur aTempor ada; end; end. ============================================================================================ ARQUI VO: UI CadEst adi o. pas ============================================================================================ uni t UI CadEst adi o; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, FMTBcd, Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Ext Dl gs, Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, Bor l and. Vcl . But t ons, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Ext Ct r l s , Syst em. Component Model , UDMDados, UEst adi o; t ype TFr mCadEst adi o = c l ass( TFor m) I mgBr anco: TI mage; Pnl DadosCamp: TPanel ; Label 1: TLabel ; Label 2: TLabel ; Label 3: TLabel ; Label 4: TLabel ; Edt NomeEst adi o: TEdi t ; Edt Ci dadeEst adi o: TEdi t ; Bt nCar r egar I mg: TBut t on; Pnl Bt ns: TPanel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; DBGr dEst adi os: TDBGr i d; Panel 3: TPanel ; OpenPi ct ur eDi al og1: TOpenPi ct ur eDi al og; Cl nt Dt St Est adi o: TCl i ent Dat aSet ; Dt Sr cEst adi o: TDat aSour ce; SQLDt St Est adi o: TSQLDat aSet ; Dt St Pr vdr Est adi o: TDat aSet Pr ovi der ; Edt NomeOf i c i al Est adi o: TEdi t ; Label 5: TLabel ; Edt Pai sEst adi o: TEdi t ; Label 6: TLabel ; Edt Capaci dadeEst adi o: TEdi t ; Panel 15: TPanel ;

Page 221: 5.1 Programa de Controle de Campeonatos de Futebol

221

I mgEst adi o: TI mage; Cl nt Dt St Est adi oCODESTADI O: TI nt eger Fi el d; Cl nt Dt St Est adi oNOMEESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oNOMECOMPLETOESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oCAPACI DADEESTADI O: TI nt eger Fi el d; Cl nt Dt St Est adi oCI DADEESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oFOTO: TBl obFi el d; Cl nt Dt St Est adi oPAI S: TSt r i ngFi el d; Bt nFechar : TBi t Bt n; Bt nI nc l ui r Est adi o: TBi t Bt n; Bt nAl t er ar Est adi o: TBi t Bt n; Bt nExcl ui r Est adi o: TBi t Bt n; pr ocedur e Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Edt Capaci dadeEst adi oKeyPr ess( Sender : TObj ect ; var Key: Char ) ; pr ocedur e Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Est adi oCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dEst adi osDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; pr ocedur e For mCl ose( Sender : TObj ect ; var Act i on: TCl oseAct i on) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; St at us: St r i ng; CodEst adi o: I nt eger ; publ i c { Publ i c decl ar at i ons } pr ocedur e Most r ar ; pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; end; var Fr mCadEst adi o: TFr mCadEst adi o; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadEst adi o. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end; pr ocedur e TFr mCadEst adi o. Most r ar ; begi n Cl nt Dt St Est adi o. Cl ose; Cl nt Dt St Est adi o. Open; Sel f . ShowModal ; end; pr ocedur e TFr mCadEst adi o. Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; var Fi l eName : St r i ng; begi n i f OpenPi ct ur eDi al og1. Execut e t hen begi n Fi l eName : = OpenPi ct ur eDi al og1. Fi l eName; I mgEst adi o. Pi ct ur e. LoadFr omFi l e( Fi l eName) ; end; end; pr ocedur e TFr mCadEst adi o. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadEst adi o. Edt Capaci dadeEst adi oKeyPr ess( Sender : TObj ect ; var Key: Char ) ; begi n i f not ( Key i n [ ' 0' . . ' 9' , #8, #0] ) t hen begi n Key : = #0; Beep; end; end; pr ocedur e TFr mCadEst adi o. Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nCancel ar Cl i ck( Sender ) ; St at us : = ' N' ;

Page 222: 5.1 Programa de Controle de Campeonatos de Futebol

222

Edt NomeEst adi o. Enabl ed : = Tr ue; Edt NomeOf i c i al Est adi o. Enabl ed : = Tr ue; Edt Ci dadeEst adi o. Enabl ed : = Tr ue; Edt Pai sEst adi o. Enabl ed : = Tr ue; Edt Capaci dadeEst adi o. Enabl ed : = Tr ue; Bt nCar r egar I mg. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; Edt NomeEst adi o. Set Focus; end; pr ocedur e TFr mCadEst adi o. Bt nAl t er ar Est adi oCl i ck( Sender : TObj ect ) ; begi n St at us : = ' A' ; CodEst adi o : = Cl nt Dt St Est adi o. Fi el dByName( ' CodEst adi o' ) . AsI nt eger ; Edt NomeEst adi o. Enabl ed : = Tr ue; Edt NomeOf i c i al Est adi o. Enabl ed : = Tr ue; Edt Ci dadeEst adi o. Enabl ed : = Tr ue; Edt Pai sEst adi o. Enabl ed : = Tr ue; Edt Capaci dadeEst adi o. Enabl ed : = Tr ue; Bt nCar r egar I mg. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; Edt NomeEst adi o. Text : = Cl nt Dt St Est adi o. Fi el dByName( ' NomeEst adi o' ) . AsSt r i ng; Edt NomeOf i c i al Est adi o. Text : = Cl nt Dt St Est adi o. Fi el dByName( ' NomeCompl et oEst adi o' ) . AsSt r i ng; Edt Ci dadeEst adi o. Text : = Cl nt Dt St Est adi o. Fi el dByName( ' Ci dadeEst adi o' ) . AsSt r i ng; Edt Pai sEst adi o. Text : = Cl nt Dt St Est adi o. Fi el dByName( ' Pai s ' ) . AsSt r i ng; Edt Capaci dadeEst adi o. Text : = Cl nt Dt St Est adi o. Fi el dByName( ' Capaci dadeEst adi o' ) . AsSt r i ng; I mgEst adi o. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St Est adi o. Cr eat eBl obSt r eam( Cl nt Dt St Est adio. Fi el dByName( ' Fot o' ) , bmRead) ) ; Edt NomeEst adi o. Set Focus; end; pr ocedur e TFr mCadEst adi o. DBGr dEst adi osDbl Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nAl t er ar Est adi oCl i ck( Sender ) ; end; pr ocedur e TFr mCadEst adi o. Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n Edt NomeEst adi o. Text : = ' ' ; Edt NomeOf i c i al Est adi o. Text : = ' ' ; Edt Ci dadeEst adi o. Text : = ' ' ; Edt Pai sEst adi o. Text : = ' ' ; Edt Capaci dadeEst adi o. Text : = ' ' ; I mgEst adi o. Pi ct ur e : = I mgBr anco. Pi ct ur e; Edt NomeEst adi o. Enabl ed : = Fal se; Edt NomeOf i c i al Est adi o. Enabl ed : = Fal se; Edt Ci dadeEst adi o. Enabl ed : = Fal se; Edt Pai sEst adi o. Enabl ed : = Fal se; Edt Capaci dadeEst adi o. Enabl ed : = Fal se; Bt nCar r egar I mg. Enabl ed : = Fal se; Bt nGr avar . Enabl ed : = Fal se; Bt nCancel ar . Enabl ed : = Fal se; end; pr ocedur e TFr mCadEst adi o. Bt nGr avar Cl i ck( Sender : TObj ect ) ; var Est adi o: TEst adi o; NomeEst adi o, NomeCompl et oEst adi o, Ci dadeEst adi o, Pai sEst adi o: St r i ng; Capaci dadeEst adi o: I nt eger ; I magem : TMemor ySt r eam; begi n Est adi o : = TEst adi o. Cr eat e; Est adi o. Set BD( ConBD) ; NomeEst adi o : = Edt NomeEst adi o. Text ; NomeCompl et oEst adi o : = Edt NomeOf i c i al Est adi o. Text ; i f NomeCompl et oEst adi o = ' ' t hen begi n NomeCompl et oEst adi o : = NomeEst adi o; end; Ci dadeEst adi o : = Edt Ci dadeEst adi o. Text ; Pai sEst adi o : = Edt Pai sEst adi o. Text ; i f Edt Capaci dadeEst adi o. Text = ' ' t hen begi n Capaci dadeEst adi o : = 0; end el se begi n

Page 223: 5.1 Programa de Controle de Campeonatos de Futebol

223

Capaci dadeEst adi o : = St r ToI nt ( Edt Capaci dadeEst adi o. Text ) ; end; I magem : = TMemor ySt r eam. Cr eat e; I mgEst adi o. Pi ct ur e. Gr aphi c. SaveToSt r eam( I magem) ; i f ( NomeEst adi o = ' ' ) t hen begi n ShowMessage ( ' ERRO: Nome do Est ádi o I nvál i do' ) ; end el se begi n t r y i f St at us = ' N' t hen begi n Est adi o. NovoEst adi o( NomeEst adi o, NomeCompl et oEst adi o, Ci dadeEst adi o, Pai sEst adi o, Capaci dadeEst adi o, I magem) ; end el se begi n Est adi o. Mat er i al i zar ( CodEst adi o) ; Est adi o. Al t er ar Est adi o( NomeEst adi o, NomeCompl et oEst adi o, Ci dadeEst adi o, Pai sEst adi o, Capaci dadeEst adi o, I magem) ; end; Sel f . Bt nCancel ar Cl i ck( Sender ) ; Cl nt Dt St Est adi o. Cl ose; Cl nt Dt St Est adi o. Open; Est adi o. Dest r oy; I magem. Fr ee; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end; pr ocedur e TFr mCadEst adi o. For mCl ose( Sender : TObj ect ; var Act i on: TCl oseAct i on) ; begi n I mgEst adi o. Dest r oy; end; end. ============================================================================================ ARQUI VO: UI CadEqui peCompet eTempor ada. pas ============================================================================================ uni t UI CadEqui peCompet eTempor ada; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, FMTBcd, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . But t ons, Bor l and. Vcl . Ext Ct r l s , Syst em. Component Model , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, UDMDados, UTempor ada, UEqui pe, UI CadEqui pe; t ype TFr mCadEqui peCompet eTempor ada = c l ass( TFor m) DBGr dEqui pe: TDBGr i d; Panel 3: TPanel ; DBGr i d1: TDBGr i d; Panel 1: TPanel ; Bt nI nc l ui r NaDi sput a: TBut t on; Bt nExcl ui r DaDi sput a: TBut t on; Pnl NomeTempor ada: TPanel ; Bt nFechar : TBi t Bt n; Cl nt Dt St Equi pe: TCl i ent Dat aSet ; Cl nt Dt St Equi peCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi pePAI S: TSt r i ngFi el d; Cl nt Dt St Equi peTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peCODESTADI O: TI nt eger Fi el d; Cl nt Dt St Equi peESCUDO: TBl obFi el d; Dt Sr cEqui pe: TDat aSour ce; SQLDt St Equi pe: TSQLDat aSet ; Dt St Pr vdr Equi pe: TDat aSet Pr ovi der ;

Page 224: 5.1 Programa de Controle de Campeonatos de Futebol

224

Bt nCadEqui pe: TBut t on; Pnl DadosCamp: TPanel ; Label 5: TLabel ; Pnl NumEqui pes: TPanel ; Cl nt Dt St Equi peDi sput aTemp: TCl i ent Dat aSet ; Dt Sr cEqui peDi sput aTemp: TDat aSour ce; SQLDt St Equi peDi sput aTemp: TSQLDat aSet ; Dt St Pr vdr Equi peDi sput aTemp: TDat aSet Pr ovi der ; Cl nt Dt St Equi peDi sput aTempCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODTEMPORADA: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempCODEQUI PE_1: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peDi sput aTempCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempPAI S: TSt r i ngFi el d; Cl nt Dt St Equi peDi sput aTempTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peDi sput aTempESCUDO: TBl obFi el d; Cl nt Dt St Equi peDi sput aTempCODESTADI O: TI nt eger Fi el d; SQLDt St Dados: TSQLDat aSet ; Dt St Pr vdr Dados: TDat aSet Pr ovi der ; Cl nt Dt St Dados: TCl i ent Dat aSet ; Bt nBuscar : TBi t Bt n; Edt Busca: TEdi t ; Label 9: TLabel ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r NaDi sput aCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nExcl ui r DaDi sput aCl i ck( Sender : TObj ect ) ; pr ocedur e DBGr i d1Dbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCadEqui peCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nBuscar Cl i ck( Sender : TObj ect ) ; pr ocedur e Edt BuscaKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; Tempor ada: TTempor ada; publ i c { Publ i c decl ar at i ons } pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Most r ar ( umaTemp: TTempor ada) ; pr ocedur e At ual i zaI nt er f ace; end; var Fr mCadEqui peCompet eTempor ada: TFr mCadEqui peCompet eTempor ada; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadEqui peCompet eTempor ada. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Most r ar ( umaTemp: TTempor ada) ; begi n Tempor ada : = umaTemp; Pnl NomeTempor ada. Capt i on : = Tempor ada. Get NomeTempor ada; Sel f . At ual i zaI nt er f ace; ShowModal ; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. At ual i zaI nt er f ace; var SQL: St r i ng; begi n SQLDt St Equi pe. Par amByName( ' CodTemp' ) . asI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Equi pe. Cl ose; Cl nt Dt St Equi pe. Open; SQLDt St Equi peDi sput aTemp. Par amByName( ' CodTemp' ) . asI nt eger : = Tempor ada. Get CodTempor ada; Cl nt Dt St Equi peDi sput aTemp. Cl ose; Cl nt Dt St Equi peDi sput aTemp. Open;

Page 225: 5.1 Programa de Controle de Campeonatos de Futebol

225

SQL : = ' Sel ect Count ( * ) FROM EQUI PECOMPETETEMPORADA ECT, EQUI PE E wher e ' ; SQL : = SQL + ' CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) ; SQL : = SQL + ' and ECT. CODEQUI PE=E. CODEQUI PE' ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; Pnl NumEqui pes. Text : = Cl nt Dt St Dados. Fi el dByName( ' COUNT' ) . AsSt r i ng; i f Cl nt Dt St Dados. Fi el dByName( ' COUNT' ) . AsI nt eger > 0 t hen begi n Bt nExcl ui r DaDi sput a. Enabl ed : = Tr ue; end el se begi n Bt nExcl ui r DaDi sput a. Enabl ed : = Fal se; end; SQL : = ' Sel ect COUNT( * ) Fr om EQUI PE Wher e CodEqui pe not i n ( Sel ect Codequi pe FROM ' ; SQL : = SQL + ' EQUI PECOMPETETEMPORADA wher e CODTEMPORADA=' + I nt ToSt r ( Tempor ada. Get CodTempor ada) + ' ) ' ; SQLDt St Dados. CommandText : = SQL; Cl nt Dt St Dados. Cl ose; Cl nt Dt St Dados. Open; i f Cl nt Dt St Dados. Fi el dByName( ' COUNT' ) . AsI nt eger > 0 t hen begi n Bt nI nc l ui r NaDi sput a. Enabl ed : = Tr ue; end el se begi n Bt nI nc l ui r NaDi sput a. Enabl ed : = Fal se; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. For mDest r oy( Sender : TObj ect ) ; begi n Tempor ada. Dest r oy; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Bt nI nc l ui r NaDi sput aCl i ck( Sender : TObj ect ) ; var Equi pe: TEqui pe; begi n t r y Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( Cl nt Dt St Equi pe. Fi el dByName( ' CodEqui pe' ) . AsI nt eger ) ; Tempor ada. I nc l ui r Equi peNaDi sput a( Equi pe) ; Equi pe. Dest r oy; Sel f . At ual i zaI nt er f ace; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; begi n i f Bt nI nc l ui r NaDi sput a. Enabl ed = Tr ue t hen begi n Sel f . Bt nI nc l ui r NaDi sput aCl i ck( Sender ) ; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Bt nExcl ui r DaDi sput aCl i ck( Sender : TObj ect ) ; var Equi pe: TEqui pe; begi n t r y Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Equi pe. Mat er i al i zar ( Cl nt Dt St Equi peDi sput aTemp. Fi el dByName( ' CodEqui pe' ) . AsI nt eger ) ; i f Tempor ada. Excl ui r Equi peDaDi sput a( Equi pe) = Fal se t hen begi n; ShowMessage( ' ERRO: Est a equi pe j á possui at uações nest a t empor ada' ) ; end el se begi n Equi pe. Dest r oy; Sel f . At ual i zaI nt er f ace; end;

Page 226: 5.1 Programa de Controle de Campeonatos de Futebol

226

Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. DBGr i d1Dbl Cl i ck( Sender : TObj ect ) ; begi n i f Bt nExcl ui r DaDi sput a. Enabl ed = Tr ue t hen begi n Sel f . Bt nExcl ui r DaDi sput aCl i ck( Sender ) ; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Bt nCadEqui peCl i ck( Sender : TObj ect ) ; var Fr mCadEqui pe: TFr mCadEqui pe; begi n Fr mCadEqui pe : = TFr mCadEqui pe. Cr eat e( ni l ) ; Fr mCadEqui pe. Set BD( ConBD) ; Fr mCadEqui pe. Most r ar ; Fr mCadEqui pe. Dest r oy; Sel f . At ual i zaI nt er f ace; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Bt nBuscar Cl i ck( Sender : TObj ect ) ; var SQL: St r i ng; begi n SQL : = ' Sel ect * f r om EQUI PE wher e CodEqui pe not i n ( Sel ect Codequi pe FROM EQUI PECOMPETETEMPORADA wher e CODTEMPORADA=: CodTemp) ' ; i f ( ( Edt Busca. Text = ' ' ) or ( Edt Busca. Text = ' * ' ) ) t hen begi n SQL : = SQL + ' Or der by NOMEEQUI PE' ; end el se begi n SQL : = SQL + ' and Upper ( nomeEqui pe) l i ke ' ' %' + Upper case( Edt Busca. Text ) + ' %' ' ' ; SQL : = SQL + ' or Upper ( Pai s) l i ke ' ' %' + Upper case( Edt Busca. Text ) + ' %' ' ' ; SQL : = SQL + ' Or der by NOMEEQUI PE' ; end; SQLDt St Equi pe. CommandText : = SQL; SQLDt St Equi pe. Par amByName( ' CodTemp' ) . asI nt eger : = Tempor ada. Get CodTempor ada; wi t h Cl nt Dt St Equi pe do begi n Cl ose; Open; Fi r s t ; end; end; pr ocedur e TFr mCadEqui peCompet eTempor ada. Edt BuscaKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; begi n i f key = 13 t hen begi n Sel f . Bt nBuscar Cl i ck( Sender ) ; end; end; end. ============================================================================================ ARQUI VO: UI CadEqui pe. pas ============================================================================================ uni t UI CadEqui pe; i nt er f ace uses Wi ndows, Messages, SysUt i l s , Var i ant s, Cl asses, Gr aphi cs, Cont r ol s , For ms, Di al ogs, Syst em. Component Model , Bor l and. Vcl . Gr i ds, Bor l and. Vcl . DBGr i ds, FMTBcd, Bor l and. Vcl . ComCt r l s , Bor l and. Vcl . Pr ovi der , Bor l and. Vcl . Sql Expr , Bor l and. Vcl . Db, Bor l and. Vcl . DBCl i ent , Bor l and. Vcl . Ext Dl gs, Bor l and. Vcl . But t ons, Bor l and. Vcl . St dCt r l s , Bor l and. Vcl . Ext Ct r l s , UI t emCombo, UDMDados, UEqui pe, UI CadEst adi o, UMeuUt i l s ; t ype TFr mCadEqui pe = c l ass( TFor m) I mgBr anco: TI mage;

Page 227: 5.1 Programa de Controle de Campeonatos de Futebol

227

Pnl DadosCamp: TPanel ; Label 1: TLabel ; Label 2: TLabel ; Label 3: TLabel ; Label 4: TLabel ; Edt NomeCompl et oEqui pe: TEdi t ; Edt Pai sEqui pe: TEdi t ; CmbBxTi poEqui pe: TComboBox; Panel 7: TPanel ; I mgEqui pe: TI mage; Bt nCar r egar I mg: TBut t on; Pnl Bt ns: TPanel ; Bt nGr avar : TBi t Bt n; Bt nCancel ar : TBi t Bt n; DBGr dEqui pe: TDBGr i d; Panel 3: TPanel ; OpenPi ct ur eDi al og1: TOpenPi ct ur eDi al og; Cl nt Dt St Equi pe: TCl i ent Dat aSet ; Dt Sr cEqui pe: TDat aSour ce; SQLDt St Equi pe: TSQLDat aSet ; Dt St Pr vdr Equi pe: TDat aSet Pr ovi der ; Label 5: TLabel ; Edt NomeEqui pe: TEdi t ; Dt Dat aFundacao: TDat eTi mePi cker ; Label 6: TLabel ; Label 7: TLabel ; Edt Ci dadeEqui pe: TEdi t ; Label 8: TLabel ; CmbBxEst adi oEqui pe: TComboBox; Bt nI nc l ui r Est adi o: TBut t on; Cl nt Dt St Est adi o: TCl i ent Dat aSet ; Dt Sr cEst adi o: TDat aSour ce; SQLDt St Est adi o: TSQLDat aSet ; Dt St Pr vdr Est adi o: TDat aSet Pr ovi der ; Cl nt Dt St Equi peCODEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peNOMEEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peNOMECOMPLETOEQUI PE: TSt r i ngFi el d; Cl nt Dt St Equi peDATAFUNDACAO: TDat eFi el d; Cl nt Dt St Equi peCI DADE: TSt r i ngFi el d; Cl nt Dt St Equi pePAI S: TSt r i ngFi el d; Cl nt Dt St Equi peTI POEQUI PE: TI nt eger Fi el d; Cl nt Dt St Equi peCODESTADI O: TI nt eger Fi el d; Cl nt Dt St Equi peESCUDO: TBl obFi el d; Cl nt Dt St Est adi oCODESTADI O: TI nt eger Fi el d; Cl nt Dt St Est adi oNOMEESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oNOMECOMPLETOESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oCAPACI DADEESTADI O: TI nt eger Fi el d; Cl nt Dt St Est adi oCI DADEESTADI O: TSt r i ngFi el d; Cl nt Dt St Est adi oFOTO: TBl obFi el d; Cl nt Dt St Est adi oPAI S: TSt r i ngFi el d; Pnl I dade: TPanel ; Bt nFechar : TBi t Bt n; Edt Busca: TEdi t ; Bt nBuscar : TBi t Bt n; Label 9: TLabel ; Bt nI nc l ui r Equi pe: TBi t Bt n; Bt nAl t er ar Equi pe: TBi t Bt n; Bt nExcl ui r Equi pe: TBi t Bt n; pr ocedur e Bt nFechar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Equi peCl i ck( Sender : TObj ect ) ; pr ocedur e For mDest r oy( Sender : TObj ect ) ; pr ocedur e Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nAl t er ar Equi peCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCancel ar Cl i ck( Sender : TObj ect ) ; pr ocedur e Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; pr ocedur e Bt nGr avar Cl i ck( Sender : TObj ect ) ; pr ocedur e DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; pr ocedur e Dt Dat aFundacaoChange( Sender : TObj ect ) ; pr ocedur e Bt nBuscar Cl i ck( Sender : TObj ect ) ; pr ocedur e Edt BuscaKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; pr i vat e { Pr i vat e decl ar at i ons } conBD: TDt Mdl Dados; MeusUt i l s : TMeusUt i l s ; St at us: St r i ng; CodEqui pe: I nt eger ;

Page 228: 5.1 Programa de Controle de Campeonatos de Futebol

228

publ i c { Publ i c decl ar at i ons } pr ocedur e Most r ar ; pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; pr ocedur e Car r egar CmbBxEst adi oEqui pe; pr ocedur e Li mpar CmbBxEst adi oEqui pe; end; var Fr mCadEqui pe: TFr mCadEqui pe; i mpl ement at i on { $R * . nf m} pr ocedur e TFr mCadEqui pe. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TFr mCadEqui pe. Bt nFechar Cl i ck( Sender : TObj ect ) ; begi n Sel f . Cl ose; end; pr ocedur e TFr mCadEqui pe. Li mpar CmbBxEst adi oEqui pe; var i : I nt eger ; begi n f or i : =1 t o CmbBxEst adi oEqui pe. I t ems. Count - 1 do begi n TI t emCombo( CmbBxEst adi oEqui pe. I t ems. Obj ect s[ i ] ) . Dest r oy; end; CmbBxEst adi oEqui pe. Cl ear ; end; pr ocedur e TFr mCadEqui pe. Car r egar CmbBxEst adi oEqui pe; var I t emCombo: TI t emCombo; begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. set Oi d( 0) ; CmbBxEst adi oEqui pe. I t ems. AddObj ect ( ' ' , I t emCombo) ; wi t h Cl nt Dt St Est adi o do begi n Cl ose; Open; Fi r s t ; whi l e not eof do begi n I t emCombo : = TI t emCombo. Cr eat e; I t emCombo. Set Oi d( Fi el dByName( ' CodEst adi o' ) . AsI nt eger ) ; CmbBxEst adi oEqui pe. I t ems. AddObj ect ( Fi el dByName( ' NomeEst adi o' ) . asSt r i ng + ' , ' + Fi el dByName( ' Ci dadeEst adi o' ) . asSt r i ng, I t emCombo) ; Next ; end; CmbBxEst adi oEqui pe. I t emI ndex : = 0; end; I t emCombo. Fr ee; end; pr ocedur e TFr mCadEqui pe. Bt nI nc l ui r Equi peCl i ck( Sender : TObj ect ) ; var I t emCombo: TI t emCombo; begi n Sel f . Bt nCancel ar Cl i ck( Sender ) ; St at us : = ' N' ; Edt NomeEqui pe. Enabl ed : = Tr ue; Edt NomeCompl et oEqui pe. Enabl ed : = Tr ue; Dt Dat aFundacao. Enabl ed : = Tr ue; Sel f . Dt Dat aFundacaoChange( ni l ) ; Edt Ci dadeEqui pe. Enabl ed : = Tr ue; Edt Pai sEqui pe. Enabl ed : = Tr ue; CmbBxTi poEqui pe. Enabl ed : = Tr ue; Sel f . Li mpar CmbBxEst adi oEqui pe; Sel f . Car r egar CmbBxEst adi oEqui pe; CmbBxEst adi oEqui pe. Enabl ed : = Tr ue; Bt nI nc l ui r Est adi o. Enabl ed : = Tr ue; Bt nCar r egar I mg. Enabl ed : = Tr ue;

Page 229: 5.1 Programa de Controle de Campeonatos de Futebol

229

Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; Edt NomeEqui pe. Set Focus; end; pr ocedur e TFr mCadEqui pe. Most r ar ; begi n Cl nt Dt St Equi pe. Cl ose; Cl nt Dt St Equi pe. Open; ShowModal ; end; pr ocedur e TFr mCadEqui pe. For mDest r oy( Sender : TObj ect ) ; begi n Sel f . Li mpar CmbBxEst adi oEqui pe; MeusUt i l s . Fr ee; I mgEqui pe. Dest r oy; end; pr ocedur e TFr mCadEqui pe. Bt nI nc l ui r Est adi oCl i ck( Sender : TObj ect ) ; var i : I nt eger ; achou: bool ean; Fr mCadEst adi o: TFr mCadEst adi o; begi n Fr mCadEst adi o : = TFr mCadEst adi o. Cr eat e( ni l ) ; Fr mCadEst adi o. Set BD( conBD) ; Fr mCadEst adi o. Most r ar ; Fr mCadEst adi o. Dest r oy; Sel f . Li mpar CmbBxEst adi oEqui pe; Sel f . Car r egar CmbBxEst adi oEqui pe; achou : = f al se; whi l e ( ( i < CmbBxEst adi oEqui pe. I t ems. Count ) and ( not achou) ) do begi n i f TI t emCombo( CmbBxEst adi oEqui pe. I t ems. Obj ect s[ i ] ) . Get Oi d = Cl nt Dt St Equi pe. Fi el dByName( ' CodEst adi o' ) . AsI nt eger t hen begi n CmbBxEst adi oEqui pe. I t emI ndex : = i ; achou : = t r ue; end; i : = i + 1; end; end; pr ocedur e TFr mCadEqui pe. Bt nAl t er ar Equi peCl i ck( Sender : TObj ect ) ; var i : I nt eger ; achou: bool ean; begi n St at us : = ' A' ; CodEqui pe : = Cl nt Dt St Equi pe. Fi el dByName( ' CodEqui pe' ) . AsI nt eger ; Edt NomeEqui pe. Enabl ed : = Tr ue; Edt NomeCompl et oEqui pe. Enabl ed : = Tr ue; Dt Dat aFundacao. Enabl ed : = Tr ue; Edt Ci dadeEqui pe. Enabl ed : = Tr ue; Edt Pai sEqui pe. Enabl ed : = Tr ue; CmbBxTi poEqui pe. Enabl ed : = Tr ue; Sel f . Li mpar CmbBxEst adi oEqui pe; Sel f . Car r egar CmbBxEst adi oEqui pe; CmbBxEst adi oEqui pe. Enabl ed : = Tr ue; Bt nI nc l ui r Est adi o. Enabl ed : = Tr ue; I mgEqui pe. Pi ct ur e : = I mgBr anco. Pi ct ur e; Bt nCar r egar I mg. Enabl ed : = Tr ue; Bt nGr avar . Enabl ed : = Tr ue; Bt nCancel ar . Enabl ed : = Tr ue; Edt NomeEqui pe. Text : = Cl nt Dt St Equi pe. Fi el dByName( ' NomeEqui pe' ) . AsSt r i ng; Edt NomeCompl et oEqui pe. Text : = Cl nt Dt St Equi pe. Fi el dByName( ' NomeCompl et oEqui pe' ) . AsSt r i ng; Dt Dat aFundacao. Dat eTi me : = Cl nt Dt St Equi pe. Fi el dByName( ' Dat aFundacao' ) . AsDat eTi me; Sel f . Dt Dat aFundacaoChange( ni l ) ; Edt Ci dadeEqui pe. Text : = Cl nt Dt St Equi pe. Fi el dByName( ' Ci dade' ) . AsSt r i ng; Edt Pai sEqui pe. Text : = Cl nt Dt St Equi pe. Fi el dByName( ' Pai s ' ) . AsSt r i ng; Sel f . Li mpar CmbBxEst adi oEqui pe; Sel f . Car r egar CmbBxEst adi oEqui pe; achou : = f al se; whi l e ( ( i < CmbBxEst adi oEqui pe. I t ems. Count ) and ( not achou) ) do begi n i f TI t emCombo( CmbBxEst adi oEqui pe. I t ems. Obj ect s[ i ] ) . Get Oi d = Cl nt Dt St Equi pe. Fi el dByName( ' CodEst adi o' ) . AsI nt eger t hen begi n CmbBxEst adi oEqui pe. I t emI ndex : = i ; achou : = t r ue;

Page 230: 5.1 Programa de Controle de Campeonatos de Futebol

230

end; i : = i + 1; end; case Cl nt Dt St Equi pe. Fi el dByName( ' Ti poEqui pe' ) . AsI nt eger of 1: CmbBxTi poEqui pe. I t emI ndex : = 0; 2: CmbBxTi poEqui pe. I t emI ndex : = 1; end; I mgEqui pe. Pi ct ur e. Bi t map. LoadFr omSt r eam( Cl nt Dt St Equi pe. Cr eat eBl obSt r eam( Cl nt Dt St Equi pe. Fi el dByName( ' Escudo' ) , bmRead) ) ; Edt NomeEqui pe. Set Focus; end; pr ocedur e TFr mCadEqui pe. Bt nCancel ar Cl i ck( Sender : TObj ect ) ; begi n Edt NomeEqui pe. Text : = ' ' ; Edt NomeCompl et oEqui pe. Text : = ' ' ; Edt Ci dadeEqui pe. Text : = ' ' ; Edt Pai sEqui pe. Text : = ' ' ; Pnl I dade. Capt i on : = ' ' ; Sel f . Li mpar CmbBxEst adi oEqui pe; I mgEqui pe. Pi ct ur e : = I mgBr anco. Pi ct ur e; Edt NomeEqui pe. Enabl ed : = Fal se; Edt NomeCompl et oEqui pe. Enabl ed : = Fal se; Dt Dat aFundacao. Enabl ed : = Fal se; Edt Ci dadeEqui pe. Enabl ed : = Fal se; Edt Pai sEqui pe. Enabl ed : = Fal se; CmbBxTi poEqui pe. Enabl ed : = Fal se; CmbBxEst adi oEqui pe. Enabl ed : = Fal se; Bt nI nc l ui r Est adi o. Enabl ed : = Fal se; Bt nCar r egar I mg. Enabl ed : = Fal se; Bt nGr avar . Enabl ed : = Fal se; Bt nCancel ar . Enabl ed : = Fal se; end; pr ocedur e TFr mCadEqui pe. Bt nCar r egar I mgCl i ck( Sender : TObj ect ) ; var Fi l eName: St r i ng; begi n i f OpenPi ct ur eDi al og1. Execut e t hen begi n Fi l eName : = OpenPi ct ur eDi al og1. Fi l eName; I mgEqui pe. Pi ct ur e. LoadFr omFi l e( Fi l eName) ; end; end; pr ocedur e TFr mCadEqui pe. Bt nGr avar Cl i ck( Sender : TObj ect ) ; var Equi pe: TEqui pe; Nome, NomeCompl et o, Ci dade, Pai s: St r i ng; Ti po, CodEst adi o: I nt eger ; Dat aFundacao: TDat eTi me; I magem : TMemor ySt r eam; begi n Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( ConBD) ; Nome : = Edt NomeEqui pe. Text ; NomeCompl et o : = Edt NomeCompl et oEqui pe. Text ; i f NomeCompl et o = ' ' t hen begi n NomeCompl et o : = Nome; end; Ci dade : = Edt Ci dadeEqui pe. Text ; Pai s : = Edt Pai sEqui pe. Text ; Ti po : = CmbBxTi poEqui pe. I t emI ndex + 1; Dat aFundacao : = Dt Dat aFundacao. Dat eTi me; CodEst adi o : = TI t emCombo( CmbBxEst adi oEqui pe. I t ems. Obj ect s[ CmbBxEst adi oEqui pe. I t emI ndex] ) . Get Oi d; I magem : = TMemor ySt r eam. Cr eat e; I mgEqui pe. Pi ct ur e. Gr aphi c. SaveToSt r eam( I magem) ; i f ( ( Nome = ' ' ) or ( Pai s=' ' ) ) t hen begi n ShowMessage ( ' ERRO: Nome da Equi pe ou Paí s I nvál i do' ) ; end el se begi n t r y i f St at us = ' N' t hen begi n Equi pe. NovaEqui pe( Nome, NomeCompl et o, Ci dade, Pai s, Dat aFundacao, Ti po, CodEst adi o, I magem) ; end el se begi n Equi pe. Mat er i al i zar ( CodEqui pe) ;

Page 231: 5.1 Programa de Controle de Campeonatos de Futebol

231

Equi pe. Al t er ar Equi pe( Nome, NomeCompl et o, Ci dade, Pai s, Dat aFundacao, Ti po, CodEst adi o, I magem) ; end; Sel f . Bt nCancel ar Cl i ck( Sender ) ; Cl nt Dt St Equi pe. Cl ose; Cl nt Dt St Equi pe. Open; Equi pe. Dest r oy; I magem. Fr ee; Except on E: Except i on do begi n ShowMessage ( ' ERRO: ' + E. Message + #10 + ' Anot e a mensagem e cont act e o Supor t e' ) ; end; end; end; end; pr ocedur e TFr mCadEqui pe. DBGr dEqui peDbl Cl i ck( Sender : TObj ect ) ; begi n Sel f . Bt nAl t er ar Equi peCl i ck( Sender ) ; end; pr ocedur e TFr mCadEqui pe. Dt Dat aFundacaoChange( Sender : TObj ect ) ; begi n Pnl I dade. Capt i on : = I nt ToSt r ( MeusUt i l s . Cal cAnos ( Dt Dat aFundacao. Dat eTi me) ) + ' ANOS' ; end; pr ocedur e TFr mCadEqui pe. Bt nBuscar Cl i ck( Sender : TObj ect ) ; var SQL: St r i ng; begi n SQL : = ' Sel ect * f r om EQUI PE ' ; i f ( ( Edt Busca. Text = ' ' ) or ( Edt Busca. Text = ' * ' ) ) t hen begi n SQL : = SQL + ' Or der by NOMEEQUI PE' ; end el se begi n SQL : = SQL + ' wher e Upper ( nomeEqui pe) l i ke ' ' %' + Upper case( Edt Busca. Text ) + ' %' ' ' ; SQL : = SQL + ' or Upper ( Pai s) l i ke ' ' %' + Upper case( Edt Busca. Text ) + ' %' ' ' ; SQL : = SQL + ' Or der by NOMEEQUI PE' ; end; SQLDt St Equi pe. CommandText : = SQL; wi t h Cl nt Dt St Equi pe do begi n Cl ose; Open; Fi r s t ; end; end; pr ocedur e TFr mCadEqui pe. Edt BuscaKeyDown( Sender : TObj ect ; var Key: Wor d; Shi f t : TShi f t St at e) ; begi n i f key = 13 t hen begi n Sel f . Bt nBuscar Cl i ck( Sender ) ; end; end; end. ============================================================================================ ARQUI VO: UCl assi f i cacao. pas ============================================================================================ uni t UCl assi f i cacao; i nt er f ace Uses UDMDados, UEqui pe, SysUt i l s , UMeuUt i l s , UDMCl asses; Type TCl assi f i cacao = Cl ass pr ot ect ed BD: TDt Mdl Cl asses; conBD: TDt Mdl Dados; MeusUt i l s : TMeusUt i l s ; CodCl assi f i cacao: I nt eger ;

Page 232: 5.1 Programa de Controle de Campeonatos de Futebol

232

CodEst r ut ur aTempor ada: I nt eger ; Dat aJogo: TDat eTi me; Equi pe: TEqui pe; Pont os: I nt eger ; Jogos: I nt eger ; Vi t or i a: I nt eger ; Empat e: I nt eger ; Der r ot a: I nt eger ; Vi t or i aPr or r ogacao: I nt eger ; Vi t or i aPenal t i s : I nt eger ; Der r ot aPr or r ogacao: I nt eger ; Der r ot aPenal t i s : I nt eger ; Empat ePr or r ogacao: I nt eger ; Gol sPr o: I nt eger ; Gol sCont r a: I nt eger ; Publ i co: I nt eger ; Local : St r i ng; / / C- Casa; F- For a; T- Tr i bunal Real i zado: I nt eger ; / / 0- Fal so; 1- Ver dade publ i c const r uct or Cr eat e; over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( Cod: I nt eger ) ; f unct i on Get CodCl assi f i cacao: I nt eger ; pr ocedur e NovaCl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; pr ocedur e Al t er ar Cl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; pr ocedur e Excl ui r Cl assi f i cacao; pr ocedur e Cal cul ar Cl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; pr ocedur e NovaCl assi f i cacaoPuni cao( CodEst Temp: I nt eger ; umaDat a: TDat eTi me; var umaEqui pe : TEqui pe; osPont os: I nt eger ) ; pr ocedur e Al t er ar Cl assi f i cacaoPuni cao( CodEst Temp: I nt eger ; umaDat a: TDat eTi me; var umaEqui pe : TEqui pe; osPont os: I nt eger ) ; dest r uct or Dest r oy; Over r i de; end; i mpl ement at i on const r uct or TCl assi f i cacao. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TCl assi f i cacao. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TCl assi f i cacao. Mat er i al i zar ( Cod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM CLASSI FI CACAO WHERE CODCLASSI FI CACAO = ' + I nt ToSt r ( Cod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodCl assi f i cacao : = Fi el dByname( ' CodCl assi f i cacao' ) . asI nt eger ;

Page 233: 5.1 Programa de Controle de Campeonatos de Futebol

233

CodEst r ut ur aTempor ada : = Fi el dByname( ' CodEst r ut ur aTempor ada' ) . asI nt eger ; Dat aJogo : = Fi el dByname( ' Dat aJogo' ) . asDat eTi me; Equi pe : = TEqui pe. Cr eat e; Equi pe. Set BD( conBD) ; Equi pe. Mat er i al i zar ( Fi el dByname( ' CodEqui pe' ) . asI nt eger ) ; Pont os : = Fi el dByname( ' Pont os ' ) . asI nt eger ; Jogos : = Fi el dByname( ' Jogos' ) . asI nt eger ; Vi t or i a : = Fi el dByname( ' Vi t or i a' ) . asI nt eger ; Empat e : = Fi el dByname( ' Empat e' ) . asI nt eger ; Der r ot a : = Fi el dByname( ' Der r ot a' ) . asI nt eger ; Vi t or i aPr or r ogacao : = Fi el dByname( ' Vi t or i aPr or r ogacao' ) . asI nt eger ; Vi t or i aPenal t i s : = Fi el dByname( ' Vi t or i aPenal t i s ' ) . asI nt eger ; Der r ot aPr or r ogacao : = Fi el dByname( ' Der r ot aPr or r ogacao' ) . asI nt eger ; Der r ot aPenal t i s : = Fi el dByname( ' Der r ot aPenal t i s ' ) . asI nt eger ; Empat ePr or r ogacao : = Fi el dByname( ' Empat ePr or r ogacao' ) . asI nt eger ; Gol sPr o : = Fi el dByname( ' Gol sPr o' ) . asI nt eger ; Gol sCont r a : = Fi el dByname( ' Gol sCont r a' ) . asI nt eger ; Publ i co : = Fi el dByname( ' Publ i co' ) . asI nt eger ; Local : = Fi el dByname( ' Local ' ) . asSt r i ng; Real i zado : = Fi el dByname( ' Real i zado' ) . asI nt eger ; end; end; f unct i on TCl assi f i cacao. Get CodCl assi f i cacao: I nt eger ; begi n Get CodCl assi f i cacao : = CodCl assi f i cacao; end; pr ocedur e TCl assi f i cacao. NovaCl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; var SQL: St r i ng; begi n BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodCl assi f i cacao : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; Sel f . Cal cul ar Cl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, umaEqui pe, umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co, umLocal , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; SQL : = ' I NSERT I NTO CLASSI FI CACAO ( CodCl assi f i cacao, CodEst r ut ur aTempor ada, Dat aJogo, CodEqui pe, ' ; SQL : = SQL + ' Pont os, Jogos, Vi t or i a, Empat e, Der r ot a, Vi t or i aPr or r ogacao, Vi t or i aPenal t i s , Der r ot aPr or r ogacao, ' ; SQL : = SQL + ' Der r ot aPenal t i s , Empat ePr or r ogacao, Gol sPr o, Gol sCont r a, Publ i co, Local , Real i zado) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodCl assi f i cacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aJogo) + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont os) + ' , ' ; SQL : = SQL + I nt ToSt r ( Jogos) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Empat e) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Empat ePr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sPr o) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sCont r a) + ' , ' ;

Page 234: 5.1 Programa de Controle de Campeonatos de Futebol

234

SQL : = SQL + I nt ToSt r ( Publ i co) + ' , ' ; SQL : = SQL + ' ' ' ' + Local + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Real i zado) + ' ) ; ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCl assi f i cacao. NovaCl assi f i cacaoPuni cao( CodEst Temp: I nt eger ; umaDat a: TDat eTi me; var umaEqui pe : TEqui pe; osPont os: I nt eger ) ; var SQL: St r i ng; begi n CodEst r ut ur aTempor ada : = CodEst Temp; Dat aJogo : = umaDat a; Equi pe : = umaEqui pe; Gol sPr o : = 0; Gol sCont r a : = 0; Publ i co : = 0; Local : = ' T' ; Pont os : = osPont os; Jogos : = 0; Vi t or i a : = 0; Empat e : = 0; Der r ot a : = 0; Vi t or i aPr or r ogacao : = 0; Vi t or i aPenal t i s : = 0; Der r ot aPr or r ogacao : = 0; Der r ot aPenal t i s : = 0; Empat ePr or r ogacao : = 0; Real i zado : = 1; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodCl assi f i cacao : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I NSERT I NTO CLASSI FI CACAO ( CodCl assi f i cacao, CodEst r ut ur aTempor ada, Dat aJogo, CodEqui pe, ' ; SQL : = SQL + ' Pont os, Jogos, Vi t or i a, Empat e, Der r ot a, Vi t or i aPr or r ogacao, Vi t or i aPenal t i s , Der r ot aPr or r ogacao, ' ; SQL : = SQL + ' Der r ot aPenal t i s , Empat ePr or r ogacao, Gol sPr o, Gol sCont r a, Publ i co, Local , Real i zado) VALUES ( ' ; SQL : = SQL + I nt ToSt r ( CodCl assi f i cacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aJogo) + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + I nt ToSt r ( Pont os) + ' , ' ; SQL : = SQL + I nt ToSt r ( Jogos) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Empat e) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Vi t or i aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot aPr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Der r ot aPenal t i s) + ' , ' ; SQL : = SQL + I nt ToSt r ( Empat ePr or r ogacao) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sPr o) + ' , ' ; SQL : = SQL + I nt ToSt r ( Gol sCont r a) + ' , ' ; SQL : = SQL + I nt ToSt r ( Publ i co) + ' , ' ; SQL : = SQL + ' ' ' ' + Local + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Real i zado) + ' ) ; ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCl assi f i cacao. Al t er ar Cl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ;

Page 235: 5.1 Programa de Controle de Campeonatos de Futebol

235

var SQL: St r i ng; begi n Sel f . Cal cul ar Cl assi f i cacao ( CodEst Temp, umaDat aHor aJogo, umaEqui pe, umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co, umLocal , Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen) ; SQL : = ' UPDATE CLASSI FI CACAO SET ' ; SQL : = SQL + ' CodEst r ut ur aTempor ada = ' + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' Dat aJogo = ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aJogo) + ' ' ' , ' ; SQL : = SQL + ' CodEqui pe = ' + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' Pont os = ' + I nt ToSt r ( Pont os) + ' , ' ; SQL : = SQL + ' Jogos = ' + I nt ToSt r ( Jogos) + ' , ' ; SQL : = SQL + ' Vi t or i a = ' + I nt ToSt r ( Vi t or i a) + ' , ' ; SQL : = SQL + ' Empat e = ' + I nt ToSt r ( Empat e) + ' , ' ; SQL : = SQL + ' Der r ot a = ' + I nt ToSt r ( Der r ot a) + ' , ' ; SQL : = SQL + ' Vi t or i aPr or r ogacao = ' + I nt ToSt r ( Vi t or i aPr or r ogacao) + ' , ' ; SQL : = SQL + ' Vi t or i aPenal t i s = ' + I nt ToSt r ( Vi t or i aPenal t i s) + ' , ' ; SQL : = SQL + ' Der r ot aPr or r ogacao = ' + I nt ToSt r ( Der r ot aPr or r ogacao) + ' , ' ; SQL : = SQL + ' Der r ot aPenal t i s = ' + I nt ToSt r ( Der r ot aPenal t i s) + ' , ' ; SQL : = SQL + ' Empat ePr or r ogacao = ' + I nt ToSt r ( Empat ePr or r ogacao) + ' , ' ; SQL : = SQL + ' Gol sPr o = ' + I nt ToSt r ( Gol sPr o) + ' , ' ; SQL : = SQL + ' Gol sCont r a = ' + I nt ToSt r ( Gol sCont r a) + ' , ' ; SQL : = SQL + ' Publ i co = ' + I nt ToSt r ( Publ i co) + ' , ' ; SQL : = SQL + ' Local = ' ' ' + Local + ' ' ' , ' ; SQL : = SQL + ' Real i zado = ' + I nt ToSt r ( Real i zado) + ' ' ; SQL : = SQL + ' WHERE CODCLASSI FI CACAO = ' + I nt ToSt r ( CodCl assi f i cacao) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCl assi f i cacao. Al t er ar Cl assi f i cacaoPuni cao( CodEst Temp: I nt eger ; umaDat a: TDat eTi me; var umaEqui pe : TEqui pe; osPont os: I nt eger ) ; var SQL: St r i ng; begi n CodEst r ut ur aTempor ada : = CodEst Temp; Dat aJogo : = umaDat a; Equi pe : = umaEqui pe; Pont os : = osPont os; SQL : = ' UPDATE CLASSI FI CACAO SET ' ; SQL : = SQL + ' CodEst r ut ur aTempor ada = ' + I nt ToSt r ( CodEst r ut ur aTempor ada) + ' , ' ; SQL : = SQL + ' Dat aJogo = ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aJogo) + ' ' ' , ' ; SQL : = SQL + ' CodEqui pe = ' + I nt ToSt r ( Equi pe. Get CodEqui pe) + ' , ' ; SQL : = SQL + ' Pont os = ' + I nt ToSt r ( Pont os) + ' ' ; SQL : = SQL + ' WHERE CODCLASSI FI CACAO = ' + I nt ToSt r ( CodCl assi f i cacao) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCl assi f i cacao. Excl ui r Cl assi f i cacao; var SQL: St r i ng; begi n SQL : = ' Del et e f r om CLASSI FI CACAO wher e CODCLASSI FI CACAO=' + I nt ToSt r ( CodCl assi f i cacao) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCl assi f i cacao. Cal cul ar Cl assi f i cacao ( CodEst Temp: I nt eger ; umaDat aHor aJogo: TDat eTi me; var umaEqui pe : TEqui pe; umReal i zado, osGol sPr o, osGol sCont r a, umPr or r ogacao, osGol sPr oPr or r og, osGol sCont r aPr or r og, umPenal t i s , osGol sPr oPen, osGol sCont r aPen, umPubl i co: I nt eger ; umLocal : St r i ng; Pt sVi t , Pt sEmp, Pt sVi t Pr or r og, Pt sEmpPr or r og, Pt sDer Pr or r og, Pt sVi t Pen, Pt sDer Pen: I nt eger ) ; begi n CodEst r ut ur aTempor ada : = CodEst Temp; Dat aJogo : = umaDat aHor aJogo; Equi pe : = umaEqui pe; Gol sPr o : = osGol sPr o;

Page 236: 5.1 Programa de Controle de Campeonatos de Futebol

236

Gol sCont r a : = osGol sCont r a; Publ i co : = umPubl i co; Local : = umLocal ; Real i zado : = umReal i zado; Pont os : = 0; Jogos : = 0; Vi t or i a : = 0; Empat e : = 0; Der r ot a : = 0; Vi t or i aPr or r ogacao : = 0; Vi t or i aPenal t i s : = 0; Der r ot aPr or r ogacao : = 0; Der r ot aPenal t i s : = 0; Empat ePr or r ogacao : = 0; i f Real i zado = 1 t hen begi n / / Se o j ogo f oi r eal i zado Jogos : = 1; i f umPr or r ogacao = 1 t hen begi n i f umPenal t i s = 1 t hen begi n i f osGol sPr oPen > osGol sCont r aPen t hen begi n / / Se ganhou nos penal t i s Pont os : = Pt sVi t Pen; Vi t or i aPenal t i s : = 1; end el se begi n / / Se per deu nos penal t i s Pont os : = Pt sDer Pen; Der r ot aPenal t i s : = 1; end; end el se begi n / / Se j ogo f oi pr a pr or r ogacao e não aos penal t i s i f osGol sPr oPr or r og > osGol sCont r aPr or r og t hen begi n / / Se ganhou na pr or r ogacao Pont os : = Pt sVi t Pr or r og; Vi t or i aPr or r ogacao : = 1; end el se begi n i f osGol sPr oPr or r og = osGol sCont r aPr or r og t hen begi n / / Se empat ou na pr or r ogacao Pont os : = Pt sEmpPr or r og; Empat ePr or r ogacao : = 1; end el se begi n / / Se per deu na pr or r ogacao Pont os : = Pt sDer Pr or r og; Der r ot aPr or r ogacao : = 1; end; end; end; end el se begi n i f osGol sPr o > osGol sCont r a t hen begi n Pont os : = Pt sVi t ; Vi t or i a : = 1; end el se begi n i f osGol sPr o = osGol sCont r a t hen begi n Pont os : = Pt sEmp; Empat e : = 1; end el se begi n Pont os : = 0; Der r ot a : = 1; end; end; end; end; end; dest r uct or TCl assi f i cacao. Dest r oy; begi n BD. Dest r oy; MeusUt i l s . Fr ee; Equi pe. Dest r oy; end; end. ============================================================================================ ARQUI VO: UCampeonat o. pas ============================================================================================ uni t UCampeonat o; i nt er f ace Uses

Page 237: 5.1 Programa de Controle de Campeonatos de Futebol

237

UDMDados, SysUt i l s , Bor l and. Vcl . Cl asses, Bor l and. Vcl . DBXpr ess, UMeuUt i l s , Bor l and. Vcl . Db, UDMCl asses; t ype TCampeonat o = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodCampeonat o: I nt eger ; Nome: St r i ng; Ti po: I nt eger ; / / 1: Naci onal ; 2: I nt er cont i nent al ; 3: Sel eções; 4: Demai s Pai s: St r i ng; publ i c pr ocedur e Set BD( var umaConBD: TDt Mdl Dados) ; const r uct or Cr eat e; over l oad; pr ocedur e Al t er ar Campeonat o( umNome: &St r i ng; umTi po: I nt eger ; umPai s: St r i ng; Escudo: TMemor ySt r eam) ; pr ocedur e Mat er i al i zar ( umCod: I nt eger ) ; pr ocedur e NovoCampeonat o( umNome: &St r i ng; umTi po: I nt eger ; umPai s: St r i ng; Escudo: TMemor ySt r eam) ; f unct i on Get CodCampeonat o: I nt eger ; f unct i on Get NomeCampeonat o: St r i ng; dest r uct or Dest r oy; over r i de; end; i mpl ement at i on const r uct or TCampeonat o. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TCampeonat o. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) ; end; pr ocedur e TCampeonat o. Mat er i al i zar ( umCod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM CAMPEONATO WHERE CODCAMPEONATO = ' + I nt ToSt r ( umCod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodCampeonat o : = Fi el dByName( ' CodCampeonat o' ) . asI nt eger ; Nome : = Fi el dByName( ' Nome' ) . asSt r i ng; Ti po : = Fi el dByName( ' Ti po' ) . asI nt eger ; Pai s : = Fi el dByName( ' Pai s ' ) . asSt r i ng; end; end; pr ocedur e TCampeonat o. NovoCampeonat o( umNome: St r i ng; umTi po: I nt eger ; umPai s: St r i ng; Escudo: TMemor ySt r eam) ; var SQL: St r i ng; begi n Nome : = umNome; Ti po : = umTi po; Pai s : = umPai s; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodCampeonat o : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I nser t i nt o CAMPEONATO ( CODCAMPEONATO, NOME, TI PO, PAI S, ESCUDO) val ues ( ' ; SQL : = SQL + I nt ToSt r ( CodCampeonat o) + ' , ' ;

Page 238: 5.1 Programa de Controle de Campeonatos de Futebol

238

SQL : = SQL + ' ' ' ' + Nome + ' ' ' , ' ; SQL : = SQL + I nt ToSt r ( Ti po) + ' , ' ; SQL : = SQL + ' ' ' ' + Pai s + ' ' ' , ' ; SQL : = SQL + ' : Escudo) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Escudo' ) . LoadFr omSt r eam( Escudo, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TCampeonat o. Al t er ar Campeonat o( umNome: St r i ng; umTi po: I nt eger ; umPai s: St r i ng; Escudo: TMemor ySt r eam) ; var SQL: St r i ng; begi n Nome : = umNome; Ti po : = umTi po; Pai s : = umPai s; SQL : = ' Updat e CAMPEONATO set ' ; SQL : = SQL + ' NOME=' ' ' + Nome + ' ' ' , ' ; SQL : = SQL + ' TI PO=' + I nt ToSt r ( Ti po) + ' , ' ; SQL : = SQL + ' PAI S=' ' ' + Pai s + ' ' ' , ' ; SQL : = SQL + ' ESCUDO=: Escudo wher e CODCAMPEONATO=' + I nt ToSt r ( CodCampeonat o) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Escudo' ) . LoadFr omSt r eam( Escudo, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end; f unct i on TCampeonat o. Get CodCampeonat o: I nt eger ; begi n Get CodCampeonat o : = CodCampeonat o; end; f unct i on TCampeonat o. Get NomeCampeonat o: St r i ng; begi n Get NomeCampeonat o : = Nome; end; dest r uct or TCampeonat o. Dest r oy; begi n BD. Dest r oy; MeusUt i l s . Fr ee; end; end. ============================================================================================ ARQUI VO: UAr bi t r o. pas ============================================================================================ uni t UAr bi t r o; i nt er f ace Uses UDMDados, SysUt i l s , UMeuUt i l s , UDMCl asses, Bor l and. Vcl . Cl asses, Bor l and. Vcl . DBXpr ess, Bor l and. Vcl . Db; t ype TAr bi t r o = c l ass pr ot ect ed conBD: TDt Mdl Dados; BD: TDt Mdl Cl asses; MeusUt i l s : TMeusUt i l s ; CodAr bi t r o: I nt eger ; CodTempor ada: I nt eger ; NomeAr bi t r o: St r i ng; Dat aNasci ment o: TDat eTi me; publ i c const r uct or Cr eat e; over l oad; pr ocedur e Set BD ( var umaConBD: TDt Mdl Dados) ; pr ocedur e Mat er i al i zar ( Cod: I nt eger ) ; f unct i on Get CodAr bi t r o : I nt eger ; Dest r uct or Dest r oy; over r i de; pr ocedur e Al t er ar Ar bi t r o( umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; pr ocedur e NovoAr bi t r o( umaTemp: I nt eger ; umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ;

Page 239: 5.1 Programa de Controle de Campeonatos de Futebol

239

end; i mpl ement at i on const r uct or TAr bi t r o. Cr eat e; begi n i nher i t ed; MeusUt i l s : = TMeusUt i l s . Cr eat e; end; pr ocedur e TAr bi t r o. Set BD ( var umaConBD: TDt Mdl Dados) ; begi n conBD : = umaConBD; BD : = TDt Mdl Cl asses. cr eat e( ni l ) ; BD. Set ConexaoBD ( conBD) end; pr ocedur e TAr bi t r o. Mat er i al i zar ( Cod: I nt eger ) ; begi n BD. SQLDt St Dados. CommandText : = ' SELECT * FROM ARBI TRO WHERE CODARBI TRO = ' + I nt ToSt r ( Cod) ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodAr bi t r o : = Fi el dByName( ' CodAr bi t r o' ) . asI nt eger ; CodTempor ada : = Fi el dByName( ' CodTempor ada' ) . asI nt eger ; NomeAr bi t r o : = Fi el dByName( ' NomeAr bi t r o' ) . asSt r i ng; Dat aNasci ment o : = Fi el dByName( ' Dat aNasci ment o' ) . asDat eTi me; end; end; pr ocedur e TAr bi t r o. NovoAr bi t r o( umaTemp: I nt eger ; umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var SQL: St r i ng; begi n CodTempor ada : = umaTemp; NomeAr bi t r o : = umNome; Dat aNasci ment o : = umaDat a; BD. SQLDt St Dados. CommandText : = ' SELECT OI D FROM GERADOR' ; wi t h BD. Cl nt Dt St Dados do begi n Cl ose; Open; Fi r s t ; CodAr bi t r o : = Fi el dByName( ' OI D' ) . asI nt eger ; end; BD. SQLDt St Dados. CommandText : = ' UPDATE GERADOR SET OI D = OI D + 1; ' ; BD. SQLDt St Dados. ExecSQL( ) ; SQL : = ' I nser t i nt o ARBI TRO ( CODARBI TRO, CODTEMPORADA, NOMEARBI TRO, DATANASCI MENTO, FOTO) val ues ( ' ; SQL : = SQL + I nt ToSt r ( CodAr bi t r o) + ' , ' ; SQL : = SQL + I nt ToSt r ( CodTempor ada) + ' , ' ; SQL : = SQL + ' ' ' ' + NomeAr bi t r o + ' ' ' , ' ; SQL : = SQL + ' ' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aNasci ment o) + ' ' ' , ' ; SQL : = SQL + ' : Fot o) ' ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Fot o' ) . LoadFr omSt r eam( Fot o, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end; pr ocedur e TAr bi t r o. Al t er ar Ar bi t r o( umNome: St r i ng; umaDat a: TDat eTi me; Fot o: TMemor ySt r eam) ; var SQL: St r i ng; begi n NomeAr bi t r o : = umNome; Dat aNasci ment o : = umaDat a; SQL : = ' Updat e ARBI TRO set ' ; SQL : = SQL + ' NOMEARBI TRO=' ' ' + NomeAr bi t r o + ' ' ' , ' ; SQL : = SQL + ' DATANASCI MENTO=' ' ' + MeusUt i l s . Dat aPar aBD ( Dat aNasci ment o) + ' ' ' , ' ; SQL : = SQL + ' FOTO=: Fot o wher e CODARBI TRO=' + I nt ToSt r ( CodAr bi t r o) ; BD. SQLDt St Dados. CommandText : = SQL; BD. SQLDt St Dados. Par amByName( ' Fot o' ) . LoadFr omSt r eam( Fot o, f t Bl ob) ; BD. SQLDt St Dados. ExecSQL( ) ; end;

Page 240: 5.1 Programa de Controle de Campeonatos de Futebol

240

f unct i on TAr bi t r o. Get CodAr bi t r o : I nt eger ; begi n Get CodAr bi t r o : = CodAr bi t r o; end; dest r uct or TAr bi t r o. Dest r oy; begi n BD. Dest r oy; MeusUt i l s . Fr ee; end; end.

Page 241: 5.1 Programa de Controle de Campeonatos de Futebol

241

Anexo 4

Artigo

DESENVOLVIMENTO DE UM SOFTWARE DE GERENCIAMENTO DE CAMPEONATOS DE FUTEBOL

Fernando Peron [email protected]

Resumo

Este artigo apresenta o desenvolvimento de um sistema de informação para campeonatos de futebol. O artigo faz uma breve contextualização ao leitor para o entendimento do problema e apresenta, uma abordagem para o desenvolvimento de software orientado a objetos. O artigo visa destacar a aplicação prática do curso de Sistemas de Informação.

1. Introdução 1.1 Objetivo Geral

O desenvolvimento de um programa de computadores, exercitando na prática os conhecimentos adquiridos durante o curso de Sistema de Informação. Para isso, o problema selecionado como tema para o software é uma aplicação capaz de fazer o gerenciamento completo de um campeonato de futebol, desde controle de tabela de jogos e resultados até a geração automática de relatórios, estatísticas e gráficos que permitam ao usuário entender melhor este tipo de competição.

1.2 Objetivo Específico Fazer a análise e projeto de um sistema, utilizando uma metodologia que auxilie a compreender o escopo do problema. Fazer a análise e projeto do sistema utilizando UML e implementação utilizando linguagem orientada a objetos Delphi na versão 8 em conjunto ao Banco de Dados Interbase versão 7.1.

2. Organização dos Campeonatos e as Regras

Antes deste artigo propriamente entrar na parte de análise e projeto do software, é feito neste tópico uma breve contextualização dos campeonatos de futebol para se entender a ferramenta que se deseja obter.

O futebol é conhecido como um esporte com regras conservadoras. Ao mesmo tempo, para tornar o futebol mais atraente para o público, as fórmulas de disputa dos campeonatos de futebol são bastante diversificadas.

As fórmulas de disputas, também conhecidas como regulamento da competição, é o mecanismo que organiza a maneira de como será disputada a competição. Na fórmula de disputa de uma competição é definido de que forma será conhecido o campeão da disputa, a ordem de classificação, os times que serão rebaixados, etc.

Page 242: 5.1 Programa de Controle de Campeonatos de Futebol

242

O sistema deve ter grande flexibilidade para aceitar que as diferentes competições de futebol possam ser controladas.

Para todo jogo de futebol realizado existe um documento oficial intitulado “Súmula” que possui o resumo dos acontecimentos do jogo. A súmula é preenchida pelos árbitros da partida.

O software tem o objetivo fazer um resumo desta súmula da partida, podendo até mesmo, incluir informações que não constam na súmula oficial, com a finalidade de gerar uma variedade maior de estatísticas do campeonato.

3. Estado da Ar te Três ferramentas com objetivos

semelhantes à aplicação objeto deste trabalho foram pesquisadas. Foram feitas observações dos pontos positivos e negativos de cada uma das ferramentas. O aproveitamento das boas soluções e a precaução com as franquezas das ferramentas existentes colaboraram para o desenvolvimento de um software completo e eficiente. Este estudo também tem a finalidade de estabelecer um parâmetro de qualificação do resultado deste trabalho.

O software LeaguePad é um software extremamente flexível. Através dele é possível gerenciar qualquer tipo de competição de futebol. O software também se adapta as necessidades do usuário. Para os usuários que querem obter grandes quantidades de informações, o software atende a quase tudo que se possa imaginar. Por outro lado, caso o usuário queira apenas ter a tabela de jogos, os resultados e a classificação atualizada automaticamente, este software se adapta perfeitamente.

O ponto fraco deste software é o fato de ele tratar cada temporada de um campeonato de forma independente.

Isso quer dizer que não é possível fazer uma análise entre duas temporadas de um campeonato de um determinado país. O mesmo problema ocorre com as equipes. Elas são tratadas de forma independente dentro de cada campeonato. Assim, se uma equipe A disputa dois campeonatos cadastrados no sistema. O sistema interpreta com duas equipes distintas, não sendo possível gerar estatísticas da equipe A nestes dois campeonatos que disputou.

O Football League Tracker é outro bom software que se propõe a fazer o controle de campeonatos de futebol. Este programa também é bastante completo. Abrange quase todas as estatísticas que o jogo de futebol pode gerar. É possível controlar além da tabela de classificação, dados a respeito dos jogadores, como, por exemplo, lista de artilheiros e jogadores que marcaram gols contra. Também é possível acessar uma tabela de informações sobre as arbitragens do campeonato.

O programa deixa a desejar em sua interface de difícil compreensão. Algumas tabelas possuem seus cabeçalhos com as palavras pela metade, não sendo possível saber que dado está inserido na coluna da tabela. O procedimento para inserir os jogos e placares, além das estatísticas também não é simples. Requer bastante trabalho do usuário para aprender e posteriormente usar. Existe também uma grande quantidade de menus em algumas interfaces.

O Gerenciador de Campeonato Versão 1.0 é um software mais simples que o LeaguePad e o LTracker. Suas funcionalidades basicamente servem para o acompanhamento da tabela de jogos e seus respectivos resultados e a geração automática da tabela de classificação a partir dos placares inseridos nos jogos.

4. Fundamentos Teór icos

Page 243: 5.1 Programa de Controle de Campeonatos de Futebol

243

A Programação Orientada a Objetos é uma extensão natural da programação estruturada. Sua essência é a reutilização de código. Uma vez que você cria um objeto para uma aplicação, este objeto poderá (e deverá) ser utilizado em novas aplicações [SIL 00]. O objetivo específico é de construir um programa para computadores utilizando os conceitos de programação orientada a objetos. Porém, a construção de um bom programa orientado a objetos vai além de saber o dominar uma linguagem orientada a objetos, como por exemplo, Java ou Delphi. Este é apenas o primeiro passo para construção. É fundamental para obtenção do sucesso do trabalho uma boa análise e um bom projeto. A metodologia de análise e projeto utilizada neste trabalho é proposta pelo livro de Craig Larman: Utilizando UML e Padrões. Este livro apresenta um exemplo de processo de desenvolvimento, o qual descreve uma possível ordem de atividades e um ciclo de vida de desenvolvimento. Contudo, ele não prescreve um processo ou metodologia definitiva; ele fornece um exemplo de passos comuns. UML tem o poder de transformar idéias em modelos reais. É uma linguagem destina estruturação de projetos. Um dos principais objetivos da UML é tornar todo o processo de desenvolvimento totalmente transparente e organizado [SOA 01].

Em um nível alto, os principais passos até a entregar uma aplicação incluem os seguintes: 1. Planejar e Elaborar – Planejamento, definição de requisitos, construção de protótipos e assim por diante. 2. Construir – A construção do sistema. 3. Instalar – A implantação do sistema para uso.

Um processo de desenvolvimento de software é um método para organizar as atividades

relacionadas com a criação, entrega e manutenção de sistemas de software [LAR 00].

5. O Sistema de Gerenciamento de Campeonatos de Futebol

A proposta deste trabalho é a criação de um programa de computador para fazer o controle de campeonatos de futebol.

Um bom sistema de controle de campeonatos deve ser capaz de gerenciar vários campeonatos de futebol. Dentro de cada campeonato, deve ser possível incluir as equipes que disputam a competição e os jogadores inscritos por estas equipes. Também fazem parte de um campeonato, os árbitros que apitam um jogo e o sistema também deve abranger este fato.

Um sistema robusto para controle de campeonatos, deve principalmente ser capaz de aceitar o gerenciamento dos mais diferentes tipos de competições de futebol. Cada tipo de competição tem suas fórmulas de disputa. Uma Copa do Mundo, exemplo, numa primeira fase as equipes são divididas em grupos. As equipes melhores colocadas avançam para fase seguinte, onde novamente se organizam em grupos e assim sucessivamente até chegar a grande final. Já num campeonato nacional disputado em um país da Europa, como por exemplo, o Campeonato Inglês de Futebol, possui uma fórmula de disputa diferente da fórmula de disputa da Copa do Mundo. No Campeonato Inglês, as equipes jogam todas entre si em uma única fase em um único grupo. A que somar mais pontos é a grande campeã.

Também a de se esperar de um bom software de Controle de Campeonatos a possibilidade de gerenciar os jogos dentro da competição, incluindo a escalação das

Page 244: 5.1 Programa de Controle de Campeonatos de Futebol

244

equipes e juizes. Além do simples placar do jogo, deve ser possível inserir no sistema as diversas estatísticas inerentes a uma partida de futebol. Em contrapartida, é desejável que este sistema nos mostre de forma automática, uma porca de relatórios estatísticos que nos ajudem a compreender a competição.

O sistema deve ser capaz de suportar o controle de diversos campeonatos. Os campeonatos são disputados em sua grande maioria anualmente. Cada edição de um campeonato recebe o nome de Temporada. Assim, um campeonato deve ser cadastrado uma única vez. Esta distinção entre Campeonato e Temporada permitirá ao sistema gerar informações de um Campeonato ao longo das suas edições. Com isso, o conceito de campeonato no sistema é bastante simples, entretanto o conceito de Temporada é muito mais complexo, pois é na temporada que efetivamente registradas as tabelas de jogos e implicações.

Outros dois importantes conceitos que o sistema administrará de forma única são as Equipes e os Estádios. Assim como os campeonatos, uma Equipe e um Estádio serão cadastrados uma única vez. Desta forma será possível gerar todas as informações referentes a uma Equipe ao longo das diferentes competições que disputou.

6. Conclusões

O presente trabalho apresentou os detalhes que envolvem a disputa de um campeonato de futebol para servir de base para o desenvolvimento do software.

A metodologia auxilia o desenvolvedor na transição das etapas do desenvolvimento e os resultados a serem obtidos em cada etapa. Foi útil para delimitar com exatidão o problema a ser resolvido. A fase de análise

diminui a complexidade do problema. O desenvolvimento foi feito em partes. Os casos de uso são classificados de acordo com a relevância para o sistema. Isso deu segurança ao desenvolvimento, pois os resultados vão aparecendo já nos primeiros ciclos de desenvolvimento e, em momento algum, se cria dúvidas quanto ao andamento do projeto.

7. Referências Bibliográficas [LAR 00] Larman, Craig. Utilizando UML e Padrões – Uma Introdução à Análise e ao Projeto Orientado a Objetos. Editora Bookman. 2000. [SOA 01] Soares, Walace. Crie um Site B2C com PHP 4 e MySQL . Editora Érica. 2001. [SIL 00] Silva, Ivan José de Mecenas Silva. Delphi 5 – Objetos e Herança. Book Express. 2000.