Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Delphi arrastrar varios ficheros en una aplicación (https://www.clubdelphi.com/foros/showthread.php?t=87589)

noobdelphi5 27-01-2015 23:55:39

Delphi arrastrar varios ficheros en una aplicación
 
Hola!

Soy nuevo en delphi, casi no se nada, necesito arrastrar varios archivos a mi aplicación para sacar sus nombres y hacer varias cosas, encontré un código pero solo agrega un fichero, ¿Quisiera saber cómo arrastro varios ficheros a la vez?

Código:
Código Delphi [-]
  DragAcceptFiles(Handle, True);
El código fuente/Source Code completo:
Código Delphi [-]
unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, shellapi;

type
  TformMenuPrincipal = class(TForm)
    lsFicheros: TListBox;
    Label1: TLabel;

    //para arrastrar y soltar
    procedure SoltarFichero  (var Msg: TWMDropFiles); message WM_DROPFILES;
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  formMenuPrincipal: TformMenuPrincipal;

implementation

{$R *.dfm}

procedure TformMenuPrincipal.SoltarFichero (var Msg : TWMDropFiles);
var
  CFileName: array[0..MAX_PATH] of Char;
begin
  try
    if DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
    begin
      lsFicheros.Items.Add (CFileName);
      Msg.Result := 0;
    end;
  finally
    DragFinish(Msg.Drop); //finaliza arrastrar y soltar
  end;
end;

procedure TformMenuPrincipal.FormCreate(Sender: TObject);
begin
  //permitimos arrastrar y soltar
  DragAcceptFiles(Handle, True);
end;

end.

Casimiro Notevi 28-01-2015 00:17:55

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)


Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

ecfisa 28-01-2015 02:55:09

Hola noobdelphi5.

Aplica estos cambios:
Código Delphi [-]
...
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    procedure SoltarFichero(var Msg: TMessage); message WM_DROPFILES;
  ...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True)
end;

procedure TForm1.SoltarFichero(var Msg: TMessage);
var
  i, tFiles: integer;
  fName: array [0..MAX_PATH] of Char;
begin
  tFiles:= DragQueryFile(Msg.WParam, $FFFFFFFF, fName, MAX_PATH) - 1;
  try
    for i:= 0 to tFiles do
    begin
      DragQueryFile(Msg.WParam, i, fName, MAX_PATH);
      ListBox1.Items.Add(fName)
    end;
  finally
    DragFinish(Msg.WParam);
  end;
end;
...

Saludos :)

noobdelphi5 29-01-2015 04:43:26

Muchas Gracias, ya lo probe y funciona bien. Aqui estare dando lata ahora que estoy empezando con delphi.

Saludos!!


La franja horaria es GMT +2. Ahora son las 04:31:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi