Fórum Sobre Seleção no DBGrid... #298221
03/10/2005
0
Bruno Belchior
Curtir tópico
+ 0Posts
03/10/2005
Michael
Vc pode simular isso no DBGrid do Delphi. Faça assim: crie um campo calculado no dataset que alimenta a grid, do tipo Boolean. Então, no duplo clique de uma linha da DBGrid, vc muda o valor deste campo, para false ou true. E, no evento OnDrawColumn da grade vc pinta a imagem que quiser: uma bolinha, uma seta, etc.
A única consideração é que, ao trabalhar sobre os registros selecionados, vc terá que verificar quais campos estão com o valor true.
[]´s
Gostei + 0
03/10/2005
Bruno Belchior
Gostei + 0
03/10/2005
Yallebr
Mas com campo calculado isso não funcionaria, pois a cada vez q mudar a linha o campo calculado perde os valores e recalcula, ai não será possível fazer isso com campo calculado. Ou estou errado, vc já implementou esse sua ideia?
obrigado
Yalle
Gostei + 0
04/10/2005
Michael
Com um campo calculado não, mas com [b:1878494d2d]InternalCalc[/b:1878494d2d] sim. ;-)
[]´s
Gostei + 0
04/10/2005
Firekiller
ImageList1.Draw( DBGrdi1.Canvas, 0, Rect.Top, 0 ), que seria
ImageList.Draw( Canvas, Coluna, Linha, IndiceImagem).
Apenas uma dicazinha.... defina as propriedades height e width da grid como 11 antes de adicionar as imagens na lista.
Espero que te ajude.
Gostei + 0
07/10/2005
Diogoalles
a respeito desse internalCalc, eu poderia utilizar ele na seguinte situação?
ou como se utiliza?
[i:cb0fdba6fa]Você tem um TAble com um Datasource, este ligado ao DBGrid. Aí você cria um campo calculado ´check´ do tipo boolean;
Ai coloquei no Oncalcfields da tabela para check = false. Então todos os registros não estão checados.
Assim pensei numa rotina no DBGrid.OnCellClick. Se for igual a coluna ´check´ então, Table1.Check := not(Table1.Check).
Só que não funciona porque a tabela não está em edição.
Então o unico problema nessa minha idéia é saber com calcular o valor deste campo só para o registro que cliquei, fazendo ele receber conforme acima. [/i:cb0fdba6fa]
[url]http://forum.clubedelphi.net/viewtopic.php?p=225684#225684[/url]
obrigado
Gostei + 0
07/10/2005
Firekiller
//Supondo que o campo calculado que vc criou se chame Check
Table1Check.Value := ( vetor[ linhaCorrespondente ] = 1);
Onde, se o valor for 1, o campo será setado como verdadeiro, e se for diferente disso, o campo será falso. Então a idéia seria, no click do mouse, o valor de vetor[ linhaCorrespondente ] seria alterado, e não diretamente o valor do campo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)