ComboBox.Items.IndexOf receber string

Delphi

24/05/2014

Galera como faço para aparecer o nome de uma string no meu ComboBox

tenho um form que faz uma pesquisa pelo cep e armazena o
nome da rua, cidade e estado
o problema é que meu comboBox esta no stilo
csDropDownList e no modo convencioanal não da
tenho que fazer assim
ComboBo.text:=' ';

o código esta asssim

estado:= lodados.Values[''UF'']; declarei a variavel mais nda de funcionar
cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOf (estado); desse jeito não aparece nada

e esse e o código completo

application.ProcessMessages;
//Cria-se uma string List
lodados:=TStringList.Create;
//Nesta linha busca-se a informação através da url indicada
//StrinReplace eh utilizada para substituir os caracteres & por CR
//UrlDecode eh para eliminar caracteres de código html para acentos
//&formato=query_string ou xml javascript
lodados.text:=stringreplace(idhttp1.URL.URLDecode(idhttp1.Get(''http://republicavirtual.com.br/web_cep.php?cep=''+mask_cep.text+''&formato=query_string'')),''&'',#13#10,[rfreplaceAll]);
//lodados vira uma matriz e fazemos o acesso aos dados...
edt_endereco.text:=lodados.Values[''TIPO_LOGRADOURO'']+'' ''+lodados.Values[''LOGRADOURO''];
edt_bairro.text:=lodados.Values[''BAIRRO''];
edt_cidade.text:=lodados.Values[''CIDADE''];
estado:= lodados.Values[''UF''];
cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOf (estado);

Jose Silva

Jose Silva

Curtidas 0

Respostas

Ricardo Araujo

Ricardo Araujo

24/05/2014

Bom dia Colega,
Fiz exemplo bem simples, acho que vai ajuda você.

Segue o código abaixo;

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Estado : string;
posicao : Integer;
begin
Estado := 'Tocantins';

posicao := ComboBox1.Items.IndexOf(Estado);

ComboBox1.ItemIndex := posicao;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Rio de Janeiro');
ComboBox1.Items.Add('São paulo');
ComboBox1.Items.Add('Bahia');
ComboBox1.Items.Add('Tocantins' );
ComboBox1.Items.Add('Rio grande do Sul');
end;

end.

Este exemplo é bem simples e você pode adaptar na sua aplicação, o exemplo está funcionando blz.

Qualquer coisa me envie um feedback.
GOSTEI 0
Jose Silva

Jose Silva

24/05/2014

rbbarreto obrigado pela ajuda vi o seu exemplo
e ele funcionaria perfeitamente se eu tivesse um
base de de dados local o problema é que eu busca essas informações
da internet do e armazeno o valor em Edit pelo que percebi
e tipo text e o meu combobox não aceita


edt_cidade.text:=lodados.Values['CIDADE']; // aqui vai de boa
cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOfName(lodados.Values['UF']); mas aqui
não retorna nada
já tentei jogar em uma variável mas nada tambem
lembrando que meu combobox esta com estilo csOwnerDrawVariable
que é para limitar a quantidade de siglas
que o usuário ver

desde já obrigado pela atenção
GOSTEI 0
Carlos Bernardo

Carlos Bernardo

24/05/2014

Tenta ver qual o valor que está a variável estado...

Showmessage(estado);

o problema pode estar ai...

GOSTEI 0
Nelson Santos

Nelson Santos

24/05/2014

ganhe dinheiro com softwares 3D com Delphi 7
http://www.3dsistemas.com.br
GOSTEI 0
Jose Silva

Jose Silva

24/05/2014

Exatamamete
veja quando eu mudo o style da combobox para csDropDown
funciona blz
mas quando mudo o style para csOwnerDrawVariable
não recebe nada
o valor que a variável estado recebe esta OK
ja tentei

estado:=lodados.Values['UF'];
cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOfName(estado);
e tambem
estado:=lodados.Values['UF'];
cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOfName(lodados.Values['UF']);

mas nada
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

24/05/2014

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
Edit1: TEdit;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
var
posicao : Integer;
begin

// cbbx_estado.ItemIndex := cbbx_estado.Items.IndexOfName(lodados.Values['UF']); mas aqui

// para isto funcionar terá que pegar o valor passado no edt_cidade
// qualquer coisa me envio o seu exemplo que vejo porque esta dando errado.

posicao := ComboBox1.Items.IndexOf(Edit1.Text);
ComboBox1.ItemIndex := posicao;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
// neste edit1 vamos simular que estou recebendo conteudo na internet.
// que seria : edt_cidade.text:=lodados.Values['CIDADE'];

Edit1.Text := 'SP';
end;

end.
GOSTEI 0
POSTAR