Firemonkey: Ler a propriedade SelectedValue de um combobox ou listbox
Saudações!
Estou utilizando Delphi XE5 e num projeto Firemonkey Desktop não consigo ler a propriedade SelectedValue de um combobox ou listbox.
Para exemplificar criei um projeto simples, utilizando um PrototypeBindSource como fonte de dados, um combobox, um botão e um label, onde via livebindings liguei
o campo ColorsName1 (campo com o texto a ser apresentado) a propriedade Item.text do combobox e o campo AlphaColor1 (campo id a ser retornado) a propriedade Item.LookupData e para que seja retornado o id ao label, liguei a propriedade SelectedValue do combo a propriedade Text do label. Estes relacionamentos pode ser observado na figura abaixo:
[img:descricao=LiveBindings Designer e Formulário em Run Time]http://arquivo.devmedia.com.br/forum/imagem/330322-20140520-130408.jpg[/img]
O Problema é que não consigo ler via código a propriedade SelectedValue do combo box.
O Mais proximo que cheguei foi:
if Assigned(ComboBox1.Selected) then
ShowMessage(IntToStr(Integer(ComboBox1.Selected.Data)));
ou
ShowMessage(ComboBox1.ListItems[ComboBox1.ItemIndex].ItemData.Text);
Mas estão retornando vazio ao invés do id do registro.
Agradeço a quem poder ajudar.
Estou utilizando Delphi XE5 e num projeto Firemonkey Desktop não consigo ler a propriedade SelectedValue de um combobox ou listbox.
Para exemplificar criei um projeto simples, utilizando um PrototypeBindSource como fonte de dados, um combobox, um botão e um label, onde via livebindings liguei
o campo ColorsName1 (campo com o texto a ser apresentado) a propriedade Item.text do combobox e o campo AlphaColor1 (campo id a ser retornado) a propriedade Item.LookupData e para que seja retornado o id ao label, liguei a propriedade SelectedValue do combo a propriedade Text do label. Estes relacionamentos pode ser observado na figura abaixo:
[img:descricao=LiveBindings Designer e Formulário em Run Time]http://arquivo.devmedia.com.br/forum/imagem/330322-20140520-130408.jpg[/img]
O Problema é que não consigo ler via código a propriedade SelectedValue do combo box.
O Mais proximo que cheguei foi:
if Assigned(ComboBox1.Selected) then
ShowMessage(IntToStr(Integer(ComboBox1.Selected.Data)));
ou
ShowMessage(ComboBox1.ListItems[ComboBox1.ItemIndex].ItemData.Text);
Mas estão retornando vazio ao invés do id do registro.
Agradeço a quem poder ajudar.
Tecnolens Ltda
Curtidas 0
Melhor post
éder Brandão
01/09/2014
A forma mais simples de resolver este problema e usar no LiveBinding a propriedade Synch do ListBox e ligar ao (*) asterisco do BindSource. Dessa forma ele ira mover o cursor do DataSet permitindo buscar qualquer valor. Outra solução que encontrei e Ligar o campo chave do DataSet a propriedade LookupData do listbox e então ligar o SelectValue a alguma propriedade Tag de outro componente.
Espero ter ajudado!
Abraço a todos!
Espero ter ajudado!
Abraço a todos!
GOSTEI 1
Mais Respostas
Cauê Nishijima
20/05/2014
Não seria assim :
if Assigned(ComboBox1.Selected) then
ShowMessage(ComboBox1.Selected.Text);
GOSTEI 0
Cauê Nishijima
20/05/2014
Desculpa entendi a pergunta agora, você quer pegar o valor do objeto associado a um índice do ComboBox ou do ListBox....é isso?
Se for, posta o código de como você esta atribuindo os valores ao ComboBox ou ao ListBox
Se for, posta o código de como você esta atribuindo os valores ao ComboBox ou ao ListBox
GOSTEI 0
Tecnolens Ltda
20/05/2014
Obrigado pela atenção!
Preciso ler o ID do registro selecionado, acredito ser da mesma forma para ComboBox ou ListBox. Quando a atribuição dos valores, fiz através do LiveBindings como mostra a figura.
Por exemplo, quando selecionar no combo Mediumvioletred, deve ler o id 4291237253, que corresponde ao ID do item selecionado.
Abraço!
Preciso ler o ID do registro selecionado, acredito ser da mesma forma para ComboBox ou ListBox. Quando a atribuição dos valores, fiz através do LiveBindings como mostra a figura.
Por exemplo, quando selecionar no combo Mediumvioletred, deve ler o id 4291237253, que corresponde ao ID do item selecionado.
Abraço!
GOSTEI 0
Claudia Fuzer
20/05/2014
Boa tarde
Você conseguiu resolver este problema? To enfrentando o mesmo aqui e até agora nada.
Você conseguiu resolver este problema? To enfrentando o mesmo aqui e até agora nada.
GOSTEI 0
Junior Dias
20/05/2014
A forma mais simples de resolver este problema e usar no LiveBinding a propriedade Synch do ListBox e ligar ao (*) asterisco do BindSource. Dessa forma ele ira mover o cursor do DataSet permitindo buscar qualquer valor. Outra solução que encontrei e Ligar o campo chave do DataSet a propriedade LookupData do listbox e então ligar o SelectValue a alguma propriedade Tag de outro componente.
Espero ter ajudado!
Abraço a todos!
Espero ter ajudado!
Abraço a todos!
Bom dia Éder, estou fazendo como você sugeriu, ligando a propriedade Synch do Lisbox ao (*) do BindSource, compilando para windows funciona, porem no android não. Sabe me dizer se muda alguma coisa? Estou usando a propriedade OnItemClick do Lisbox.
GOSTEI 0
Clederson Ferreira
20/05/2014
if ComboBox1.ItemIndex <> -1 then
ShowMessage(ComboBox1.Items[ComboBox1.ItemIndex]);
tenta fazer assim
ShowMessage(ComboBox1.Items[ComboBox1.ItemIndex]);
tenta fazer assim
GOSTEI 0
Flex Ltda
20/05/2014
Dae fera!
Cara tô com o "mesmissimo" problema...como você resolveu isso?
Cara tô com o "mesmissimo" problema...como você resolveu isso?
GOSTEI 0
Alexandre Santos
20/05/2014
procedure TForm1.Button1Click(Sender: TObject);
var
item: String;
begin
{ OBS: se o estilo do ComboBox for csDropDown, o
usuário será capaz de digitar no componente. Se
isso acontecer, o conteúdo do combo deverá ser
obtido usando:
item := ComboBox1.Text;
}
item := ComboBox1.Items[ComboBox1.ItemIndex];
ShowMessage('Você selecionou o ítem ' + item);
end;GOSTEI 0
Alexandre Santos
20/05/2014
Imaginem que tenho uma variável do tipo String de nome: "Texto" e gostaria de pegar o item selecionado num ComboBox e passar a sua propriedade Text para esta variável:
No Firemonkey pode-se fazer assim:
Creio que seja apenas isto... No mais... A partir daqui já da pra ter uma noção de que é preciso acessar a propriedade "Names" dos itens e pegar o nome que estiver no índice....
No Firemonkey pode-se fazer assim:
Texto := (cbDB.Items.Names[cbDB.ItemIndex]);
Creio que seja apenas isto... No mais... A partir daqui já da pra ter uma noção de que é preciso acessar a propriedade "Names" dos itens e pegar o nome que estiver no índice....
GOSTEI 0
Antonio Junior
20/05/2014
A forma mais simples de resolver este problema e usar no LiveBinding a propriedade Synch do ListBox e ligar ao (*) asterisco do BindSource. Dessa forma ele ira mover o cursor do DataSet permitindo buscar qualquer valor. Outra solução que encontrei e Ligar o campo chave do DataSet a propriedade LookupData do listbox e então ligar o SelectValue a alguma propriedade Tag de outro componente.
Espero ter ajudado!
Abraço a todos!
Espero ter ajudado!
Abraço a todos!
Bom dia. Eu estou passando pela mesma situação e segui o seu exemplo. liguei a propriedade Synch do ListBox e ligar ao (*) asterisco do BindSource, e agora como faço para usar?
Estou usando combobox e quando selecionar algum item quero obter o id desse item, como fazer isso? Fico no aguardo. Obrigado
GOSTEI 0