Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Drag & Drop desde el Explorador de Windows. (https://www.clubdelphi.com/foros/showthread.php?t=80399)

Emilio 07-06-2006 02:55:23

Drag & Drop desde el Explorador de Windows.
 
Para que tu aplicación acepte los ficheros soltados desde el Explorador, haz uso de la unidad ShellApi, allí tienes todo lo que necesitas para ello.

Prueba el siguiente trozo de código y cuando lo ejecutes, suéltale algunos ficheros desde el Explorador o desde el Escritorio. Para terminar de comprender el ejemplo, no olvides mirar las funciones que sobre él aparecen en la ayuda del Delphi.

Código Delphi [-]
type
  TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
  private
  { Private declarations }
  procedure FileIsDropped (var Msg: TMessage); message WM_DROPFILES;
  public
  { Public declarations }
end;

var
  Form1: TForm1;

implementation

uses ShellApi;

{$R *.DFM}

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

procedure TForm1.FileIsDropped (var Msg: TMessage);
var
  hDrop : THandle;
  fName : array[0..254] of char;
  NumberOfFiles : Integer;
  fCounter : Integer;
  Names : string;
begin
  hDrop := Msg.WParam ;
  NumberOfFiles := DragQueryFile(hDrop, -1, fName, 254);
  Names := '';
  for fCounter := 0 to NumberOfFiles-1 do begin
    DragQueryFile(hDrop, fCounter, fName, 254);
    // Aquí tienes los nombres de tus ficheros uno por uno
    Names := Names + #13#10 + fName;
  end;
  ShowMessage(IntToStr(NumberOfFiles) + ' Archivos arrastrados.'
        + #13#10 + 'Archivos :' + Names);
  DragFinish(hDrop);
end;

Montero 09-10-2007 23:53:55

Soy nuevo en este lenguaje de programación...y andaba buscando algun lugar donde pudiera ver ejemplos...y asi de esa manera ir abanzando...mas rapido al estudiar la funciones...

Al iniciar en este ejemplo...hice todo lo aki c me pide...pero me manda el siguiente error:

[Error] Unit1.pas(43): Constant expression violates subrange bounds

y me lo manda en la siguiente linea:

NumberOfFiles := DragQueryFile(hDrop, -1, fName, 254);


La franja horaria es GMT +2. Ahora son las 09:49:07.

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