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 15-04-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Drag Drop

Hola , tengo pensado tener un form comun en delphi xe donde pueda arrastrar un archivo (mas bien una imagen) del escritorio al formulario delphi xe y dejar la ruta de la imagen en un edit del formulario , lo eh visto en varios programas y por ahi lei que era drag drop pero no encuentro ejemplos claros de lo que quiero hacer ¿ es realmente drag drop ? ¿ alguien me podria dar documentacion o links de lo que quiero hacer ?
Responder Con Cita
  #2  
Antiguo 15-04-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, recuerda poner títulos descriptivos a tus preguntas, gracias
Responder Con Cita
  #3  
Antiguo 15-04-2014
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 Lepuke.

Ejemplo para versiones anteriores a Windows 7:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
     procedure DragDropFile(var Msg: TMessage ); message WM_DROPFILES;
  public
  end;
...
implementation 

uses ShellApi;

procedure TForm1.DragDropFile(var Msg: TMessage);
var
  Cont, i : integer;
  FName : array [0..MAX_COMPUTERNAME_LENGTH+MAX_PATH] of char;
begin
  Cont := DragQueryFile(Msg.WParam, $FFFFFFFF, FName, 255)-1;
  for i := 0 to Cont do
  begin
    DragQueryFile(Msg.WParam, i, FName, 255);
    ListBox1.Items.Add(FName);
  end;
  DragFinish(msg.WParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True );
  ListBox1.Items.Clear;
end;

A partir de Windows 7,por motivos de seguridad, se filtran los mensajes enviados de una aplicación a otra (entre los que está Drag&Drop), por lo que previamente hay que elevar el privilegio mediante la función ChangeWindowMessageFilter
Código Delphi [-]
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    procedure DragDropFiles(var Msg: TMessage ); message WM_DROPFILES;
  public
  end;

...

implementation

uses ShellApi;

const
  MSGFLT_ADD = 1;

var
 ChangeWindowMessageFilter: function (msg: Cardinal; dwFlag : Word):BOOL; stdcall;

procedure TForm1.DragDropFiles(var Msg: TMessage);

var
  Cont,i : integer;
  FName : array [0..MAX_COMPUTERNAME_LENGTH+MAX_PATH] of char;
begin
  Cont:= DragQueryFile(Msg.WParam, $FFFFFFFF, FName, 255)-1;
  for i:= 0 to Cont do
    ChangeWindowMessageFilter (i, MSGFLT_ADD);
  for i := 0 to Cont do
  begin
    DragQueryFile(Msg.WParam, i, FName, 255);
    ListBox1.Items.Add(FName);
  end;
  DragFinish(msg.WParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  @ChangeWindowMessageFilter:= GetProcAddress(LoadLibrary('user32.dll'),'ChangeWindowMessageFilter');
  if Assigned (ChangeWindowMessageFilter) then
  begin
    ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
    ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
    ChangeWindowMessageFilter($0049, MSGFLT_ADD);
  end;
  DragAcceptFiles(Handle, True);
  ListBox1.Items.Clear;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 15-04-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
gracias por la ayuda ecfisa , una pregunta ¿ si ejecuto como admin en windows seven evito el problema ?
Responder Con Cita
  #5  
Antiguo 15-04-2014
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 Lepuke.
Cita:
Empezado por Lepuke Ver Mensaje
...¿ si ejecuto como admin en windows seven evito el problema ?
No, tenes que usar el segundo código.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 16-04-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
ahora mismo estoy en XP lo probe , no tira ningun error de compilacion pero cuando arrastro el archivo me tira un error de denegacion por parte de windows , despues lo pruebo en mi maquina virtual donde tengo seven , pero ¿ es normal que el segundo codigo me tire ese error en XP ?
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
Drag and Drop... dvlt .NET 0 07-02-2008 09:42:59
Drag & Drop DanForever Varios 2 01-06-2006 14:24:25
Drag&Drop !!! rafstyle OOP 6 27-07-2004 04:39:41
Drag&Drop xflo Lazarus, FreePascal, Kylix, etc. 0 13-10-2003 19:31:22
Drag & Drop cone220 Varios 1 26-05-2003 19:06:34


La franja horaria es GMT +2. Ahora son las 12:29:03.


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