Fórum DBComboBox #371157
10/06/2009
0
tenho um dbcombobox com os seguintes itens ...
1. Item um
2. Item dois
3. Item tres
porém, gostaria que ele retornasse para o campo apenas os números por exemplo ...(1, 2 ou 3) ...
resumindo .. preciso que ele exiba as informações com descrições, porém salve no campo apenas parte da informação ..
abraços !!!
Danielrsanches
Curtir tópico
+ 0Posts
10/06/2009
Aroldo Zanela
Creio que um campo Char(1), receberá apenas o primeiro dígito, mas não estou seguro. Faça um teste.
Outra alternativa, com ComboBox ou dbComboBox é utilizar o manipulador de evento OnChange, conforme exemplo:
ShowMessage((Sender as TComboBox).Text[1]); // Pegar a primeira posição
Gostei + 0
10/06/2009
Danielrsanches
mas isso não funciona, ou funciona em partes ... eu até consigo pegar esse valor (parcial) e colocá-lo no campo, porém na hora de exibir a informação ele não exibe ...
mas estou fazendo de outra forma mesmo ... com o DBComboBox será impossível fazer isso .. não adianta querer fazer milagres com ele ...rsrsrs
mesmo assim, muito obrigado !!!
abraços !!
Gostei + 0
11/06/2009
Marco Salles
Defina o campo como Char
para exibar as informações com descrições manipule o evento
OnGetText do Tfield
procedure TSeuForm.SuDataSetSeuFieldGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if trim(sender.AsString) <> ´´ then case sender.AsString[1] of ´1´:text:=´1. Item um´; ´2´:text:=´2. Item dois´; ´3´:text:=´3. Item tres´; end;
Gostei + 0
11/06/2009
Danielrsanches
Não deu certo...
meu campo é varchar(2) ...
com o DBComboBox, ele camptura o texto real que está incluso nos Itens, porém, captura os 2 primeiros caracteres ... resumindo ...
se eu deixar os items assim:
_ = espaço em branco
1_- Item um
2_- Item dois
3_- Item tres
assim o campo captura apenas os 2 primeiros caracteres, conforme disse nosso amigo Aroldo Zanela ...
mesmo assim muito obrigado pela idéia !!
abraços !!
Gostei + 0
11/06/2009
Marco Salles
DA CERTO SIM ...
Mude o campo para Varchar para varchar(1) , mas se vc quer manter este campo codifique [b:34ed9acd80]simultaneamente[/b:34ed9acd80] o evento OnSetText
procedure TSeuForm.SuDataSetSeuFieldGetText(Sender: TField; const Text: String); begin case text[1] of ´1´:sender.AsString:=´1´; ´2´:sender.AsString:=´2´; ´3´:sender.AsString:=´3´; end; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)