DropDownList no PickList do DBGrid

Delphi

20/10/2010

Tenho uma coluna no dbgrid que possui a propriedade picklist com alguns valores. Como faço para que o usuario só possa escolher um valor que esteja no picklist, assim como a propriedade dropdownlist do TComboBox.

Ex.: Coluna: Letras

Picklist:
A
B
C
D

Fazer com que o usuario so consiga selecionar a letra A ou B, ou C ou D.

OBrigado!
Rafael Pimenta

Rafael Pimenta

Curtidas 1

Melhor post

Alvaro Vieira

Alvaro Vieira

18/11/2011

Boa noite.

Existem duas outras maneiras de forçar o uso de um elemento da lista.
Para os dois exemplos, suponho que você esteja querendo controlar a primeira coluna do dbGrid.

1a. Opção:
Coloque o cód. abaixo no evento OnKeyPress da DBGrid...

if dbGrid1.SelectedIndex = 0 then
if ((Key #40) and (key #38) and (Key #9)) then
begin
Sysutils.Abort;
end;

O problema com o código acima é que se sua lista for muito grande, o usuário não poderá digitar nenhum valor, mesmo correto, ou seja, sua única opção é a de clicar numa das opções. Então vamos a segunda maneira.

2a. Opção:
Coloque o cód. abaixo no evento OnValidate do campo que você quer controlar do ClientDataSet....

if dbGrid1.Columns[0].PickList.IndexOf(Sender.Value) = -1 then
Sysutils.Abort;

Espero ter ajudado, abraço.

GOSTEI 1

Mais Respostas

Leonardo Xavier

Leonardo Xavier

20/10/2010

Porque você nao utiliza o DBCtrlgrid?
GOSTEI 0
Rafael Pimenta

Rafael Pimenta

20/10/2010

Não sei utilizar esse componente, na verdade primeira vez que ouço falar nele!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

20/10/2010

é muito facil.

Selecione-o na guia Data controle o penultimo item (se você nao tive nenhum oputro componente custom nesta guia), ao selecioná-lo coloque o em qualquer lugar de seu form. Após coloca-lo em seu form voc6e percebera que ele estara em branco. Vamos lá:

Passo1: Os campos do DB grid na barra title: você nao terá esta opção no DBCtrlgrid, mas terá algo bem melhor... mas antes de ir para este passo Selecione o DBCtrlgrid e na propriedade DataSouce coloque o seu dataset da tabela que você queira mostrar os dados. bom ao fazer isso estaremos prontos para montar seu DBCtrlGrid

passo 2. Coloque para identificar os campos labels (normais) e para puxar os dados coloque os DBlabels, dentro do DBCtrlGrid e monte o layout deacordo com o que você deseja coloque um Combobox com as opções que você deseja nele tambem. Se tiver duvidas monto um tutorial para você. Abraços.
GOSTEI 0
POSTAR