Documentar a interface do usuário usando QuantumGrid (TCXGrid) do Developer Express

StackOverflow https://stackoverflow.com/questions/1928321

  •  20-09-2019
  •  | 
  •  

Pergunta

Preciso gerar uma interface do usuário para inserir um documento de vendas (por exemplo, fatura). Estou tentando usar componentes do "Developer Express" especificamente o componente QuantumGrid (TCXGrid). Vi as demos dos componentes de mestrado e pesquisar no centro de suporte do Devexpress, mas nenhum me ajudou porque todos usam 2 grades para lidar com a relação mestre-detail e editar vários registros de uma só vez.

Eu só preciso editar um registro (documento) por vez e usar um par de componentes de dados do DataWare (por exemplo, TDBedit) no cabeçalho e uma grade para lidar com os detalhes.

algo assim

alt text

Onde posso encontrar um exemplo básico de uso desses componentes dessa maneira?

Foi útil?

Solução

As propriedades mestre/criança no QuantumGrid são projetadas principalmente para aninhar vários itens na grade. Se você configurar o relacionamento nos componentes de dados, poderá simplesmente conectar os controles à fonte de dados correta e tudo funcionará.

Portanto, se você tiver dois conjuntos de dados e fatura. O DataSource da Fatura Master é o DataSource do cliente. Em seguida, em seus controles de edição, você aponta para a fonte de dados do cliente e aponta a grade para a fatura do painel.

Se você pensar sobre o que o relacionamento mestre/detalhe está fazendo isso realmente apenas filtra os registros no conjunto de dados detalhados para corresponder ao registro atual no conjunto de dados mestre. Os controles de edição individuais sempre exibirão o registro "atual" no conjunto de dados aos quais estão conectados. As grades mostrarão todos os registros visíveis no conjunto de dados aos quais estão conectados.

Eu tenho uma tendência a não usar relacionamentos de mestre/detalhe em uma forma de edição como você mostra aqui. Suponho que exista uma tela diferente para escolher a fatura para editar. Normalmente, crio uma cópia dos conjuntos de dados necessários apenas com os registros necessários para esta edição. Se estou editando uma fatura existente, copio os registros atuais. Se for uma nova fatura, posso começar com um conjunto de registros vazio. É mais trabalho - tenho algumas funções genéricas da biblioteca que copiarão uma estrutura de dados e copiarão um ou mais registros nesse conjunto de dados. Dependendo da sua configuração, você também pode exigir seu banco de dados para obter os registros em que está interessado. Obviamente, isso não deve ser feito em todos os casos. Outro problema com essa abordagem é que você precisa de uma maneira de atualizar quaisquer outros conjuntos de dados que possam ter com esses dados - ou seja, sua tela de pesquisa principal.

No entanto, uma vez que chego na tela de edição, acho que torna as coisas Eazer. Agora não preciso me preocupar com o relacionamento mestre de detalhes no nível superior. Se a fatura tiver relacionamentos internos de mestre/detalhe, você poderá lidar com eles, mas você sabe que os conjuntos de dados têm apenas os dados para esta fatura - nem tudo no banco de dados.

No caso do seu formulário, se você limitar os dados nos conjuntos de dados, poderá conectar tudo diretamente e ele deve funcionar como você espera. Você teria apenas um registro no conjunto de dados do cliente e a fatura teria apenas os registros para esta fatura.

Outras dicas

Eu acho que você precisará cuidar das relações mestre-detalhe em seus componentes do ClientDataSource. A grade seguirá essa relação.

Por que você não pergunta isso em support@devexpress.com?

A razão pela qual tenho uma assinatura VCL é, além da qualidade dos componentes, é claro, porque eles têm um ótimo site de suporte e funcionários?

Lá você o pergunta diretamente às pessoas que escreveram as coisas e provavelmente estão felizes em fornecer a você um programa de amostra (pelo menos recebi muitas amostras ao longo dos anos).

A premissa é a mesma que qualquer outro relacionamento mestre-detalhado, independentemente dos componentes. Você precisará configurar o mestre-detalhado no nível do conjunto de dados para realizar o que deseja.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top