logotipo Blog Giovani Da Cruz
Delphi

Como Preencher um ComboBox em uma Célula do CxGrid no Delphi

3 min de leitura 175 visualizações

O componente TcxGrid da biblioteca DevExpress é amplamente utilizado no Delphi para criar grids com grande flexibilidade e personalização. Um dos recursos mais úteis é a possibilidade de exibir um ComboBox diretamente dentro de uma célula da grade. Neste post, vamos aprender a configurar e preencher um ComboBox dentro de uma coluna do CxGrid, bem como atualizá-lo conforme a navegação entre os registros.

 

Configurando a Coluna com ComboBox

Para criar uma coluna no CxGrid que contenha um ComboBox, siga os passos a seguir:

  1. Adicionar a Coluna ao Grid: No seu formulário Delphi, adicione uma coluna ao componente TcxGridDBTableView.
  2. Configurar o Tipo da Coluna: No Inspetor de Objetos, defina a propriedade PropertiesClassName da coluna como TcxComboBoxProperties.
  3. Preencher o ComboBox com Itens: No evento FormCreate ou em outro local apropriado, preencha os itens da seguinte forma:
procedure TForm1.FormCreate(Sender: TObject);
var
  ComboBoxProps: TcxComboBoxProperties;
begin
  // Recupera a coluna pelo nome
  with cxGrid1DBTableView1.GetColumnByFieldName('NomeDaColuna') do
  begin
    if Properties is TcxComboBoxProperties then
    begin
      ComboBoxProps := TcxComboBoxProperties(Properties);
      ComboBoxProps.Items.Add('Opção 1');
      ComboBoxProps.Items.Add('Opção 2');
      ComboBoxProps.Items.Add('Opção 3');
      ComboBoxProps.DropDownListStyle := lsFixedList;
    end;
  end;
end;

 

Atualizando o ComboBox Durante a Navegação

Para que os itens do ComboBox mudem conforme a navegação entre os registros, utilizamos o evento OnFocusedRecordChanged da TcxGridDBTableView.

 

Exemplo de Código para Atualização

procedure TForm1.cxGrid1DBTableView1FocusedRecordChanged(Sender: TcxCustomGridTableView;
  APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
  ComboBoxProps: TcxComboBoxProperties;
  CurrentValue: string;
begin
  // Recupera a coluna pelo nome
  with TcxGridDBColumn(cxGrid1DBTableView1.GetColumnByFieldName('NomeDaColuna')) do
  begin
    if Properties is TcxComboBoxProperties then
    begin
      ComboBoxProps := TcxComboBoxProperties(Properties);
      ComboBoxProps.Items.Clear;

      // Atualiza os itens conforme o valor atual
      CurrentValue := AFocusedRecord.Values[Index];
      if CurrentValue = 'Categoria 1' then
      begin
        ComboBoxProps.Items.Add('Item A1');
        ComboBoxProps.Items.Add('Item A2');
        ComboBoxProps.Items.Add('Item A3');
      end
      else if CurrentValue = 'Categoria 2' then
      begin
        ComboBoxProps.Items.Add('Item B1');
        ComboBoxProps.Items.Add('Item B2');
        ComboBoxProps.Items.Add('Item B3');
      end;
    end;
  end;
end;

 

Considerações Finais

Preencher um ComboBox dentro de uma coluna do CxGrid em Delphi é uma tarefa simples, mas que exige atenção aos detalhes na configuração das propriedades. A possibilidade de atualizar os itens conforme a navegação oferece uma experiência mais dinâmica e interativa ao usuário. Experimente adaptar os exemplos às suas necessidades e aproveite ao máximo o poder do DevExpress no Delphi!

Se gostou deste post ou tem dúvidas, deixe seu comentário! 😊

 

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue desenvolvendo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até o próximo post. Valeu! 👋📖

 

 

#Delphi #DevExpress #CxGrid #ComboBox

#ProgramacaoDelphi #Desenvolvimento #VCL

#InterfaceDinamica #GridAvancado #DelphiTips

#GiovaniDaCruz

 

 

2 comentários

Deixe um comentário

Seu e-mail não será publicado.