ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Dúvida] Combobox mostra ultimo .item usado

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
guabiru33
Novato
Novato


Registrado: Quarta-Feira, 6 de Dezembro de 2017
Mensagens: 10

MensagemEnviada: Qui Dez 07, 2017 8:17 pm    Assunto: [Dúvida] Combobox mostra ultimo .item usado Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
lokasso
Aprendiz
Aprendiz


Registrado: Terça-Feira, 11 de Abril de 2017
Mensagens: 174

MensagemEnviada: Sex Dez 08, 2017 5:05 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
guabiru33
Novato
Novato


Registrado: Quarta-Feira, 6 de Dezembro de 2017
Mensagens: 10

MensagemEnviada: Sex Dez 08, 2017 12:52 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
lokasso
Aprendiz
Aprendiz


Registrado: Terça-Feira, 11 de Abril de 2017
Mensagens: 174

MensagemEnviada: Sex Dez 08, 2017 3:36 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB