Passar parametros pelo ColorDialog para o banco de dados

Delphi

06/12/2006

Boa noite a todos.

Gostaria de uma ajuda, tenho um form que os usuarios personalizam sua aplicação, poderia se trabalhar em 2 formas:

- Gravando as configurações em ini/regedit (porem as pessoas não sentam no mesmo computador o que leva a ter que configurar as cores novamente).

- Gravar no banco de dados, foi essa a minha escolha

Então tenho 3 duvidas

1- Como eu passo os parametros do componente ColorDialog, eu fiz varios teste e sem sucesso, o ultimo fiz assim.
- Query.FieldByName(´CORTEXTO´).AsFloat := ColorDialog.Color;

2- Como eu crio no banco de dados, integer, string, float?

3- Essa ´personalização´ é somente em uma tela do sistema, como eu poderia fazer para quando o usuario entrar nessa tela alterar as cores (ler no banco de dados).

Obrigado a todos.


Corcos

Corcos

Curtidas 0

Respostas

Micheus

Micheus

06/12/2006

2- Como eu crio no banco de dados, integer, string, float?
[b:c2e0e3e548]Corcos[/b:c2e0e3e548], Que banco vc utiliza?
Se vc utiliza alguma ferramenta para manipular a estrutura das tabelas, ela não oferece estas opções?

3- Essa ´personalização´ é somente em uma tela do sistema, como eu poderia fazer para quando o usuario entrar nessa tela alterar as cores (ler no banco de dados).
Bastaria vc no OnCreate do form, ler o registro no banco de dados e atribuir aos itens que vc esta personalizando a cor, ou seja, aqueles que vc gravou.
Mas se é apenas um form, e se vc não for associar ao usuário esta personalização, não seria melhor utilizar a gravação no arquivo INI, que ficaria guardado na máquina onde o programa será executado?


GOSTEI 0
Corcos

Corcos

06/12/2006

Micheus é assim:

Eu tenho varios usuarios acessando computadores diferentes em horarios diferentes, então não tem como guardar no INI pois um dia a pessoa senta no computador 1 e outro dia no computador 2, 3 e etc... então achei melhor gravar no banco de dados mesmo.

Eu esqueci de informar uso o Interbase, e eu crio as tabelas todas não mao mesmo, vc conhece alguma ferramenta boa para fazer a organização de tabelas e gerar scripts? Eu já testei algumas mas nenhuma boa e pratica.

Em relação no oncreate a melhor forma é dando um select na tabela procurando o ID do funcionario logado? Tenho medo disso ficar pesado d+

Obrigado


GOSTEI 0
Micheus

Micheus

06/12/2006

Eu esqueci de informar uso o Interbase, e eu crio as tabelas todas não mao mesmo, vc conhece alguma ferramenta boa para fazer a organização de tabelas e gerar scripts? Eu já testei algumas mas nenhuma boa e pratica.
Bom, eu trabalho com FireBird e utilizo o IBExpert (também pode ser utilizado com o IB) e gosto bastante dele neste aspécto.

Em relação no oncreate a melhor forma é dando um select na tabela procurando o ID do funcionario logado? Tenho medo disso ficar pesado d+
Então, informando o ID do usuário vc vai estar fazendo o select de apenas uma linha, já que vc disse que guarda a informação de apenas um formulário. Não tem como ser mais ´leve´. Talvez, o que vc possa fazer (caso este form seja criado e destruido várias vezes) é carregar esta informação para uma variável global após o login do usuário e então utilizá-la posteriormente.

[]s


GOSTEI 0
Corcos

Corcos

06/12/2006

Valeu pelas respostas Micheus

Em relação a essas perguntas


1- Como eu passo os parametros do componente ColorDialog, eu fiz varios teste e sem sucesso, o ultimo fiz assim. - Query.FieldByName(´CORTEXTO´).AsFloat := ColorDialog.Color;


2- Como eu crio no banco de dados, integer, string, float?



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/12/2006

crie o campo como varchar(10)

aí, na sua aplicação, você faz:
Query.FieldByName(´CORTEXTO´).AsString := ColorToString(form.color);

e para ´recuperar´ a cor:
form.color := StringToColor(Query.FieldByName(´CORTEXTO´).AsString);


lembrando que as funções ColorToString() e StringToColor() estão na unit Graphics.


GOSTEI 0
Micheus

Micheus

06/12/2006

[quote:bc89fe2df7]1- Como eu passo os parametros do componente ColorDialog, eu fiz varios teste e sem sucesso, o ultimo fiz assim. - Query.FieldByName(´CORTEXTO´).AsFloat := ColorDialog.Color;
[/quote:bc89fe2df7]Se o campo em sua tabela for do tipo inteiro (seria o mais apropridado) vc deveria utilizar [i:bc89fe2df7]AsInteger[/i:bc89fe2df7] no lugar de [i:bc89fe2df7]AsFloat[/i:bc89fe2df7].

[quote:bc89fe2df7]2- Como eu crio no banco de dados, integer, string, float?
[/quote:bc89fe2df7]Numa tabela que já existe, vc utiliza a instrução SQL ALTER.
Ex.
- Para eliminar um campo:
ALTER TABLE <NOME_TABELA> DROP <NOME_CAMPO>

- Para incluir novo campo:
ALTER TABLE <NOME_TABELA> ADD <NOME_CAMPO> <TIPO_CAMPO>
Tipo Campo: INTEGER, VARCHAR([i:bc89fe2df7]n[/i:bc89fe2df7]), FLOAT, ...

- Para alterar o tipo de um campo já existente:
ALTER TABLE <NOME_TABELA> ALTER <NOME_CAMPO> TYPE <NOVO_TIPO_CAMPO>

Tem umas dicas neste [url=http://www.tecnobyte.com.br/dica9.html]link[/url]


GOSTEI 0
Corcos

Corcos

06/12/2006

Valeu emerson deu certinho aqui!!!

Fiz assim e funcionou direitinho

for I := 0 to ComponentCount - 1 do if (Components [I] is TSpeedButton) then (Components [I] as TSpeedButton).Font.Color := StringToColor(frmPersonalizar.QryPersonaliza.FieldByName(´CORBOTAO´).AsString);



GOSTEI 0
POSTAR