Drag-and-drop
Alguem pode me dizer como fazer para realizar uma operação drag-and-drop em um componente ListView?
Quero alternar as linhas manualmente.
Até mais
Quero alternar as linhas manualmente.
Até mais
Alex Maia
Curtidas 0
Respostas
Bilouro
24/06/2003
vom bora:
[b:f0cf474313]crie um listbox e no evento onMouseDown coloque:[/b:f0cf474313]
[b:f0cf474313]no evento onDragOver:[/b:f0cf474313]
[b:f0cf474313]no evento onDragDrop:[/b:f0cf474313]
PRONTO!
Provavelmete deve ter algo mais simples... Porém Tá aí!
Se quiser me manda um mail que eu mando o projeto de exemplo!
grande abraço
[b:f0cf474313]crie um listbox e no evento onMouseDown coloque:[/b:f0cf474313]
TListBox(SENDER).BeginDrag(TRUE);
[b:f0cf474313]no evento onDragOver:[/b:f0cf474313]
IF SENDER = Source THEN Accept:=true;
[b:f0cf474313]no evento onDragDrop:[/b:f0cf474313]
VAR ORIGEM,DESTINO,I: INTEGER; TEMP: TStringList; begin IF SENDER = Source THEN BEGIN TEMP:= TStringList.Create; //GUARDA ORIGEM E DESTINO ORIGEM:=TListBox(SOURCE).ItemIndex; DESTINO:=TListBox(SOURCE).ItemAtPos(POINT(X,Y),FALSE); IF DESTINO > ORIGEM THEN DESTINO:=TListBox(SOURCE).ItemAtPos(POINT(X,Y),FALSE) + 1; //COPIA ITEM A ITEM DE DA LISTA ORIGINAL PARA TEMP //MENOS A ORIGEM QUE ELE SÓ COLOCA ONDE O MOUSE APONTA (DESTINO) FOR I := 0 TO TListBox(SOURCE).Count -1 DO BEGIN //SÓ ENTRA AKI UMA VEZ IF I = DESTINO THEN TEMP.Add(TListBox(SOURCE).Items[ORIGEM]); //ENTRA AKI SEMPRE IF I <> ORIGEM THEN TEMP.ADD(TListBox(SOURCE).Items[I]); END; // A FUNÇAO ItemAtPos, RETORNA O NÚMERO DE ITEMS +1 SE ONDE EU COLOCAR O MOUSE // NÃO TIVER ITEM NENHUM, POR ISSO NÃO ENTRA NO FOR POIS VAI ATÉ COUNT -1 IF DESTINO >= TListBox(SOURCE).Count THEN TEMP.Add(TListBox(SOURCE).Items[ORIGEM]); //AGORA EU LIMPO O LISTBOX E COPIO O TEMP PARA ELE TListBox(SOURCE).Clear; TListBox(SOURCE).Items:=TEMP; END; //LIBERO O TEMP TEMP.Free; END;
PRONTO!
Provavelmete deve ter algo mais simples... Porém Tá aí!
Se quiser me manda um mail que eu mando o projeto de exemplo!
grande abraço
GOSTEI 0
Alex Maia
24/06/2003
Por isso que eu perguntei se ninguem sabe!!!
Todas as respostas tratam do componente ListBox, porém a operação que desejo realizar é sobre um componente ListView. Então, mais uma vez pergunto: alguem pode me dizer como fazer para realizar uma operação drag-and-drop em um componente ListView?
Quero alternar as linhas manualmente!
Desde já agradeço.
Todas as respostas tratam do componente ListBox, porém a operação que desejo realizar é sobre um componente ListView. Então, mais uma vez pergunto: alguem pode me dizer como fazer para realizar uma operação drag-and-drop em um componente ListView?
Quero alternar as linhas manualmente!
Desde já agradeço.
GOSTEI 0