ComboBox com history
Olá...
Coloquei em uma tela de login, um combo e um edit. Agora que gravar um history no combo quando o usuário conectar. Assim da proxima vez, o usuário dele estará no combo. Como farei isso?
Abraços
Coloquei em uma tela de login, um combo e um edit. Agora que gravar um history no combo quando o usuário conectar. Assim da proxima vez, o usuário dele estará no combo. Como farei isso?
Abraços
Redoctober
Curtidas 0
Respostas
Eixox
09/01/2006
Você pode optar por duas formas diferentes de fazer isso:
1 - Armazenando em um arquivo Ini e quando o sistema é iniciado ele lê esse arquivo e carrega todo o histórico no arquivo Ini.
2 - Usando uma rotina do tipo ComboBox1.Items.Add(ComboBox1.Text); para carregar os itens para dentro do combobox e depois usando as procedures ComboBox1.Items.[b:5d061e330e]SaveToFile[/b:5d061e330e](´NomeDoArquivo´) e
ComboBox1.Items.[b:5d061e330e]LoadFromFile[/b:5d061e330e](´NomeDoArquivo´); para salvar e carregar os dados no combobox.
Outro detalhe, a medida que você for inserindo itens no combobox, você pode usar o IndexOf para ver se o nome digitado já existe.
1 - Armazenando em um arquivo Ini e quando o sistema é iniciado ele lê esse arquivo e carrega todo o histórico no arquivo Ini.
2 - Usando uma rotina do tipo ComboBox1.Items.Add(ComboBox1.Text); para carregar os itens para dentro do combobox e depois usando as procedures ComboBox1.Items.[b:5d061e330e]SaveToFile[/b:5d061e330e](´NomeDoArquivo´) e
ComboBox1.Items.[b:5d061e330e]LoadFromFile[/b:5d061e330e](´NomeDoArquivo´); para salvar e carregar os dados no combobox.
Outro detalhe, a medida que você for inserindo itens no combobox, você pode usar o IndexOf para ver se o nome digitado já existe.
GOSTEI 0
Redoctober
09/01/2006
Teria um exemplo prático da segunda opção?
GOSTEI 0
Redoctober
09/01/2006
Faleu pela ajuda amigo!
eu usei o evento OnChance
Assim se existir algo parecido com o digitado ele é selecionado.
Valeu.
eu usei o evento OnChance
ComboBox1.AutoComplete := true;
Assim se existir algo parecido com o digitado ele é selecionado.
Valeu.
GOSTEI 0
Redoctober
09/01/2006
Um probleminha!
meu arquivo ta assim:
---
joao
maria
maria
jose
joao
joao
maria
---
Ou seja, nesse arquivo tem vários nomes repetidos... Preciso carregar esses dados na combo, porem sem ter nenhum repetido. Ficando assim:
--
joao
maria
jose
--
Como faria?
meu arquivo ta assim:
---
joao
maria
maria
jose
joao
joao
maria
---
Ou seja, nesse arquivo tem vários nomes repetidos... Preciso carregar esses dados na combo, porem sem ter nenhum repetido. Ficando assim:
--
joao
maria
jose
--
Como faria?
GOSTEI 0
Edilcimar
09/01/2006
na hora de salvar, verifique se o nome já existe, caso positivo não salve
GOSTEI 0
Eixox
09/01/2006
Por causa disso que eu te disse para executar aquela função chamada INDEXOF, ele faz justamente aquilo que você precisa, retorna um boolean. Se não achou retorna false, se achou retornar True.
Então, quando o usuário pressiona a tecla enter ou tab para se deslocar para o próximo campo, ele executa o evento onExit e lá no evento coloque o código:
if Combobox1.Items.Indexof(Combobox1.Text) = false then
ComboBox1.Items.Add(ComboBox1.Text);
Por causa disso que eu te falei esse lance.
Então, quando o usuário pressiona a tecla enter ou tab para se deslocar para o próximo campo, ele executa o evento onExit e lá no evento coloque o código:
if Combobox1.Items.Indexof(Combobox1.Text) = false then
ComboBox1.Items.Add(ComboBox1.Text);
Por causa disso que eu te falei esse lance.
GOSTEI 0
Redoctober
09/01/2006
IndexOf() é Integer. Ele não retorna boolena.
Do jeito que vc me passou nao funcionou.
Do jeito que vc me passou nao funcionou.
GOSTEI 0
Redoctober
09/01/2006
[b:be5552a4b6]up[/b:be5552a4b6]
GOSTEI 0
Adriano Santos
09/01/2006
IndexOf() é Integer. Ele não retorna boolena.
Do jeito que vc me passou nao funcionou.
Teste se é maior ou menor que zero
if ...IndexOf() > 0 then //Existe //Faça o que tem que fazer.
GOSTEI 0
Eixox
09/01/2006
Desculpe-me pela besteira em que lhe passei, o negócio é o seguinte, o INDEXOF realmente retorna um valor inteiro, porém se você perceber no arquivo de ajuda do delphi verá que:
Se a String que você procura for achada na lista ele retornará um valor inteiro dizendo qual é a posição na lista
Se a String que você procura não for localizada na lista ele retornará o valor -1.
Então meu caro amigo, no evento OnExit do combobox ou em qualquer botão, antes de voê executar o processo de inserssão do nome, mande ele executar esse comando que também insere o nome mas antes verifica se ele já está dentro da combobox. Eu testei e funciona corretamente - é case sensitive ok.
[b][color=red:472b02215f]if ComboBox1.Items.IndexOf(ComboBox1.Text) = -1 then
ComboBox1.Items.Add(ComboBox1.Text);[/[/color:472b02215f]b]
Se a String que você procura for achada na lista ele retornará um valor inteiro dizendo qual é a posição na lista
Se a String que você procura não for localizada na lista ele retornará o valor -1.
Então meu caro amigo, no evento OnExit do combobox ou em qualquer botão, antes de voê executar o processo de inserssão do nome, mande ele executar esse comando que também insere o nome mas antes verifica se ele já está dentro da combobox. Eu testei e funciona corretamente - é case sensitive ok.
[b][color=red:472b02215f]if ComboBox1.Items.IndexOf(ComboBox1.Text) = -1 then
ComboBox1.Items.Add(ComboBox1.Text);[/[/color:472b02215f]b]
GOSTEI 0
Redoctober
09/01/2006
Deu certinho.
Valeu pela atenção!
Abraço
Valeu pela atenção!
Abraço
GOSTEI 0