Entrando de gaiato na história aí...
Não seria mais simples utilizar aqueles componentes da Win 31? Coloca os
componentes na tela, inclusive o fileslistbox (ou o nome que seja) e
trabalha com os arquivos pelo index desse componente. Se o caso é só
renomear... 

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de Adriano Santos
Enviada em: quinta-feira, 17 de junho de 2010 15:44
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: Res: Res: [delphi-br] Arrastando arquivos do windows para
dentro de um listbox

Beleza,

Meu, vou publicar no blog hoje a noite do "meu drag-and-drop", não sei se
vai ajudar.

Se não tô enganado tenho um exemplo também de como arrastar e soltar de fora
de uma aplicação Delphi para dentro dela, tipo qdo fazemos no Word ou
Outlook por exemplo. Acho que tenho isso. Se tiver tento adaptar ao que
precisa blz?

-- 
Adriano Santos
http://twitter.com/asrsantos
www.delphitodelphi.blogspot.com


2010/6/16 Roni Rodrigo <ronirodr...@yahoo.com.br>

>
>
> aahh..
> qto ao icone circular do listbox... verifica a propriedade DragMode..
> não lembro qual tem que ser, acho q é dmAutomatic.. mas enfim, da uma
> testada ai... hehe
> o/
>
> Em 16/06/2010 13:05, Roni Rodrigo escreveu:
>
> > mas então cara... aquele exemplo ta bem mastigado...
> > (
>
http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-s
ua-aplica%C3%A7%C3%A3o
> )
> > O listbox vc ja tem no form né?
> > a seção private está na declaração do teu form, lá onde tem: Form1 =
> > class(TForm) etc.... após as declarações dos seus componentes tem a
> > palara reservada PRIVATE. Logo abaixo dela vc coloca essa linha:
> > procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles;
> > isso vai interceptar as mensagens de arrasto (Drag end drop) do
windows..
> > aí vc vai nos eventos OnCreate e OnDestroy do form....
> > No Create:
> > DragAcceptFiles(Handle, true);
> > isso diz que seu aplicativo vai aceitar que algo seja arrastado sobre
ele
> > no Destroy:
> > DragAcceptFiles(Handle, false);
> > isso desativa o arrasto....
> >
> > ai vc só precisa dizer o que fazer quando arrastar os arquivos no seu
> > form, no seu caso, adicioná-los ao listbox...
> > o código está bem comentado, acho que da pra entender fácil...
> > se não der certo procura outra rotina no google.. tem várias... mas não
> > acredito que tenha maneira mais simples que essa....
> >
> > procedure TForm1.WMDropFiles(var Msg: TMessage);
> > var
> > I, FileCount, BufferSize: word;
> > Drop: HDROP;
> > FileName: string;
> > Pt: TPoint;
> > RctListBox, RctMemo: TRect;
> > begin
> > { Pega o manipulador (handle) da operação
> > "arrastar e soltar" (drag-and-drop) }
> > Drop := Msg.wParam;
> >
> > { Pega a quantidade de arquivos soltos (dropped) }
> > FileCount := DragQueryFile(Drop, $FFFFFFFF, nil, 0);
> >
> > { Se nenhum arquivo... }
> > if FileCount = 0 then begin
> > ShowMessage('Nenhum arquivo.');
> > Exit;
> > end;
> >
> > { Pega o retângulo do ListBox }
> > RctListBox := ListBox1.BoundsRect;
> >
> > { Pega o retângulo do Memo }
> > RctMemo := Memo1.BoundsRect;
> >
> > { Se soltou fora da área cliente do form... }
> > if not DragQueryPoint(Drop, Pt) then
> > ShowMessage('Arquivos soltos fora da área cliente do form')
> > { Se soltou na área do ListBox... }
> > else if PtInRect(RctListBox, Pt) then begin
> > { Pega todos os nomes de arquivos e coloca no ListBox }
> > for I := 0 to FileCount -1 do begin
> > { Obtém o comprimento necessário para o nome do arquivo,
> > sem contar o caractere nulo do fim da string. }
> > BufferSize := DragQueryFile(Drop, I, nil, 0);
> > SetLength(FileName, BufferSize +1); { O +1 é p/ nulo do fim da string }
> > if DragQueryFile(Drop, I, PChar(FileName), BufferSize+1) = BufferSize
> then
> > ListBox1.Items.Add(string(PChar(FileName)))
> > else
> > ShowMessage('Erro ao obter nome do arquivo.');
> > end;
> > { Se soltou na área do Memo... }
> > end else if PtInRect(RctMemo, Pt) then begin
> > if FileCount > 1 then
> > ShowMessage('Será mostrado apenas o conteúdo do primeiro arquivo.');
> >
> > { Obtém o comprimento necessário para o nome do arquivo,
> > sem contar o caractere nulo do fim da string.
> > O segundo parâmetro (zero) indica o primeiro arquivo da lista }
> > BufferSize := DragQueryFile(Drop, 0, nil, 0);
> > SetLength(FileName, BufferSize +1); { O +1 é p/ nulo do fim da string }
> > if DragQueryFile(Drop, 0, PChar(FileName), BufferSize+1) = BufferSize
> then
> > Memo1.Lines.LoadFromFile(string(PChar(FileName)))
> > else
> > ShowMessage('Erro ao obter nome do arquivo.');
> > end;
> >
> > Msg.Result := 0;
> >
> > end;
> >
> > Em 14/06/2010 20:01, Andre Luiz Stivanatto escreveu:
> > > então meu listbox ja esta com essa opção abilitada :
> > > AllowMultiSelect pra
> > > permitir selecionar múltiplos arquivos
> > >
> > > é que para abrir 4.783 arquivos que tenho no pc demora muito tempo,
> > > porisso preciso de arrrastar os arquivos para dentro do listbox é
> > > muito mais facil fazer isso, pois eu abro a pasta que tem os 4.783
> > > arquivos, vou em editar e mando selecionar tudo de uma vez depois, é
> > > so aeu arrastar tudo para dentro do listbox.
> > > não preciso de ter o memo, so quero o listbox mesmo, e esse codigo é
> > > estranho pois não sei qual é a area privada da unit do form1 ?
> > > preciso de um codigo mais simples que interage com o listbox, so
> > > preciso que o listbox aceite os arquivos em modo arrastar, pois quando
> > > tento fazer isso o cursor do mouse aparece o icone circular de
negação.
> > > você poderia me ver um exemplo mais pratico, ou montar o codigo ai e
> > > me mandar, pois estou tentando e não estou conseguindo fazer esse
> > > codigo, talvez você consigua pois se deve ter mais experiencia do
> > que eu.
> > > eu aprendi programação em delphi pois fiz o colegial + processamento
> > > de dados no opção no ano de 2000 que comecei, so que em 2002 cortaram
> > > isso do plano das escolas , foi no terceiro ano, portanto esta
> > > incompleto meus estudos, mas estou indo pesquisando e vendo exemplos.
> > > so que isso que eu quero fazer num programa que renomeia extenções dos
> > > arquivos ja consegui fazer, so falta isso para facilitar a minha vida,
> > > pois pelo opendialog fica a vida toda para selecionar tudo, se eu
> > > conseguir fazer o lisbox permitir o arrastar e soltar então fica muito
> > > mais facil.
> > > obrigado pela ajuda, mas se der para você me dar uma ajuda com um
> > > codigo que interaja sem ter outros componentes dentro do projeto como
> > > o memo, so quero o codigo que se interaja com o listbox, pois é so ele
> > > quem vou usar.
> > >
> > > obrigado e agurado retorno de sua resposta.
> > > Andre Luiz
> > >
> > > ________________________________
> > > De: Roni Rodrigo <ronirodr...@yahoo.com.br<ronirodrigo%40yahoo.com.br>
> > <mailto:ronirodrigo%40yahoo.com.br <ronirodrigo%2540yahoo.com.br>>
> > > <mailto:ronirodrigo%40yahoo.com.br <ronirodrigo%2540yahoo.com.br>>>
> > > Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
> >
<mailto:delphi-br%40yahoogrupos.com.br<delphi-br%2540yahoogrupos.com.br>>
>
> > <mailto:delphi-br%40yahoogrupos.com.br<delphi-br%2540yahoogrupos.com.br>
> >
> > > Enviadas: Segunda-feira, 14 de Junho de 2010 19:19:17
> > > Assunto: Re: Res: [delphi-br] Arrastando arquivos do windows para
> > > dentro de um listbox
> > >
> > > Olá André... não daria pra habilitar a opção AllowMultiSelect pra
> > > permitir selecionar múltiplos arquivos? ai vc pode percorrer a lista
de
> > > arquivos selecionados, adicionando-os...
> > > sobre arrastar o arquivo pro form, procurei no google e esse foi um
dos
> > > primeiros...
> > >
> >
>
http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-s
ua-aplica%C3%A7%C3%A3o
> > >
> > > não testei mas parece funcionar...
> > >
> > > Em 14/06/2010 17:49, Andre Luiz Stivanatto escreveu:
> > > > 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>
> > <mailto:asrsantos%40gmail.com <asrsantos%2540gmail.com>>
> > > <mailto:asrsantos%40gmail.com <asrsantos%2540gmail.com>> <mailto:
> asrsantos%40gmail.com <asrsantos%2540gmail.com>>>
> > > > Para: delphi-br@yahoogrupos.com.br <delphi-br%40yahoogrupos.com.br>
> > <mailto:delphi-br%40yahoogrupos.com.br<delphi-br%2540yahoogrupos.com.br>
> >
> > >
<mailto:delphi-br%40yahoogrupos.com.br<delphi-br%2540yahoogrupos.com.br>
> >
> > >
<mailto:delphi-br%40yahoogrupos.com.br<delphi-br%2540yahoogrupos.com.br>
> >
> > > > Cc: delphi 1
<lista-del...@yahoogrupos.com.br<lista-delphi%40yahoogrupos.com.br>
> >
<mailto:lista-delphi%40yahoogrupos.com.br<lista-delphi%2540yahoogrupos.com.b
r>
> >
> > >
<mailto:lista-delphi%40yahoogrupos.com.br<lista-delphi%2540yahoogrupos.com.b
r>
> >
> > > >
<mailto:lista-delphi%40yahoogrupos.com.br<lista-delphi%2540yahoogrupos.com.b
r>
> >>
> > > > 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>
> >
<mailto:andreluiz.stivanatto%40yahoo.com.br<andreluiz.stivanatto%2540yahoo.c
om.br>
> >
> > >
<mailto:andreluiz.stivanatto%40yahoo.com.br<andreluiz.stivanatto%2540yahoo.c
om.br>
> >
> > > >
<mailto:andreluiz.stivanatto%40yahoo.com.br<andreluiz.stivanatto%2540yahoo.c
om.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]
> >
> > [As partes desta mensagem que não continham texto foram removidas]
>
> [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 >>>>>




Responder a