Ver Mensaje Individual
  #2  
Antiguo 15-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El siguiente código está basado en el que un compañero publicó en cierto Hilo en estos Foros hace un tiempo.

Código Delphi [-]
unit Unit1;

interface

uses
  Forms, Messages;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure OnDragDrop(var msg:TWMDropFiles); message WM_DROPFILES;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Windows, ShellApi, Dialogs;

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

procedure TForm1.OnDragDrop(var msg: TWMDropFiles);
var
  archivo:array[0..MAX_PATH] of char;
begin
  DragQueryFile(msg.drop, 0, archivo, sizeof(archivo));
  try
    ShowMessage(archivo);
  except
    MessageBox(handle, 'No pude abrir el archivo', nil, MB_ICONERROR);
  end;
  DragFinish(msg.drop);
end;

end.

Quedaría adentrarse un tanto más y comprobar, por ejemplo, si se "arrastraron" varios archivos al formulario de marras.

Edito: No me quedo muy a gusto con el código anterior. Ese bloque "try .. except" no me acaba de convencer. En todo caso, sirva como idea que puede tomarse para seguir adelante. Por ejemplo, esta podría ser una forma (no digo que no haya más porque no me he molestado en comprobarlo) de atender a todos los archivos arrastrados al formulario:

Copio el código del método "OnDragDrop" únicamente; el resto del código fuente no cambia:

Código Delphi [-]
procedure TForm1.OnDragDrop(var msg: TWMDropFiles);
var
  i: integer;
  archivo: array[0..MAX_PATH] of char;
begin
  i := 0;
  while DragQueryFile(msg.drop, i, archivo, sizeof(archivo)) <> 0 do
  begin
    Inc(i);
    ShowMessage(archivo);
  end;
  DragFinish(msg.drop);
end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 15-10-2006 a las 14:48:07.
Responder Con Cita