Fórum DBComboBox #371157

10/06/2009

0

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

Responder

Posts

10/06/2009

Aroldo Zanela

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



Responder

Gostei + 0

10/06/2009

Danielrsanches

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 !!


Responder

Gostei + 0

11/06/2009

Marco Salles

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;



Responder

Gostei + 0

11/06/2009

Danielrsanches

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 !!


Responder

Gostei + 0

11/06/2009

Marco Salles

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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar