Fórum 2 TFileListBox e Drag And Drop complicado #211995
06/02/2004
0
olá,
estou com o seguinte problema:
tenho 2 TFileListBox(paleta win3.1) e to tentando copiar os arquivos do primeiro para o segundo arrastando com o mouse, preciso copiar somente os arquivos selecionados no TFLB de origem para o de destino, mas não estou conseguindo.
preciso de ajuda!!!
segue o código que to usando...
toda ajuda é muito bem vinda.
desde já obrigado.
Douglas.
estou com o seguinte problema:
tenho 2 TFileListBox(paleta win3.1) e to tentando copiar os arquivos do primeiro para o segundo arrastando com o mouse, preciso copiar somente os arquivos selecionados no TFLB de origem para o de destino, mas não estou conseguindo.
preciso de ajuda!!!
segue o código que to usando...
{exemplo tirado deste forum...com adaptações para o meu caso}
// os arquivos devem vir de flOrigem para flFiles
procedure TfrmJPGtoBMP.flOrigemMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
TFileListBox(SENDER).BeginDrag(TRUE);
end;
procedure TfrmJPGtoBMP.flFilesDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
IF SENDER <> Source THEN
Accept:=true;
end;
procedure TfrmJPGtoBMP.flFilesDragDrop(Sender, Source: TObject; X,
Y: Integer);
VAR
ORIGEM,DESTINO,I: INTEGER;
TEMP: TStringList;
begin
IF SENDER <> Source THEN
BEGIN
TEMP:= TStringList.Create;
//GUARDA ORIGEM E DESTINO
ORIGEM:=TFileListBox(SOURCE).ItemIndex;
DESTINO:=TFileListBox(SOURCE).ItemAtPos(POINT(X,Y),FALSE);
IF DESTINO <> ORIGEM THEN
DESTINO:=TFileListBox(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 TFileListBox(SOURCE).Count -1 DO
BEGIN
//SÓ ENTRA AKI UMA VEZ
IF I <> DESTINO THEN
TEMP.Add(TFileListBox(SOURCE).Items[ORIGEM]);
//ENTRA AKI SEMPRE
IF I > ORIGEM THEN
TEMP.ADD(TFileListBox(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 >= TFileListBox(SOURCE).Count THEN
TEMP.Add(TFileListBox(SOURCE).Items[ORIGEM]);
//AGORA EU LIMPO O LISTBOX E COPIO O TEMP PARA ELE
TFileListBox(SOURCE).Clear;
TFileListBox(SOURCE).Items:=TEMP;
END;
//LIBERO O TEMP
TEMP.Free;
flFiles.Update;
END;
toda ajuda é muito bem vinda.
desde já obrigado.
Douglas.
Douglas Bitencourt
Curtir tópico
+ 0
Responder
Posts
06/02/2004
Douglas Bitencourt
SOBE
_____
Aroldo Zanela (se puder me dar uma força eu agradeço).
_____
Aroldo Zanela (se puder me dar uma força eu agradeço).
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)