Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda com DBGrid


Thalles63

Pergunta

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

  • 0

bom.. só pra atualizar

já desabilitei o scroll, já fiz PARCIALMENTE o shift funcionar

ainda ta meio bugado

se alguém tiver uma soluçao melhorzinha eu aceito

porem

ainda tenho o problema de quando eu desço pela barra vertical o dbgrid

vem uma linha me acompanhando

eu ano quero essa linha me acompanhando

ou que pelo menos não fique selecionada

alguém saberia o q fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

ainda tenho o problema de quando eu desço pela barra vertical o dbgrid

vem uma linha me acompanhando

eu ano quero essa linha me acompanhando

ou que pelo menos não fique selecionada

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 )

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

Link para o comentário
Compartilhar em outros sites

  • 0
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 mesmo

acho que vou mudar para um string grid então

e ver se resolve meu caso

já que é só para mostrar ao usuário o que ele está selecionando

e depois em outra o que foi selecionado

com dbgrid ficava bem mais pratica a gravaçao no bd... mas vamos ver no que da com um string list então

vlw pela resposta

Link para o comentário
Compartilhar em outros sites

  • 0
já que é só para mostrar ao usuário o que ele está selecionando

e depois em outra o que foi selecionado

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 selecionou

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
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 selecionou

abraço

sim essa era minha idéia

porém

queria que passasse pra outro dbgrid no final

quando tiver selecionado todos os registros que quiser

porem essa linha ta me atrapalhando :S

mas acho que no fim das contas, vou deixar ela mesmo

o ruim é só porque ela parece que é um registro selecionado :/

no string grid acabou que não pega ctrl, somente o shift

e vai dar muito trabalho, pra passar e tal

então acho que vo deixa selecionando só pelo ctrl no dbgrid e pronto

a unica coisa que vou afzer mesmo é retirar a funçao do scroll do mouse porque atrapalha mesmo

mas isso eu já fiz

Editado por Thalles63
Link para o comentário
Compartilhar em outros sites

  • 0
mas acho que no fim das contas, vou deixar ela mesmo

o 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 preto

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

tem razão

mas como não desisto fácil voltei hehe

seguinte

é sobre aquela bendita linha q segue o grid quando se navega por ele na barra vertical

se não posso tirá-la.. quero ao menos deixar branca

achei um modo

fiz algumas alterações e consegui parcialmente

porem

deixa só a primeira coluna branca :/ segue o codigo pra ver se me sujerem algo

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

Brush.Color:=clWhite;

Font.Color:=clBlack;

FillRect(Rect);

TextOut(Rect.Left, Rect.Top, Column.Field.AsString);

end;

end;

o q poderia ser? :/

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
quase funcionou eahuiaeoh

mas ainda ta pintando só uma coluna :/

só pinta a que eu clico se a propriedade dgRowSelect diver desativada

se tiver ativada pinta só a primeira coluna

juro q se funcionar paro de encomodar

Ok ... vou colocar do jeito que voce precisa

procedure 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

Link para o comentário
Compartilhar em outros sites

  • 0
quase funcionou eahuiaeoh

mas ainda ta pintando só uma coluna :/

só pinta a que eu clico se a propriedade dgRowSelect diver desativada

se tiver ativada pinta só a primeira coluna

juro q se funcionar paro de encomodar

Ok ... vou colocar do jeito que voce precisa

OBS: Deixe a propriedade dgRowSelect como true ( voce não vai ver o foco na celula apenas o triangulo no canto esquerdo )

abraço

Funcionoooouuu \o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/

bom Jhonas

tu vai querer me bater

mas a tua ultima soluçao tava realmente funcionando

não sei porque

mas antes não havia funcionado

agora coloquei denovo e bingo... funcionou \o/

espero que não seja porque la eu usava XP e aqui vista

mas acho que nada a ver

vlw mesmo pela atençao e paciencia

abraço, segue o codigo caso mais alguém queira ver

coloquei mais um if ali

pra não pintar de branco as que já foram selecionadas tambem

agora sim

funcionando 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 por Thalles63
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...