Combobox em um DBGrid

29/11/2005

0

Pessoal, eu estou tentando colocar um Combobox em um DBGrid, até aí tudo bem, eu tenho um material aqui explicando qual é o procedimento, mais só que é o seguinte, o valor que será mostrado no combobox, não tem um campo especifico na tabela, esse valor será inserido atráves de uma linha de comando que terei que digitar, e no tutorial que tenho, ele fala que tenho que vincular algum campo da tabela para que o valor seja mostrado no Combobox que está no DBGrid. Gostaria de saber sem tem como eu colocar o Combobox no DBGrid sem que ele esteja vinculado a algum campo da minha tabela.

Obrigado


Leandrosl

Leandrosl

Responder

Posts

29/11/2005

Jairroberto

Olá, amigo!

Use a propriedade PickList da coluna do DBGrid para informar as opções desejadas, mantendo a propriedade ButtonStyle dessa mesma coluna com o valor dbsAuto.

Um abraço,
Jair


Responder

29/11/2005

Leandrosl

jair

Coloquei uma linha de comando dentro do PickList, mais ele não me mostro nenhum resultado e também não deu erro,, segue abaixo o codigo que usei:

SELECT MAX(Dataveiculacao) FROM veiculacao
WHERE CodigoVeiculacao=´ DBEditCodveiculacao´

Obrigado


Responder

30/11/2005

Jairroberto

Olá, Leandrosl!

A propriedade PickList é um objeto do tipo TStrings onde você pode descrever as opções que estarão disponíveis para o usuário selecionar. Ela não processa comandos SQL.

Neste caso, você deve usar um Query derivado de DataSet para executar o comando SQL e alimentar o PickList com o resultado. Veja um exemplo imaginando que você utilize DBExpress:

procedure AlimentarDataVeiculacao(const CodigoVeiculacao: string);
var
  DataSet: TSQLQuery;
begin
  DataSet := TSQLQuery.Create(Self);
  try
    DataSet.SQLConnection := SeuObjetoSQLConnection;
    DataSet.SQL.Text := Format(´SELECT MAX(Dataveiculacao) FROM veiculacao WHERE CodigoVeiculacao = ¬s´, [QuotedStr(CodigoVeiculacao)]);
    DataSet.Open;
    if not DataSet.IsEmpty then
      DBGrid1.Columns[1].PickList.Text := DataSet.Fields[0].DisplayText
    else
      DBGrid1.Columns[1].PickList.Text := ´´;
    DataSet.Close;
  finally
    DataSet.Free;
  end;
end;


O exemplo considera que:
1) SeuObjetoSQLConnection é um objeto do tipo TSQLConnection utilizado para conexão com o banco de dados via DBExpress;
2) CodigoVeiculacao é um campo do tipo string;
3) DBGrid1 é um objeto do tipo TDBGrid que contém a coluna onde você quer colocar o ComboBox
4) A segunda coluna do DBGrid1 (Columns[1]) é a coluna onde será apresentado o ComboBox com o registro retornado pelo DataSet.

Você pode disparar esse procedimento a partir do evento OnExit do DBEditCodveiculacao, por exemplo:

procedure DBEditCodveiculacaoExit(Sender: TObject);
begin
  AlimentarDataVeiculacao(DBEditCodveiculacao.Text);
end;



Um abraço,
Jair


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar