Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2024
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.339
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
Cita:
Empezado por MAXIUM Ver Mensaje
Hola. Nunca he realizado esto y no logro entenderlo
Quisiera arrastrar un archivo cualquiera, sea texto, video o imagen a un TImage y que la ruta de este, aparezca en un TEdit.

No es complicado.
Entendiendo los pasos, con unas pocas líneas se puede conseguir.
Necesitas un componente que reciba los ficheros; En este ejemplo he usado un panel, pero puede ser un TImage, el formulario completo,...
En este caso admite varios ficheros; En ese caso llamará varias veces al procedimiento AddFiles.

Añado el ejemplo completo al FTP del Club.

He colocado un panel en el formulario y le he llamado pnlArrastrar.




Y te adjunto el código necesario con los comentarios necesarios.

Código Delphi [-]
unit uMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm3 = class(TForm)
    pnlArrastrar: TPanel;  // componente que recibirá los ficheros
    procedure FormCreate(Sender: TObject);
  private
    // Mi procedimiento a ejecutar cuando llegue un mensaje al componente (panel)
    procedure LBWindowProc(var Message: TMessage);
    // Procedimiento cuando se reciba un fichero arrastrado
    procedure WMDROPFILES(var Msg: TMessage);
    // Procedimiento para definir qué quiero hacer con el fichero que se arrastre...
    procedure AddFile(AFileName:String);
  end;

var
  Form3: TForm3;
  OldLBWindowProc: TWndMethod; // apuntador para el procedimiento original

implementation

{$R *.dfm}

uses
    ShellAPI;

procedure TForm3.AddFile(AFileName: String);
begin
  Caption := 'Fichero: ' + AFileName;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  // Nos quedamnos con la referencia al procedimniento original
  OldLBWindowProc := pnlArrastrar.WindowProc;
  // Asignamos nuestro procedimiento personalizado para el panel
  pnlArrastrar.WindowProc := LBWindowProc;
  // Marcamos que queremos que el panel acepte ficheros (los que vamos a arrastrar)
  DragAcceptFiles(pnlArrastrar.Handle, True);
end;

procedure TForm3.LBWindowProc(var Message: TMessage);
begin
  // sólo queremor "redefinir" el procedimiento de "arrastrar fichreos..."
  if Message.Msg = WM_DROPFILES then
    WMDROPFILES(Message); // ejecutamos el nuestro
  // Ejecutamos siempre lo que hubiera antes...
  OldLBWindowProc(Message);
end;

procedure TForm3.WMDROPFILES(var Msg: TMessage);
var
  pcFileName: PChar;
  i, iSize, iFileCount: integer;
begin
  pcFileName := '';
  // número de ficheros arrastrados
  iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, pcFileName, 255);
  for i := 0 to iFileCount - 1 do  begin
    iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1;
    pcFileName := StrAlloc(iSize);
    DragQueryFile(Msg.wParam, i, pcFileName, iSize);
    if FileExists(pcFileName) then begin
      AddFile(pcFileName); // Llamada a AddFile (lo que queramos hacer con el fichero)
    end;
    StrDispose(pcFileName);
  end;
  DragFinish(Msg.wParam);
end;

end.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 02-04-2024 a las 09:44:35.
Responder Con Cita
Respuesta



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
Comprobar el nombre de la imagen en un drag and drop. jjuguera Varios 7 16-01-2020 22:36:23
Drag and Drop con archivo adjunto de outlook izia Varios 7 24-02-2010 08:29:28
Drag&Drop para clasificar Imagenes gcaffe OOP 2 22-04-2007 21:43:16
Drag&Drop de un archivo a mi aplicacion... Ascii1457 Varios 6 15-10-2006 16:10:09
Ruta y nombre de archivo INI jfranco Varios 2 27-02-2004 16:44:23


La franja horaria es GMT +2. Ahora son las 17:24:19.


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