Duvidas No Meu Projeto!

Delphi

05/11/2007

Estou fazendo o projeto de conclusão do meu curso de informática e me surgiram algumas duvidas.
O projeto é constituído de uma programa de cadastro de clientes e produtos com outros recursos a mais como geração de diversos gráficos e estatísticas.

Compilador: Delphi 6 (eu tenho a versão 2006 também mas prefiro que seja nesta pois é a que existe no meu curso e é a que eu sei mexer melhor)
Banco de Dados: FireBird
Sistema Operacional: Windows XP

Se eu estiver usando um componente errado ou que não seja o melhor para o que eu estou fazendo gostaria que me dissesem a opção que seja melhor. Mas o Desing do projeto deve ser este(Foto).

Aqui vão as duvidas:
1)Na parte superior do programa fica o menu principal, eu usei o componente TPageControl para faze-lo. Tenho 2 duvidas:
1.1 Como fazer para que os botões se organizem automaticamente por ordem de uso ( + usado pra o – usado);
1.2 Como fazer para que o menu (TPageControl) redimensione sua largura de acordo com o tamanho da janela;
2)Aparte principal do programa é feita também com um TPageControl, Vamos as duvidas:
2.1 Para evitar o excesso de janelas no programa eu gostaria que as funcionalidades (cadastro, geração de gráficos etc...) abrissem em abas como no navegador FireFox.;
2.2 Eu quero que as mesmas só sejam carregadas na memória quando for solicitado seu uso pois o programa vai rodar em computadores ultrapassados e com pouca memória (se for muito difícil, não se preocupem pois não é um objetivo principal).;
2.3 Também gostaria de poder abrir múltiplas janelas do cadastro de clientes com dados de clientes diferentes, sem precisar criar vários forms iguais. EX: eu clico num registro dbgrid e abre uma janela com os dados deste cliente, se eu for clicar em outro ou até no mesmo registro deve abrir outra aba com os dados deste novo cliente;
3)Gostaria de colocar um calendário na página inicial, lembrando que os dados ficarão no banco de dados, duvidas:
3.1 O calendário mostraria as datas coloridas de acordo com o tipo de atividade agendada e sua prioridade. Qual o melhor componente para o caso, TmothCalendar ou Tcalendar Como na imagem acima?
3.2 Após saber qual usar que propriedades do componente eu altero. Com fazer o calendário?
3.3 Como colorir e alterar as propriedades de datas especificas;
4)É vantagem inserir uma imagem no banco de dados ou eu devo criar uma diretório de imagens e colocar apenas o caminho no banco, lembrando que o programa ficará em rede (caso seja melhor só o caminho as imagens terão que ser passadas pela rede?);
5)Como capturar os dados do banco de dados para o delphi como o nome do cliente direto da tabela, não estou falando de passar os dados para labels e edits e sim de, como exemplo, passar uma dado do banco para uma variável, ou usar dados para fazer calculos internos e nos gráficos;
6)Como calcular: quantos chamados estão pendentes, quantos clientes estão de aniversário, quantos clientes eu tenho no total;
7)Como usar blobs em DBGrid, pois o meu fica apenas escrito memo. Como colocar dados de diferentes tabelas em um mesmo DBGrid. EX: eu quero mostrar dados de um telefone e código de área (de uma mesma tabela) junto com o tipo do telefone (que esta em outra tabela);
8)Me indiquem uma apostila boa de delphi com firebird;
9)Como fazer gráficos. EX: porcentagem de tipos de clientes em pizza, lucros de cada mês com linhas, etc;


Felipevencato

Felipevencato

Curtidas 0

Respostas

Paulo Samurai

Paulo Samurai

05/11/2007

Antes de mais nada, não vou dar resposta precisa mas indicar os caminhos para que voce estude e execute o seu trabalho. Exceção se a resposta for somente uma instrução ou valor de propriedade.

A alternativa seria fazer o trabalho para voce, mas isso obviamente merece ser cobrado ;)

No mais, vamos por partes

1.1 Como fazer para que os botões se organizem automaticamente por ordem de uso ( + usado pra o – usado);


Eu acho isso estranho que os botões se mexam conforme for desempatando hehe, mas uma ideia seria incrementar os tags a cada clique e depois fazer um calculozinho para alterar as propriedades ´left´. TIniFile ou TRegistry se precisar persistir.

1.2 Como fazer para que o menu (TPageControl) redimensione sua largura de acordo com o tamanho da janela;


Propriedade Align = alClient deve resolver.

2.1 Para evitar o excesso de janelas no programa eu gostaria que as funcionalidades (cadastro, geração de gráficos etc...) abrissem em abas como no navegador FireFox.


Essa é interessante e não é dificil:

Voce pode fazer o parent de cada form que criar receber como parent uma aba (tabSheet) do pagecontrol:

f := TMeuForm.Create(tsPagina);
f.Parent := tsPagina;

2.2 Eu quero que as mesmas só sejam carregadas na memória quando for solicitado seu uso pois o programa vai rodar em computadores ultrapassados e com pouca memória (se for muito difícil, não se preocupem pois não é um objetivo principal).;


