Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Arrastrar y soltar un archivo sobre la aplicación

Estoy intentando pasar parámetros a mi aplicacion arrastrando un archivo y soltándolo sobre ésta. He investigado los eventos OnDrag___ pero no consigo ni siquiera que el icono de "arrastre" cambie de "Prohibido" a otro al pasar por encima de la aplicación. Tampoco se dispara ningun evento.

Con controles VCL si funciona pero con archivos externos arrastrados desde el explorador, no.

Seguro que alguien puede ayudarme.

Saludos.
Responder Con Cita
  #2  
Antiguo 27-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Debes registrar tu aplicación con la función DragAcceptFiles de la API de Windows para así poder procesar el mensaje WM_DROPFILES.

Bye
Responder Con Cita
  #3  
Antiguo 27-03-2008
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Poder: 19
santus Va por buen camino
yo lo hice para abrir un archivo rtf y arrastrarlo a un richview.

En la seccion de "private" agrega este procedimiento.

Código:
  private
    procedure WMDropFiles(var Msg: TWMDropFiles); message M_DROPFILES;
 
  ...
 
procedure TfMain.WMDropFiles(var Msg: TWMDropFiles);
var
  CFileName: array[0..MAX_PATH] of Char;
  RutaArchivoTemp : String;
begin
  try
    if DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
    begin
      sbDocumento.Panels[0].Text := 'Archivo '+CFileName;
      if extraerTextoWord(CFileName,RutaArchivoTemp) then begin // aca convierte de word a RTF.
        reDocumento.lines.LoadFromFile(rutaArchivoTemp);
        btnIniciarProceso.Enabled := True;
      end;
      Msg.Result := 0;
    end;
  finally
    DragFinish(Msg.Drop);
  end;
end;
fijate si esto te sirve. Muchos saludos.
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita
  #4  
Antiguo 27-03-2008
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Poder: 19
santus Va por buen camino
ahh

falto esto de registrarlo.
Código:
 
procedure TfMain.FormCreate(Sender: TObject);
begin
    DragAcceptFiles(Self.Handle, true);
end;
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita
  #5  
Antiguo 27-03-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Muchas gracias por vuestras rápidas respuestas. La solución en C++Builder es esta:

Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // Para aceptar arrastrar archivos.
  DragAcceptFiles(Handle,true);

  // Asignación del procesador de mensajes para la aplicación y sus ventanas
  Application->OnMessage  = AppMessage;
}
Código:
// Procesar los mensajes de la aplicación
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
  // Procesar el mensaje  WM_DROPFILES, aquí o en otra función a parte...
  if(Msg.message == WM_DROPFILES){
      char archivo[MAX_PATH];
      int n = DragQueryFile((HDROP)Msg.wParam, 0, archivo, sizeof(archivo));
      if(n>0) Procesar(archivo); // Funcion que procesa el archivo
      DragFinish((HDROP)Msg.wParam);
      Handled = true;
   }
}

Saludos.

Última edición por escafandra fecha: 27-03-2008 a las 21:09:06.
Responder Con Cita
  #6  
Antiguo 01-04-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
oye encontre un componente, aunque ya solucionaste tu problema depronte te ayude en el futuro:

http://cc.codegear.com/Item/23823
Responder Con Cita
  #7  
Antiguo 01-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Muchas gracias Negriz. Voy a mirarlo, nunca está de mas el exceso de información y de herramientas.

Saludos
Responder Con Cita
  #8  
Antiguo 05-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
He encontrado otra forma de hacer lo mismo, aquí tenemos un ejemplo: http://cc.codegear.com/item/15716
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
Arrastrar y soltar en un TreeView Gabriel2 OOP 3 09-12-2005 13:57:03
Arrastrar y soltar en un TreeView... User_baja1 Varios 1 18-04-2005 13:39:50
Arrastrar y soltar con DBGrids NickName Varios 2 22-03-2005 02:20:03
Arrastrar y Soltar!!! chechu Varios 6 21-10-2004 20:26:35
arrastrar y soltar imagen haZe Varios 2 03-03-2004 17:06:10


La franja horaria es GMT +2. Ahora son las 00:12:25.


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