Thalles63 Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 Bom dia galera, tudo bem?então, to com um probleminha aqui que ta me deixando careca já.sei que é possível fazer isso pois tenho um programa aqui que faz issoe queria implementar na minha aplicação.o problema é o seguintetenho 2 dbgridsquero passar os registros de um para outroaté aí sem problemasjá achei a solução para issoo problema esta quando vou selecionar os registros1º a tecla "shift" não funciona, somente o "ctrl" funciona para multipla seleção2º quando vou clicando na barra de scroll para descer pela tabela (ou pelo mouse mesmo com o scroll) ele vai selecionando uma linha, eu não queria que fizesse isso, queria que só navegasse mesmo, não selecionasse uma linha na navegaçãose eu quiser selecionar daí eu clico na linha ;)3º como eu disse o scroll do mouse está me atrapalhando, teria como ele não navegar no dbgrid? acho que tinha até mais coisamas agora eu já esquecise alguém tiver alguma soluçaozinha pra algum dos problemasjá agradeço antecipadamenteObrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 bom.. só pra atualizarjá desabilitei o scroll, já fiz PARCIALMENTE o shift funcionarainda ta meio bugadose alguém tiver uma soluçao melhorzinha eu aceitoporemainda tenho o problema de quando eu desço pela barra vertical o dbgridvem uma linha me acompanhandoeu ano quero essa linha me acompanhandoou que pelo menos não fique selecionadaalguém saberia o q fazer? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 ainda tenho o problema de quando eu desço pela barra vertical o dbgridvem uma linha me acompanhandoeu ano quero essa linha me acompanhandoou que pelo menos não fique selecionadaIsso faz parte do componente ... o que voce pode fazer talvez seria deixar a seleção com uma cor mais clara ou somente com uma seleção de borda ( linha fina em volta da celula )exemplo:procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If odd(CDS_Cadproduto.RecNo) then begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= cl3DLight; end else begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= clWhite; end; if (gdSelected in state) then DBGrid1.Canvas.Font.Color:= clred else DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 Isso faz parte do componente ... o que voce pode fazer talvez seria deixar a seleção com uma cor mais clara ou somente com uma seleção de borda ( linha fina em volta da celula )é uma pena mesmoacho que vou mudar para um string grid entãoe ver se resolve meu casojá que é só para mostrar ao usuário o que ele está selecionandoe depois em outra o que foi selecionadocom dbgrid ficava bem mais pratica a gravaçao no bd... mas vamos ver no que da com um string list entãovlw pela resposta Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 já que é só para mostrar ao usuário o que ele está selecionandoe depois em outra o que foi selecionadoOutra idéia é assim que o usuário clicar com o mouse no registro escolhido, voce pode jogar esse registro para outro dbgrid onde terá apenas os registros que ele selecionouabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 (editado) Outra idéia é assim que o usuário clicar com o mouse no registro escolhido, voce pode jogar esse registro para outro dbgrid onde terá apenas os registros que ele selecionouabraçosim essa era minha idéiaporémqueria que passasse pra outro dbgrid no finalquando tiver selecionado todos os registros que quiserporem essa linha ta me atrapalhando :Smas acho que no fim das contas, vou deixar ela mesmoo ruim é só porque ela parece que é um registro selecionado :/no string grid acabou que não pega ctrl, somente o shifte vai dar muito trabalho, pra passar e talentão acho que vo deixa selecionando só pelo ctrl no dbgrid e prontoa unica coisa que vou afzer mesmo é retirar a funçao do scroll do mouse porque atrapalha mesmomas isso eu já fiz Editado Agosto 4, 2009 por Thalles63 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 mas acho que no fim das contas, vou deixar ela mesmoo ruim é só porque ela parece que é um registro selecionado :/O usuário saberá que os registros selecionados estão com uma bolinha preta no registro e não com um triangulo pretoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 tem razãomas como não desisto fácil voltei heheseguinteé sobre aquela bendita linha q segue o grid quando se navega por ele na barra verticalse não posso tirá-la.. quero ao menos deixar brancaachei um modofiz algumas alterações e consegui parcialmenteporemdeixa só a primeira coluna branca :/ segue o codigo pra ver se me sujerem algoprocedure TFSelecionaAnimais.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);beginif gdFocused in State then with dbgrid1.Canvas do begin Brush.Color:=clWhite; Font.Color:=clBlack; FillRect(Rect); TextOut(Rect.Left, Rect.Top, Column.Field.AsString); end;end;o q poderia ser? :/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 Faça esta mudança:procedure TFSelecionaAnimais.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if gdFocused in State then with dbgrid1.Canvas do begin Font.Color:=clBlack; Canvas.FillRect(Rect); end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 Faça esta mudança:abraçoquase funcionou eahuiaeohmas ainda ta pintando só uma coluna :/só pinta a que eu clico se a propriedade dgRowSelect diver desativadase tiver ativada pinta só a primeira coluna juro q se funcionar paro de encomodar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 4, 2009 Denunciar Share Postado Agosto 4, 2009 quase funcionou eahuiaeohmas ainda ta pintando só uma coluna :/só pinta a que eu clico se a propriedade dgRowSelect diver desativadase tiver ativada pinta só a primeira colunajuro q se funcionar paro de encomodar Ok ... vou colocar do jeito que voce precisaprocedure TFSelecionaAnimais.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (gdSelected in state) then // Sem codigo else DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;OBS: Deixe a propriedade dgRowSelect como true ( voce não vai ver o foco na celula apenas o triangulo no canto esquerdo )abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thalles63 Postado Agosto 4, 2009 Autor Denunciar Share Postado Agosto 4, 2009 (editado) quase funcionou eahuiaeohmas ainda ta pintando só uma coluna :/só pinta a que eu clico se a propriedade dgRowSelect diver desativadase tiver ativada pinta só a primeira colunajuro q se funcionar paro de encomodar Ok ... vou colocar do jeito que voce precisaOBS: Deixe a propriedade dgRowSelect como true ( voce não vai ver o foco na celula apenas o triangulo no canto esquerdo )abraçoFuncionoooouuu \o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/bom Jhonastu vai querer me batermas a tua ultima soluçao tava realmente funcionandonão sei porquemas antes não havia funcionadoagora coloquei denovo e bingo... funcionou \o/espero que não seja porque la eu usava XP e aqui vistamas acho que nada a vervlw mesmo pela atençao e pacienciaabraço, segue o codigo caso mais alguém queira vercoloquei mais um if alipra não pintar de branco as que já foram selecionadas tambemagora simfuncionando 100%procedure TFSelecionaAnimais.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (dbgrid1.SelectedRows.CurrentRowSelected) then //nada else if (gdSelected in state) then begin DBGrid1.Canvas.Brush.Color:= clWhite; DBGrid1.Canvas.Font.Color:= clBlack; end; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;vlw Editado Agosto 5, 2009 por Thalles63 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thalles63
Bom dia galera, tudo bem?
então, to com um probleminha aqui que ta me deixando careca já.
sei que é possível fazer isso pois tenho um programa aqui que faz isso
e queria implementar na minha aplicação.
o problema é o seguinte
tenho 2 dbgrids
quero passar os registros de um para outro
até aí sem problemas
já achei a solução para isso
o problema esta quando vou selecionar os registros
1º a tecla "shift" não funciona, somente o "ctrl" funciona para multipla seleção
2º quando vou clicando na barra de scroll para descer pela tabela (ou pelo mouse mesmo com o scroll) ele vai selecionando uma linha,
eu não queria que fizesse isso, queria que só navegasse mesmo, não selecionasse uma linha na navegação
se eu quiser selecionar daí eu clico na linha ;)
3º como eu disse o scroll do mouse está me atrapalhando, teria como ele não navegar no dbgrid?
acho que tinha até mais coisa
mas agora eu já esqueci
se alguém tiver alguma soluçaozinha pra algum dos problemas
já agradeço antecipadamente
Obrigado
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.