Ciao,

in una listbox voglio trascinare dei file selezionati dall'explorer do windows.

ho trovato del codice in rete che funziona bene ad eccezione di un controllo:

in pratica quando rilascio i file trascinati questi devono essere copiati nella listbox solo se il mouse e' sul componente listbox e non se è sulla restante parte della form.

grazie

il codice e' questo:
codice:
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
  i, x, cnt : integer;
  buffer, F : string;

begin
  //If you only want ListBox1 to accept the files
  //if they are being dropped directly on it...


questo e' il controllo che non mi funziona,
quando rilascio il mouse sulla listbox questa ferifica non e' valida (false)
se tolgo l' 'IF' i file vengono trascritti anche se li rilascio sul resto della form.

  if WindowFromPoint(mouse.CursorPos) = cxListBoxFileWord.Handle then


  begin
    cnt := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, MAX_PATH);
    SetLength(buffer, MAX_PATH *2);

    for i := 0 to cnt -1 do
     begin
      x := DragQueryFile(Msg.Drop, i, nil, MAX_PATH *2);
      if (x > 0) and (x < MAX_PATH *2) then
        begin
         DragQueryFile(Msg.Drop, i, @buffer[1], x +1);

         F := Copy(buffer, 1, x);
         // do something with F...
         if cxListBoxFileWord.Items.IndexOf(F) < 0 then
           cxListBoxFileWord.Items.Add(F);
        end;
     end;

  end;

  DragFinish(Msg.Drop);
  Msg.Result := 0;
end;