DBComboBox

Delphi

10/06/2009

alguém sabe uma forma de utilizar o DBComboBox desta maneira:

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

Danielrsanches

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

10/06/2009

Colega,

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
Danielrsanches

Danielrsanches

10/06/2009

obrigado pela resposta Aroldo !!

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
Marco Salles

Marco Salles

10/06/2009

para salvar no Banco apenas parte da informação ..

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
Danielrsanches

Danielrsanches

10/06/2009

olá Marco Salles !!!

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
Marco Salles

Marco Salles

10/06/2009

olá Marco Salles !!! Não deu certo... meu campo é varchar(2) ...


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
POSTAR