Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-18 Por tôpico Adriano Santos
Quem quiser dar uma olhada melhor no primeiro exemplo que passei, tem um
link de um post antigo meu.

http://www.devmedia.com.br/articles/post-2227-Tecnicas-de-drag-and-drop.html

Adriano

2010/6/18 Adriano Santos 

> Ahhh muleque, adoro isso.
>
> Consegui, mas não posso me vangloriar pq não fui eu quem fez o código, mas
> sei que funciona. O crédito todo vai para o Torry's Page o autor desse post:
>
> http://www.swissdelphicenter.ch/torry/showcode.php?id=493
>
> Meu, funciona perfeitamente. Faça o teste e viva a vida.
>
> Como dizem o Walter e o Rubem:
> "Quem procura, acha".
>
>
> --
> Adriano Santos
> http://twitter.com/asrsantos
> www.delphitodelphi.blogspot.com
>
>
>
>
> 2010/6/18 Adriano Santos 
>
> Pessoal,
>>
>> Nem publiquei o drag-and-drop ontem pq a solução que tem no meu exemplo é
>> bem simples, olhem só:
>>
>> procedure TForm1.ListaOrigemDragDrop(Sender, Source: TObject; X, Y:
>> Integer);
>> begin
>>   if (Source = ListaOrigem) or (Source = ListaDestino) then
>> TListBox(Sender).EndDrag(True);
>> end;
>>
>> procedure TForm1.ListaOrigemDragOver(Sender, Source: TObject; X, Y:
>> Integer;
>>   State: TDragState; var Accept: Boolean);
>> begin
>>   if (Source = ListaOrigem) or (Source = ListaDestino) then
>> Accept := True
>> end;
>>
>> procedure TForm1.ListaOrigemEndDrag(Sender, Target: TObject; X, Y:
>> Integer);
>> begin
>>   if Target <> nil then
>> // trata o fim de uma operacao que foi aceita
>> TListbox(Sender).MoveSelection(TListBox(Target){ListaDestino});
>> end;
>>
>> procedure TForm1.ListaOrigemMouseDown(Sender: TObject; Button:
>> TMouseButton;
>>   Shift: TShiftState; X, Y: Integer);
>> begin
>>   if (Button = mbLeft) and ((Sender = ListaOrigem) or (Sender =
>> ListaDestino)) then
>> TListBox(Sender).BeginDrag(False) // inicia a operacao
>> end;
>>
>>
>> Aqui estou fazendo o drag-and-grop de um ListBox para outro.
>>
>> Olhei o código do link que passaram e aparentemente tá um xuxu beleza, mas
>> não funciona. Tô dando uma olhada pra ver se consigo descobrir o problema.
>>
>>
>> http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-sua-aplica%C3%A7%C3%A3o
>>
>>
>>
>> --
>> Adriano Santos
>> http://twitter.com/asrsantos
>> www.delphitodelphi.blogspot.com
>>
>>
>> 2010/6/17 Vitor Yahoo 
>>
>>
>>>
>>> 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-br@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 
>>> >
>>>
>>> >
>>> >
>>> > 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çã

Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-18 Por tôpico Adriano Santos
Ahhh muleque, adoro isso.

Consegui, mas não posso me vangloriar pq não fui eu quem fez o código, mas
sei que funciona. O crédito todo vai para o Torry's Page o autor desse post:

http://www.swissdelphicenter.ch/torry/showcode.php?id=493

Meu, funciona perfeitamente. Faça o teste e viva a vida.

Como dizem o Walter e o Rubem:
"Quem procura, acha".

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




2010/6/18 Adriano Santos 

