Arrastando linha da grid

Delphi

17/03/2005

Fiz uma rotina onde arrasto uma linha de uma DBGrid e solto em outra para ´transferencia de registros´.

Agora para enfeitar gostaria de que quando estiver arrastando a linha, ela fosse exibida como uma imagem semi-transparente e não simplesmente como um cursor.

Alguem ja fez algo parecido????

Peace. Out.


Marcelo.l

Marcelo.l

Curtidas 0

Respostas

Michaell

Michaell

17/03/2005

Fiz uma rotina onde arrasto uma linha de uma DBGrid e solto em outra para ´transferencia de registros´.


Colega,

Tem mó tempão que estou com esta dúvida sobre arrastar uma linha do DBGrid para outra posição... A única solução que eu achei foi criar um índice no DataSet e fazer uma espécie de ´atualização do índice´ conforme este tópico [url]http://forum.clubedelphi.net/viewtopic.php?t=59790&highlight=ordem+registro[/url]
Teria como você me dar uma idéia, pelo menos, de como fazer essa implementação??

[]´s


GOSTEI 0
Marcelo.l

Marcelo.l

17/03/2005

Olá, Michaell

O meu caso é arrastar uma linha de um dbgrid para outro dbgrid.

Mas para o seu caso a um tempo atrás eu fiz algo do tipo mas com botões.

Criei um campo chamado ´Ordem´ na tabela

para mover o registro para uma posição anterior clicando no botão ´Para cima´...

procedure TForm1.BtnMoveUPClick(Sender: TObject);
var
   SavePlace: TBookMark;
begin
   with DB3DGrid1.DataSource.DataSet do
   begin
      try
         // "CONGELA" A GRID...
         LockWindowUpDate(DB3DGrid1.Handle);

         // SALVA UM PONTEIRO PARA O REGISTRO ATUAL...
         SavePlace := GetBookMark;

         // MOVE PARA O REGISTRO ANTERIOR...
         Prior;

         if not DB3DGrid1.DataSource.DataSet.BOF then
         begin
            // ADICIONA 1 NA ORDEM DO REGISTRO...
            Edit;
            FieldByName(´ORDEM´).AsInteger := FieldByName(´ORDEM´).AsInteger + 1;
            Post;

            // VOLTA PARA O REGISTRO...
            GotoBookMark(SavePlace);

            // SUBTRAI 1 NA ORDEM DO REGISTRO...
            Edit;
            FieldByName(´ORDEM´).AsInteger := FieldByName(´ORDEM´).AsInteger - 1;
            Post;
         end;
      finally
         // LIBERA O PONTEIRO...
         FreeBookMark(SavePlace);

         // "DESCONGELA" A GRID...
         LockWindowUpDate(0);
      end;
   end;
end;

para mover ´para baixo´ é só inverter a subtração e adição

...e é claro o dataset tem que estar indexado pelo campo ´ORDEM´

Estou pesquisando para fazer o mesmo arrastando a linha mas é um pouco mais dificil

Talvez usando algo com a função ´RectAtPos´ não sei. To chutando.

Quando tiver alguma coisa te passo.



espero ter sido de alguma ajuda.

Good Luck


Peace. Out.


GOSTEI 0
Marcelo.l

Marcelo.l

17/03/2005

sobe


GOSTEI 0
POSTAR