Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2021
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
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;
Estoy usando Delphi 7 y Windows 10

Última edición por ArtPortEsp fecha: 28-01-2021 a las 21:18:44.
Responder Con Cita
  #2  
Antiguo 29-01-2021
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Revisa si te sirve este enlace: Delphi arrastrar varios ficheros en una aplicación

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-01-2021
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Revisa si te sirve este enlace: Delphi arrastrar varios ficheros en una aplicación

Saludos

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?
Responder Con Cita
  #4  
Antiguo 29-01-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #5  
Antiguo 29-01-2021
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
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.
Tengo duda en el punto (2)... como lo asigno al componente?

en algun evento?
Responder Con Cita
  #6  
Antiguo 29-01-2021
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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í.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 29-01-2021
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por ArtPortEsp Ver Mensaje
Tengo duda en el punto (2)... como lo asigno al componente?

en algun evento?
Si no me equivoco, con el punto 2 Neftalí se refiere a esto:

Código Delphi [-]
procedure TformMenuPrincipal.FormCreate(Sender: TObject);
begin
  //permitimos arrastrar y soltar
  DragAcceptFiles(Handle, True);
end;

Es decir, "DragAcceptFiles" usa el "Handle" del formulario "TformMenuPrincipal", en este caso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 29-01-2021
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola a todos,



Si no me equivoco, con el punto 2 Neftalí se refiere a esto:

Código Delphi [-]
procedure TformMenuPrincipal.FormCreate(Sender: TObject);
begin
  //permitimos arrastrar y soltar
  DragAcceptFiles(Handle, True);
end;

Es decir, "DragAcceptFiles" usa el "Handle" del formulario "TformMenuPrincipal", en este caso.
ah ok, entonces con respecto al punto 2, si esta cubierto, probare lo de los derechos
Responder Con Cita
  #9  
Antiguo 29-01-2021
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Tal cual... funciono sin problema al ejecutar la aplicación fuera del IDE (sin permisos de administrador)

Agradezco a todos su ayuda, excelente día, éxito siempre
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 08:53:21.


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
Copyright 1996-2007 Club Delphi