> Pessoal,
>
> Nem publiquei o drag-and-drop ontem pq a solução que tem no meu exemplo é
> bem simples, olhem só:
>
> procedure TForm1.ListaOrigemDragDrop(Sender, Source: TObject; X, Y:
> Integer);
> begin
>   if (Source = ListaOrigem) or (Source = ListaDestino) then
> TListBox(Sender).EndDrag(True);
> end;
>
> procedure TForm1.ListaOrigemDragOver(Sender, Source: TObject; X, Y:
> Integer;
>   State: TDragState; var Accept: Boolean);
> begin
>   if (Source = ListaOrigem) or (Source = ListaDestino) then
> Accept := True
> end;
>
> procedure TForm1.ListaOrigemEndDrag(Sender, Target: TObject; X, Y:
> Integer);
> begin
>   if Target <> nil then
> // trata o fim de uma operacao que foi aceita
> TListbox(Sender).MoveSelection(TListBox(Target){ListaDestino});
> end;
>
> procedure TForm1.ListaOrigemMouseDown(Sender: TObject; Button:
> TMouseButton;
>   Shift: TShiftState; X, Y: Integer);
> begin
>   if (Button = mbLeft) and ((Sender = ListaOrigem) or (Sender =
> ListaDestino)) then
> TListBox(Sender).BeginDrag(False) // inicia a operacao
> end;
>
>
> Aqui estou fazendo o drag-and-grop de um ListBox para outro.
>
> Olhei o código do link que passaram e aparentemente tá um xuxu beleza, mas
> não funciona. Tô dando uma olhada pra ver se consigo descobrir o problema.
>
>
> http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-sua-aplica%C3%A7%C3%A3o
>
>
>
> --
> Adriano Santos
> http://twitter.com/asrsantos
> www.delphitodelphi.blogspot.com
>
>
> 2010/6/17 Vitor Yahoo 
>
>
>>
>> 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-br@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 
>> >
>>
>> >
>> >
>> > 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 d

Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-18 Por tôpico Adriano Santos
Pessoal,

Nem publiquei o drag-and-drop ontem pq a solução que tem no meu exemplo é
bem simples, olhem só:

procedure TForm1.ListaOrigemDragDrop(Sender, Source: TObject; X, Y:
Integer);
begin
  if (Source = ListaOrigem) or (Source = ListaDestino) then
TListBox(Sender).EndDrag(True);
end;

procedure TForm1.ListaOrigemDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if (Source = ListaOrigem) or (Source = ListaDestino) then
Accept := True
end;

procedure TForm1.ListaOrigemEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if Target <> nil then
// trata o fim de uma operacao que foi aceita
TListbox(Sender).MoveSelection(TListBox(Target){ListaDestino});
end;

procedure TForm1.ListaOrigemMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Button = mbLeft) and ((Sender = ListaOrigem) or (Sender =
ListaDestino)) then
TListBox(Sender).BeginDrag(False) // inicia a operacao
end;


Aqui estou fazendo o drag-and-grop de um ListBox para outro.

Olhei o código do link que passaram e aparentemente tá um xuxu beleza, mas
não funciona. Tô dando uma olhada pra ver se consigo descobrir o problema.

http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-sua-aplica%C3%A7%C3%A3o


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


2010/6/17 Vitor Yahoo 

>
>
> 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-br@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 
> >
>
> >
> >
> > 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, $, nil, 0);
> > >

RES: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-17 Por tôpico Vitor Yahoo
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 

>
>
> 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, $, 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) = Buff

Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-17 Por tôpico Adriano Santos
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 

>
>
> 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-sua-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, $, 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 ma

Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-16 Por tôpico Roni Rodrigo
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-sua-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, $, 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 tod

Re: Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-16 Por tôpico Roni Rodrigo
mas então cara... aquele exemplo ta bem mastigado...
(http://www.planetadelphi.com.br/dica/6768/arrastar-e-soltar-arquivos-sobre-sua-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, $, 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

Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-15 Por tôpico Andre Luiz Stivanatto
oi Adriano ainda não consegui resolver não, se pode me mandar seu codigo de 
exemplo ?

obrigado pela atenção ! 
Andre Luiz





De: Adriano Santos 
Para: "delphi-br@yahoogrupos.com.br" 
Cc: "delphi-br@yahoogrupos.com.br" 
Enviadas: Terça-feira, 15 de Junho de 2010 9:20:10
Assunto: Re: Res: [delphi-br] Arrastando arquivos do windows para dentro de um  
listbox

   
Opa,

Cheguei super tarde em casa. Emergência no serviço. Vi que a galera 
respondeu. Conseguiu resolver?

Abs

Adriano Santos
+55 (11)8219-5420
http://twitter.com/asrsantos
Enviado de meu iPhone

Em 14/06/2010, às 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 m 
> e respondido.
>
> Andre Luiz
>
> 
> De: Adriano Santos 
> Para: delphi-br@yahoogrupos.com.br
> Cc: delphi 1 
> 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. Te 
> nho 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 
>
> >
> >
> > 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]


 


  

[As partes desta mensagem que não continham texto foram removidas]



Res: Res: [delphi-br] Arrastando arquivos do windows para dentro de um listbox

2010-06-15 Por tôpico Andre Luiz Stivanatto
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 
Para: delphi-br@yahoogrupos.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-sua-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 mailto:asrsantos%40gmail.com>>
> Para: delphi-br@yahoogrupos.com.br 
> Cc: delphi 1  >
> 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  >
>
> >
> >
> > 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]