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]

Responder a