Array
(
)

Como atribuir valor de uma variável a um DBLookupComboBox?

Spiritwwwalker
   - 24 fev 2006

Prezados colegas:

É possível atribuir o valor de uma variável (seja ela numérica, seja uma string) para um DBLookupComboBox? Ou que o componente em questão receba o valor de uma determinada coluna de um DBGrid? O inverso é fácil, mas até o momento não consegui encontrar nada a respeito... Agradeço desde já a atenção dispensada.


Edilcimar
   - 24 fev 2006

o dblookupcombobox serve apenas para ´olhar´ o que está em um bd, vc não pode fornecer-lhe um valor de uma variável, o que pode fazer é pegar o valor dde um campo da tabela e jogar no dblookupcombobox e também a uma variável


Paullsoftware
   - 24 fev 2006

pq ao invés de usar dblookupcombobox você não usa ComboBox, é bem mais simples você jogar os dados nele e depois tratar o valor selecionado na lista...


Spiritwwwalker
   - 24 fev 2006

Prezado Edilcimar:

Percebo que não há dificuldade em atribuir um valor ESPECÍFICO para um DBLookupComboBox, utilizando um comando como o abaixo:

DBLookupComboBox1.KeyValue := ´item desejado´

Mas gostaria de fazer o mesmo com uma opção ALEATÓRIA selecionada pelo usuário, a partir de um outro componente como, por exemplo, um DBGrid. Algo assim:

DBLookupComboBox1.KeyValue := DBGrid1.Fields[1].AsString
ou
DBLookupComboBox1.KeyValue := DBGrid1.Fields[1].AsVariant
ou
DBLookupComboBox1.KeyValue := VarToStr(DBGrid1.Fields[1].AsVariant)
ou
DBLookupComboBox1.KeyValue := MinhaVariavel


Contudo, as opções acima estão gerando o seguinte erro: ´Invalid variant type conversion´. Nota: todos os valores que desejo atribuir ao componente são registros ´nativos´ da tabela da qual ele está associado. A dúvida: é mesmo impossível atribuir um valor para um DBLookupComboBox dessa forma ou não estou conseguindo converte-lo para um tipo de dados aceito por ele?





Prezado Paull:

Efetuei testes com ComboBoxes e DBComboBoxes tão logo constatei o problema acima descrito. Aparentemente, eles não mais ´flexíveis´ nessa peculiaridade. Adoraria poder substituir meus DBLookupComboBoxes por qualquer um dos dois mas... Todos os componentes dos meus formulários possuem as propriedades Ctl3D = False e Height = 19. Já tentou alterar tais propriedades em Combos e DBCombos ultimamente? Ambos não aceitam altura inferior a 21 (aliás, nem superior). E a Ctl3D, mesmo atribuindo False, é solenemente ignorada. Estranhamente, DBLookupComboBoxes não padecem desses problemas... Um colega mais experiente em Delphi disse que isso decorre da versão do Windows instalada na estação de trabalho. Pode ser. Mas em VBA não enfrentava tais aberrações. A adoção de qualquer um dos componentes implicaria na alteração do layout de todos os meus formulários, visto que os demais componentes teriam que ficar parecidos com aqueles, e não o contrário. Uma tarefa não somente trabalhosa: o resultado estético também seria duvidoso e, ao menos para mim, a aparência dos sistemas é tão importante quanto a robustez e a exatidão do código empregado. Tenho um amigo que entende muitíssimo de programação, mas a verdade é que o visual dos programas dele é um lixo (risos). É claro que se não tiver outra opção, acabarei sendo obrigado a fazer exatamente isso. De qualquer forma, agradeço, mais uma vez, a sua sugestão.