![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Nombres de archivos seleccionados
Buen dia
quisiera implementar la funcionalidad de que el usuario pueda seleccionar varios archivos desde el explorador de windows y "capturar" los nombres de esos archivos (incluyendo la ubicacion), para agregarlos a una base de datos. No se ni como empezar. Supongo que algo tiene que ver con DRAG and DROP, pero tengo un ejemplo (abajo), pero no hace nada : Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellAPI;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
public
{ Public declarations }
protected
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Self.Handle, true);
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
DropH: HDROP; // drop handle
DroppedFileCount: Integer; // number of files dropped
FileNameLength: Integer; // length of a dropped file name
FileName: string; // a dropped file name
I: Integer; // loops thru all dropped files
DropPoint: TPoint; // point where files dropped
begin
inherited;
// Store drop handle from the message
DropH := Msg.Drop;
try
// Get count of files dropped
DroppedFileCount := DragQueryFile(DropH, $FFFFFFFF, nil, 0);
// Get name of each file dropped and process it
for I := 0 to Pred(DroppedFileCount) do
begin
// get length of file name
FileNameLength := DragQueryFile(DropH, I, nil, 0);
// create string large enough to store file
SetLength(FileName, FileNameLength);
// get the file name
DragQueryFile(DropH, I, PChar(FileName), FileNameLength + 1);
ShowMessage(FileName);
Memo1.Lines.Add(Filename);
// process file name (application specific)
// ... processing code here
end;
// Optional: Get point at which files were dropped
DragQueryPoint(DropH, DropPoint);
// ... do something with drop point here
finally
// Tidy up - release the drop handle
// don't use DropH again after this
DragFinish(DropH);
end;
// Note we handled message
Msg.Result := 0;
end;
Última edición por ArtPortEsp fecha: 28-01-2021 a las 21:18:44. |
|
#2
|
||||
|
||||
|
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#3
|
|||
|
|||
|
Cita:
Amigo, antes que nada, muchas gracias por la aportación, sin embargo, el código referido tampoco funciona... simplemente no hace nada al arrastrar un archivo, ni al listbox ni a la forma. Estaré pasando alguna propiedad por alto? |
|
#4
|
||||
|
||||
|
Revisa el código completo.
Hay que capturar el mensaje(1), asignarlo al componente que recibe los ficheros(2) y configurar en el OnCreate la redirección del mensaje(3). Revisa que tienes las tres cosas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#5
|
|||
|
|||
|
Cita:
en algun evento? |
|
#6
|
||||
|
||||
|
Hola a todos,
Cita:
Es decir, "DragAcceptFiles" usa el "Handle" del formulario "TformMenuPrincipal", en este caso. |
|
#7
|
||||
|
||||
|
Hola a todos,
Revisa también que tu aplicación no esté corriendo con "derechos de administrador": esto también se puede dar si corres la app desde Delphi y has ejecutado este con esos derechos. El caso es que si es así (si tu aplicación tiene "derechos de administrador") no podrás arrastrar archivos desde el Explorador de Windows, al menos si este corre sin dichos derechos, que, me parece que es lo normal, por decirlo así. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como hacer que un DBLookupComboBox muestre un historico de nombres seleccionados? | mematanlimon | OOP | 4 | 28-01-2010 18:00:35 |
| Abrir archivos con nombres de archivos de otra codificación. | matabyte | Windows | 2 | 01-05-2008 01:40:13 |
| Extensión en nombres de archivos de fuente | Ñuño Martínez | Varios | 6 | 05-07-2007 14:45:56 |
| Problemas con los nombres de los archivos | Alcolea | Varios | 4 | 15-02-2007 15:49:05 |
| como obtener los nombres de archivos de un directorio | ilichhernandez | Varios | 3 | 14-07-2006 17:49:57 |
|