PDA

Ver la Versión Completa : Drag&Drop de un archivo a mi aplicacion...


Ascii1457
15-10-2006, 14:21:11
Bueno, este es mi primer post y a decir verdad recién comienzo con lo que es Delphi para una aplicación +/- extraña @_@… y realmente espero que esta pregunta no se preguntara mil veces y sea una molestia... ya que realmente me canse buscando algo que me pudiera aclarar como se puede saber el Path completo de un archivo o directorio que se arrastre de Windows hacia mi aplicación… realmente he buscado bastante sobre el tema, y pues al final he terminado posteando ♥.

Bueno, si es posible apreciaría que me pusieran un ejemplo o si tienen algún link que explique esto, me lo dieran… o simplemente díganme que siga buscando en el foro que la respuesta esta (espero que esta no sea su opción)… x_x

A… estoy usando BDS 2006 y pues agradezco desde ya su ayuda. yep yep ^_^

dec
15-10-2006, 14:40:07
Hola,

El siguiente código está basado en el que un compañero publicó (http://www.clubdelphi.com/foros/showpost.php?p=2989&postcount=3) en cierto Hilo (http://www.clubdelphi.com/foros/showthread.php?t=770) en estos Foros hace un tiempo.


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:


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;

Ascii1457
15-10-2006, 14:54:05
Wuaaaaaaaaaaaaaaaaaaaaa.......

Me funciono luego de darle un par de vueltas al código y entenderlo. >=)

Bueno, igual lamento a verte echo perder el tiempo siendo que en el foro estaba esta información U_U ... pero bueno, muchísimas gracias ♥ por tu tiempo y pues... creo que estaré posteando bastante desde ahora con mis dudas O_O

Eso… adiós y garcíasssssssss ^_^

PD: Te pediría también como saber las propiedades del archivo (tamaño, fecha creación, etc)... pero eso ya es mucho ... así que =X no dije nada =X

dec
15-10-2006, 15:04:20
Hola,

Podría decir aquí mismo cómo podrías conseguir la fecha de creación de un archivo, su tamaño, etc.,... pero, prefiero remitirte al apartado de trucos del ClubDelphi (http://www.clubdelphi.com/trucos/). Echa un vistazo, concretamente, en el subapartado "Delphi - Ficheros y disco".

Por cierto. Sé bienvenido al ClubDelphi. Echa un vistazo a la guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) de los Foros, por favor, antes o después de consultar el apartado de trucos. ;)

Ascii1457
15-10-2006, 15:39:19
Okey =D

Gracias por la bienvenida y la paciencia para darme toda esta información... de todas maneras casi todas mis dudas están siempre respuestas en el foro... es cosa de usar el buscador la mayor parte del tiempo… pero ahora por cosa de suerte o no se que, pase horas buscando y realmente me arte de buscar sobre esto del Drag&Drop y saber el Path del File @_@

Bueno, eso es todo por ahora... jojojo

A.. un ultimo detalle... Mi aplicación también tiene la función de reproducir archivos de audio y video... y pues el TMediaPlayer trabaja con la API Winmm, y pues no se si sea una buena opción o buscar mejor con directshow... entonces quería ver que dice la experiencia de un programador con mas tiempo en esto de Delphi, ya que realmente esto de reproducir es un agregado cultural a mi aplicación nada mas... y por las pruebas que he echo funciona impecable en mi PC... bueno, esa es mi ultima duda a ver si aun queda paciencia para responderme.. =D

dec
15-10-2006, 15:58:07
Hola,

A preguntas distintas deberían abrirse Hilos distintos, más que nada para no mezclar temas y para que luego sea más sencillo localizar información llevando a cabo búsquedas en los Foros.

Respecto de lo que dices, no tengo mucha experiencia, pero, el "TMediaPlayer" puede ser una buena opción para reproducir audio y vídeo en aplicaciones desarrolladas con Delphi.

No quisiera resultar cansino, como suele decirse, pero, en los Foros encontrarás información y enlaces interesantes acerca del componente "TMediaPlayer".

Ascii1457
15-10-2006, 16:10:09
Hola,

A preguntas distintas deberían abrirse Hilos distintos, más que nada para no mezclar temas y para que luego sea más sencillo localizar información llevando a cabo búsquedas en los Foros.

Respecto de lo que dices, no tengo mucha experiencia, pero, el "TMediaPlayer" puede ser una buena opción para reproducir audio y vídeo en aplicaciones desarrolladas con Delphi.

No quisiera resultar cansino, como suele decirse, pero, en los Foros encontrarás información y enlaces interesantes acerca del componente "TMediaPlayer".
Yaaaaaa... ahora si que no molesto mas, no hice un post distinto ya que quería ver tu opinión, ya que según mis primeras impresiones tienes conocimiento, y como te tenia en atencion al post 8-) ... pues quería ver tu opinión... así que nada mas...

Ahora me desaparezco y sigo aprendiendo esto de Delphi que se me hace complicado a ratos... >_<

Mil perdones por ser tan insistente… pero tengo como un millón de preguntas por estar iniciándome en este lenguaje, pero ya… mas que feliz con tu ayuda y recomendación acerca de TMediaPlayer… así que desaparezco =D

1K Gracias dec =D