Fórum cxGrid repete dados do primeiro registro do grupo nas linhas de cabeçalho #472978

14/03/2014

0

Olá amigos.

Sou novo no Delphi (na verdade comecei a trabalhar na empresa sem saber absolutamente nada) e venho me virando a um tempo.

Recentemente surgiu uma questão que mesmo os funcionários que estão aqui a mais tempo não estão compreendendo.

Vou tentar explicar o melhor que meu conhecimento permite...

No sistema tenho uma tcxGrid e um tClientSet que vou chamar de 'G' e 'C' respectivamente.

Nesta Grid existe um agrupamento por colunas, de forma que ao escolher uma coluna toda a grid é remontada agrupando os registros em grupos daqueles que possuem valores iguais da coluna.

Nesta grid também existe uma atualização automática de N em N segundos.

Meu trabalho começou quando um cliente reclamou que quando atualizava, a linha selecionada perdia o foco.

"Resolvi" a questão com Bookmark. Ou seja, antes da atualização usei o C.getBookmark() e depois da atualização usei o C.GotoBookmark().

O problema foi resolvido, mas com um pequeno e incomodo detalhe...

Se eu seleciono o primeiro registro do agrupamento, o GoToBookmark() seleciona não este registro e sim a primeira linha de cabeçalho que seja apenas daquele grupo, mas este comportamento não ocorre se eu selecionar qualquer outro registro que não seja o primeiro do grupo...

Não se se consegui me fazer entender, então vou colocar um exemplo...

Exemplo:

Cabeçalho Agrupamento Coluna1 (Valor X)
Cabeçalho Agrupamento Coluna2 (Valor Y)
Cabeçalho Agrupamento Coluna3
linha1
linha2
linha3
Cabeçalho Agrupamento Coluna2 (Valor K)
Cabeçalho Agrupamento Coluna3 (Valor N)
linha4
linha5
linha6
linha7

Ao selecionar a linha 2, 3, 5, 6 e 7 o comportamento do GoToBookmark() funciona OK.

Porém na linha1 ele aponta para "Cabeçalho Agrupamento Coluna1 (Valor X)" e na linha4 vai para "Cabeçalho Agrupamento Coluna2 (Valor K)".

Uma coisa que reparei debugando o código o melhor que meu conhecimento permitiu foi que todas as linhas de cabeçalho possuem OS MESMOS DADOS da primeira linha do grupo. Tanto as informações de coluna (que não são exibidas, claro) como também o RowId, RecordId e RecordIndex, acredito que seja isso que esta causando a confusão...

Também reparei que ao dar dois cliques sobre os cabeçalhos, é aberta a tela de edição do primeiro registro... ou seja, ele realmente esta se comportando como se fosse ela...

Minha pergunta é... existe alguma opção do TClientSet ou do tcxGrid ou do tClientSet que deixe este comportamento de o cabeçalho 'copiar' os dados da primeira linha? Seria um Bug do Delphi (que aliás é o 7)? Se é um Bug ele foi corrigido em outra versão? Dicas?

Agradeço deis de já qualquer ajuda e peço desculpas se me atrapalhei para explicar (muita coisa ainda é confusa para mim) bem como a falta de códigos afinal é propriedade da empresa e deixaram claro que não podia copiar...

Novamente, muito obrigado!
Rafael Dias

Rafael Dias

Responder

Posts

25/03/2014

Paulo Pinto

Meio complicada sua explicação hehehe

eu utilizo o cxgrid e funciona perfeitamente..
acho que está faltando vc colocar um index no seu clientdataset ou dizer qual o index na propriedade datacontroller.keyfiledNames do cxgrid

outra coisa.. se vc perguntar no forum do devexpress.. lá tem respostas mais focadas..
mesmo que vc nao tenha licença eles respondem a primeira vez hehehe

foi assim aqui na empresa.. depois tivemos que comprar para tirar mais dúvidas com o suporte deles.

espero ter ajudado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar