TcxGrid como ListBox (parte 1/2)
Por que alguém reduziria um componente poderoso de grid como o QuantumGrid da DevExpress a um simples ListBox? Por várias razões, mas principalmente por mesclar alguns recursos avançados do TcxGrid com a simplicidade de um componente universalmente conhecido pelos usuários.
Pra começar, você pode usá-lo para selecionar registros em um dataset através de um campo qualquer. Basta configurar algumas propriedades do TcxGridDBTableView para obter o “look and feel’ de um autêntico TListBox data-aware.
Pra começar, adicione a coluna para o campo que você quer selecionar. Pode também ser mais de uma coluna, mas aí já sai um pouquinho do padrão comum de um ListBox. Em seguida, ajuste as propriedades do GridView como indicado abaixo.
Em OptionsView ocultamos o Header, o GroupByBox e as linhas de grid. ColumnAutoWidth garante que a coluna ocupe perfeitamente a largura interna do grid. CellEndEllipsis dá um toque sofisticado, mostrando reticências (”…”) no fim de um item que não caiba totalmente na área cliente.
OptionsView.CellEndEllipsis = True OptionsView.ColumnAutoWidth = True OptionsView.GridLines = glNone OptionsView.GroupByBox = False OptionsView.Header = False
Em OptionsSelection, precisamos desabilitar CellSelect, para ter a barra de seleção esperada.
OptionsSelection.CellSelect = False
Em OptionsBehavior, temos alguns extras interessantes. CellHints mostra automaticamente hints popup quando o mouse para sobre uma linha cujo texto que não cabe inteiramente na largura. IncSearch ativa a busca incremental pelo teclado. PullFocusing produz o efeito de rolar as linhas quando o mouse é clicado sobre uma linha e arrastado enquanto é mantido pressionado.
OptionsBehavior.CellHints = True OptionsBehavior.IncSearch = True OptionsBehavior.PullFocusing = True
Finalmente, em OptionsData desabilitamos a edição, para ter um grid read-only.
OptionsData.Deleting = False OptionsData.Editing = False OptionsData.Inserting = False
Pronto. Com essas configurações é possível selecionar um registro simplesmente mostrando o “list box” para o usuário escolher pelo nome, com direito a busca incremental, reticências e hints para textos longos, além da barra de rolagem horizontal, que por default um ListBox não tem.
Na próxima parte deste artigo, vou mostrar como usar um TcxGrid para editar o conteúdo de um objeto TStrings qualquer usando um “CustomProvider”.
Comments
3 Responses to “TcxGrid como ListBox (parte 1/2)”
Deixe uma Resposta

Muito legal.
Fiz algo parecido estes dias, mas para fazer um data-aware CheckComboBox.
Utilizei um cxPopupEdit utilizando um cxGrid como controle e configurando estas mesmas opções, ficou bem legal.
Qual versoes do delphi essa tcxgrid funciona? ela tem fontes? qual site onde se localiza?
http://www.devexpress.com/Products/VCL/