 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
guabiru33 Novato

Registrado: Quarta-Feira, 6 de Dezembro de 2017 Mensagens: 10
|
Enviada: Qui Dez 07, 2017 8:17 pm Assunto: [Dúvida] Combobox mostra ultimo .item usado |
|
|
Boa noite mais uma vez meus caros!
gostaria de saber como fazer um Combobox, pra ser mais especifico, como fazer um DBLookupComboBox mostrar como primeira opção o ultimo .item ou .keyvalue selecionado que fique salvo para quando abrir o programa novamente |
|
| Voltar ao Topo |
|
 |
lokasso Aprendiz

Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Sex Dez 08, 2017 5:05 am Assunto: |
|
|
guabiru33 brother, no meu entendimento tu deveria fazer com que esse ComboBox carregasse esse item direto de um arquivo .ini
Tu deveria fazer um procedimento para que toda vez que alterasse o combobox gravasse no .ini e assim na hora de reabrir o sistema o combobox leria esse .ini pegando assim esse item
Não sei se seria o mais certo a fazer, mas seria uma opção
Espero que ajude
Abraços |
|
| Voltar ao Topo |
|
 |
guabiru33 Novato

Registrado: Quarta-Feira, 6 de Dezembro de 2017 Mensagens: 10
|
Enviada: Sex Dez 08, 2017 12:52 pm Assunto: |
|
|
| lokasso escreveu: | guabiru33 brother, no meu entendimento tu deveria fazer com que esse ComboBox carregasse esse item direto de um arquivo .ini
Tu deveria fazer um procedimento para que toda vez que alterasse o combobox gravasse no .ini e assim na hora de reabrir o sistema o combobox leria esse .ini pegando assim esse item
Não sei se seria o mais certo a fazer, mas seria uma opção
Espero que ajude
Abraços |
lokasso nesse arquivo.ini ele teria tb todos os outros itens do combobox? pode por favor me explicar melhor como fazer esse link do combobox e o .ini |
|
| Voltar ao Topo |
|
 |
lokasso Aprendiz

Registrado: Terça-Feira, 11 de Abril de 2017 Mensagens: 174
|
Enviada: Sex Dez 08, 2017 3:36 pm Assunto: |
|
|
| guabiru33 escreveu: | | lokasso nesse arquivo.ini ele teria tb todos os outros itens do combobox? pode por favor me explicar melhor como fazer esse link do combobox e o .ini |
Brother, você iria ter que criar uma unit para apenas funções, essa unit serve para você centralizar todas as suas funções que usa com frequencia, por exemplo abrir formulario, ler e gravar o arquivo ini.
| Citação: | Primeiro vamos partir para a gravação e leitura do arquivo .ini
Porém antes vamos usar a unit para o Delphi reconhecer o arquivo .ini:
| Citação: | | uses IniFiles, System.SysUtils |
Agora sim vamos criar a procedure e function que você irá utilizar, você as declara após o uses da interface:
| Código: | procedure SetValorIni(pLocal, pSessao, pSubSessao, pValor: String);
function GetValorIni(pLocal, pSessao, pSubSessao: String): String; |
A procedure grava no arquivo .ini e a function le
Agora você terá que preencher a procedure e a function:
| Código: | procedure SetValorIni(pLocal, pSessao, pSubSessao: String; pValor: String);
var Arq: TIniFile;
begin
Arq:= TIniFile.Create(pLocal);
Arq.WriteString(pSessao, pSubSessao, pValor);
Arq.Free;
end;
function GetValorIni(pLocal, pSessao, pSubSessao: String): String;
var Arq: TIniFile;
begin
Arq:= TIniFile.Create(pLocal);
Result:= Arq.ReadString(pSessao, pSubSessao, '');
Arq.Free;
end; |
Após isso você terá que usar essa unit no formulário onde tem esse combobox, criar duas variaveis globais e após, fazer mais uma procedure para gravar o conteudo desse combobox, declare-a em private ou public
Ex:
| Código: | procedure TFormulário.CarregaComboBox;
begin
FileName:= ExtractFilePath(Application.ExeName) + 'config.ini';
SetValorIni(FileName, 'COMBOBOX','ULTIMO', Combobox);
end; |
No evento OnClick do ComboBox você coloca esse código:
| Código: | ComboBox:=ComboBox1.ItemIndex; //Caso queira fazer por String troque 'ItemIndex' por 'Items'
CarregaComboBox; |
Ai no OnCreate do Formulário que você tem esse combobox você coloca assim, Ex:
| Código: | ComboBox.ItemIndex:= GetValorIni(ExtractFilePath(Application.ExeName) +
'config.ini', 'COMBOBOX','ULTIMO');
//Lembrando, se for string, troque por Items |
Pronto, está feito para trazer o ultimo registro selecionado
|
Agora vou explicar alguns itens desses procedimentos:
IniFiles: Faz o Delphi reconhecer um arquivo texto em arquivo de inicialização, pois o mesmo é um arquivo de texto, você pode abrir e editar o arquivo .ini no bloco de notas
pLocal: É o local onde será salvo o .ini
pSessao: É a sessão que vai escrever, você ter várias sessões como por ex: Servidor, Aparência....
pSubSessao: É a subsessão da sua sessão, ou seja, se por exemplo você está trabalhando com a localização do servidor você terá algumas sessões, como por exemplo: Local, UserName, DataBase.... (você pode ter n's sessões também)
pValor: Será o valor a ser salva na subsessão, caso for o UserName do Banco de Dados, será SYSDBA ou outro que escolher, o valor, você só poderá ter um para cada subsessão
FileName: É a variável que vai "pegar" o caminho do seu arquivo .ini, terá que ser String
Application.ExeName: É a pasta que está salvo o executavel do seu software, por ex: "c:/arquivos de programa/winrar/" + arquivo.ini
SetValorIni(FileName, 'COMBOBOX','ULTIMO', Combobox): Aqui ele abre o arquivo .ini, cria a sessão COMBOBOX, depois a subsessao ULTIMO e grava o valor que foi passado pela variavel, caso for "1", vai gravar "1", se for "Delphi", irá gravar "Delphi"
ComboBox: Foi a variavel que usei para representar a variavel global para pegar o valor do combobox, caso for index o tipo terá que ser Integer, se caso for palavra, String
A procedure no OnClick do ComboBox1, está passando para a variavel Combobox o seu valor e logo após chama a procedure para gravar no .ini, pode ser feito também essa procedure no OnExit do Combobox
A procedure no OnCreate do Formulário vai fazer com que assim que for criado o formulário o combobox leia o que está no arquivo .ini
Obs1: Caso dê erro no OnCreate, tente no OnActive ou OnShow do formulário, pois pode ser que de erro na hora da criação por ainda não ter criado os componentes
Obs2: Caso o ComboBox for você que preencher "na mão" então não é necessário o DBComboBox ou DBLookupComboBox, porém caso for algum dos ultimos dois, abre a tabela a qual irá trabalhar na hora da criação do formulário e após a abertura da tabela que você faz o DBC ou DBLCB ler o arquivo .ini
Bom, acho que é isso, qualquer dúvida poste ai que tentaremos soluciona-lá
Abraços |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|