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)”

  1. Fábio Gomes on May 26th, 2008 3:41 pm

    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.

  2. Marcio on July 15th, 2008 12:03 pm

    Qual versoes do delphi essa tcxgrid funciona? ela tem fontes? qual site onde se localiza?

  3. Daniel Maltarolli on July 15th, 2008 2:53 pm

Deixe uma Resposta




XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">