vlw Antonio, mas seu exemplo não deu certo. Andre Luiz
________________________________ De: Antonio Leandro Furstenberger Favero <lean...@fave.ro> Para: delphi-br@yahoogrupos.com.br Enviadas: Segunda-feira, 14 de Junho de 2010 19:05:18 Assunto: Re: [delphi-br] Arrastando arquivos do windows para dentro de um listbox Tenho um exemplo, só que tem problemas com nomes longos, ele vem com ~ Seria legal o Adrianos postar o exemplo dele., Também vou querer. Mas segue meu exemplo: Private // IDropTarget function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; function DragLeave: HResult; stdcall; function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; stdcall; {-----------------------------------------------------------------} { IDropTarget-Implementierung } {-----------------------------------------------------------------} function TAgentScreen.DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; begin dwEffect := DROPEFFECT_COPY; Result := S_OK; end; function TAgentScreen.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; begin dwEffect := DROPEFFECT_COPY; Result := S_OK; end; function TAgentScreen.DragLeave: HResult; begin Result := S_OK; end; function TAgentScreen.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult; var aFmtEtc: TFORMATETC; aStgMed: TSTGMEDIUM; pData: PAnsiChar; begin {Make certain the data rendering is available} if (dataObj = nil) then raise Exception.Create('IDataObject-Pointer is not valid!'); with aFmtEtc do begin cfFormat := CF_TEXT; ptd := nil; dwAspect := DVASPECT_CONTENT; lindex := -1; tymed := TYMED_HGLOBAL; end; if DataObj.QueryGetData(aFmtEtc)= S_OK then begin {Get the data} OleCheck(dataObj.GetData(aFmtEtc, aStgMed)); try {Lock the global memory handle to get a pointer to the data} pData := GlobalLock(aStgMed.hGlobal); { Replace Text } SUAFUNCAO(string(pData)); finally {Finished with the pointer} GlobalUnlock(aStgMed.hGlobal); {Free the memory} ReleaseStgMedium(aStgMed); end; Result := S_OK; end else begin aFmtETC.cfFormat:=RegisterClipboardFormat(CFSTR_FILENAMEA); if DataObj.QueryGetData(aFmtEtc)= S_OK then begin {Get the data} OleCheck(dataObj.GetData(aFmtEtc, aStgMed)); try {Lock the global memory handle to get a pointer to the data} pData := GlobalLock(aStgMed.hGlobal); { Replace Text } OpenFiles(string(pData)); finally {Finished with the pointer} GlobalUnlock(aStgMed.hGlobal); {Free the memory} ReleaseStgMedium(aStgMed); end; Result := S_OK; end else Result:= S_FALSE; end; end; procedure TAgenScreen.onCreate(): begin {Allow window to accept drop events} OleInitialize(nil); OleCheck(RegisterDragDrop(Handle, Self)); end; 2010/6/14 Andre Luiz Stivanatto <andreluiz.stivana...@yahoo.com.br> > > > obrigado Adriano, até agora ninguém respondeu são 17:48 hs, se você me > mandar esse exemplo eu te agradeço, muito obrigado por ter me respondido. > > Andre Luiz > > ________________________________ > De: Adriano Santos <asrsan...@gmail.com <asrsantos%40gmail.com>> > > Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br> > Cc: delphi 1 > <lista-del...@yahoogrupos.com.br<lista-delphi%40yahoogrupos.com.br> > > > Enviadas: Segunda-feira, 14 de Junho de 2010 10:25:29 > Assunto: Re: [delphi-br] Arrastando arquivos do windows para dentro de um > listbox > > > André, > > Se ninguém responder seu e-mail até a noite, te passo um exemplo. Tenho > isso > no meu server em home-office. Tenho um exemplo bem legal. > > -- > Adriano Santos > http://twitter.com/asrsantos > www.delphitodelphi.blogspot.com > > 2010/6/12 Andre Luiz Stivanatto > <andreluiz.stivana...@yahoo.com.br<andreluiz.stivanatto%40yahoo.com.br> > > > > > > > > > Oi pessoal tudo bem ? > > Estou com um projeto aqui que estou montando, tenho um form e um listbox1 > , > > ja fiz um botão abrir arquivos com o opendialog1 so que para abrir 4.783 > > arquivos no listbox1 não é facil, estava pensando em abrir a pasta dos > 4.783 > > arquivos, depois mandar selecionar tudo de uma vez e arrastar para dentro > do > > listbox que esta dentro do meu projeto, ai os 4.783 arquivos ficaram > > listados no listbox de uma vez, é mais rapido do que lever varios minutos > > selecionando pelo opendialog que demora muito mais, o que eu quero é um > > codigo que permita eu arrastar multiplos arquivos de uma pasta do windows > e > > jogar dentro do listbox, como faço esse codigo ? > > obrigado pela atenção de todos ! > > > > Andre Luiz > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > ------------------------------------ > > -- > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> [As partes desta mensagem que não continham texto foram removidas]