Fórum Drag-and-drop// Será que ninguem sabe? #166465
25/06/2003
0
Quero alternar as linhas manualmente.
Até mais
Alex Maia
Curtir tópico
+ 0Posts
26/06/2003
Thaisandrade
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
26/06/2003
Bilouro
[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
26/06/2003
Japa
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)