Drag-and-drop// Será que ninguem sabe?
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
Thaisandrade
25/06/2003
[quote:bb1607ba0f=´Alex Maia´]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[/quote:bb1607ba0f]
Mande-me um e-mail explicando o que quer fazer que eu vejo o que pode ser feito.
thais_andrade1980@hotmail.com
Quero alternar as linhas manualmente.
Até mais[/quote:bb1607ba0f]
Mande-me um e-mail explicando o que quer fazer que eu vejo o que pode ser feito.
thais_andrade1980@hotmail.com
GOSTEI 0
Bilouro
25/06/2003
vom bora:
[b:cb99e4caae]crie um listbox e no evento onMouseDown coloque:[/b:cb99e4caae]
[b:cb99e4caae]no evento onDragOver:[/b:cb99e4caae]
[b:cb99e4caae]no evento onDragDrop:[/b:cb99e4caae]
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:cb99e4caae]crie um listbox e no evento onMouseDown coloque:[/b:cb99e4caae]
TListBox(SENDER).BeginDrag(TRUE);
[b:cb99e4caae]no evento onDragOver:[/b:cb99e4caae]
IF SENDER = Source THEN Accept:=true;
[b:cb99e4caae]no evento onDragDrop:[/b:cb99e4caae]
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
Japa
25/06/2003
por favor me expliquem oque é drag-and-drop, quero saber para que serve :lol:
GOSTEI 0