Como Preencher um ComboBox em uma Célula do CxGrid no Delphi
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:
- Adicionar a Coluna ao Grid: No seu formulário Delphi, adicione uma coluna ao componente
TcxGridDBTableView. - Configurar o Tipo da Coluna: No Inspetor de Objetos, defina a propriedade
PropertiesClassNameda coluna comoTcxComboBoxProperties. - Preencher o ComboBox com Itens: No evento
FormCreateou 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
-
-
Que bom que gostou, Geraldo! 😊 Fico feliz em saber que a explicação foi útil pra você.
-
Obrigado pela informação. Muito bom.