Não é dificil, mas devemos supor que por ser TCC voce saiba um pouco de orientação a objetos e tenha ideia do controle de eventos que irá abrir e fechar as abas. Basta então instanciar os componentes dinamicamente como fiz no 2.1, o problema é destruir ;)

2.3 Também gostaria de poder abrir múltiplas janelas do cadastro de clientes com dados de clientes diferentes, sem precisar criar vários forms iguais. EX: eu clico num registro dbgrid e abre uma janela com os dados deste cliente, se eu for clicar em outro ou até no mesmo registro deve abrir outra aba com os dados deste novo cliente;


Será bem mais facil se voce instanciar um objeto para cada form de cadastro, para cada registro. Mas cada um deles precisará ter um objeto de dados independente da grid seja table ou query.

3.1 O calendário mostraria as datas coloridas de acordo com o tipo de atividade agendada e sua prioridade. Qual o melhor componente para o caso, TmonthCalendar ou Tcalendar Como na imagem acima?


É um pouco dificil customizar o MonthCalendar padrão sendo mais facil trabalhar com OwnerDraw do TCalendar (não lembro se ele publica este evento) ou então usar este exemplo para criar seu componente proprio.

3.2 Após saber qual usar que propriedades do componente eu altero. Com fazer o calendário?


Como antes, este é um pequeno estudo a parte em seu projeto. Se houver o evento OnDrawItem ou similar este deve ser utilizado. De repente a melhor alternativa acaba sendo utilizar um StringDrig (drawGrid) e desenhar tudo a mão... isso considerando que voce não possa instalar componentes de terceiros.


[QUOTE]4)É vantagem inserir uma imagem no banco de dados ou eu devo criar uma diretório de imagens e colocar apenas o caminho no banco, lembrando que o programa ficará em rede (caso seja melhor só o caminho as imagens terão que ser passadas pela rede?);[QUOTE]

Bom, a desvantagem de armazenar só o caminho é que um usuario poderia acessar o compartilhamento que terá permissão de escritae apagar ou alterar manualmente as imagens. Alem da propria necessidade do compartilhamento de arquivos. Portanto armazenar no banco de dados evita alguns transtornos ;)

5)Como capturar os dados do banco de dados para o delphi como o nome do cliente direto da tabela, não estou falando de passar os dados para labels e edits e sim de, como exemplo, passar uma dado do banco para uma variável, ou usar dados para fazer calculos internos e nos gráficos;


Tudo depende do momento, a sintaxe basica para isso é:

x := Table.FieldByName(´NOME_CLIENTE´).AsString;

Voce deve olhar os eventos dos datasets e datasources e escolher os momentos adequados ;)

6)Como calcular: quantos chamados estão pendentes, quantos clientes estão de aniversário, quantos clientes eu tenho no total;


Exatamente como é feito à mão, novamente se é TCC voce deve ter o conhecimento básico para efetua-los. Estudar um pouquinho os metodos e propriedades do componente de acesso a dados que voce utiliza é importante e conhecer bem sua propria modelagem.

Se puder usar SQL (suponho que sim), select counts e sum´s deve ajudar. Senão precisara percorrer o conjunto de dados todo (exceto quando recordCount for aplicavel) e fazer os calculos à mão.

Se não tiver ideia do que estou falando voce tem que começar aprendendo o basico do delphi ou então utilizar uma linguagem que tenha mais intimidade.

7)Como usar blobs em DBGrid, pois o meu fica apenas escrito memo.


Em dbgrid idealmente não se deve colocar blob´s mesmo. Imagine que cada blob contenha um capitulo de um livro ;)

Seria melhor não mostrar os blobs na grid, e mostrar somente o blob do registro selecionado em um TMemo para não precisar de componentes de terceiros e nem recorrer a owner draw.

Como colocar dados de diferentes tabelas em um mesmo DBGrid.


Usando select com join, lembrando que se fizer isso a dbgrid não será mais editável.

Me indiquem uma apostila boa de delphi com firebird;


De uma corrida na biblioteca e pegue livros, são mais completos ;) não tem muito jeito. Para o seu trabalho não conheço nenhuma apostila completa o bastante.

9)Como fazer gráficos. EX: porcentagem de tipos de clientes em pizza, lucros de cada mês com linhas, etc;


Suponho que os gráficos não precisem ser impressos. Aqui voce tem dois caminhos. Pode usar TeeChart? Se sim é um estudo a parte, se não recorrerás à ´pogs.´

POG: Calculo com tamanho e quantidade de shapes ou códigos diretos de owner draw devem resolver. É necessário dizer no entanto que não é uma tarefa trivial. Criar uma classe (talvez) que monte diversos tipos de gráficos sobre um canvas por sí já é um TCC :)

Bons estudos!

[]´s


GOSTEI 0
Felipevencato

Felipevencato

05/11/2007

Este é o meu trabalho de conclusão mas o meu curso é uma droga e eu não tenho o conhecimento de coisas que vc disse, e também não aprendi orientação a objetos no delphi, aprendi em java (e foi a unica coisa que aprendi em java!).


GOSTEI 0
POSTAR