FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. |
#2
|
|||
|
|||
Debes registrar tu aplicación con la función DragAcceptFiles de la API de Windows para así poder procesar el mensaje WM_DROPFILES.
Bye |
#3
|
|||
|
|||
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;
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates. |
#4
|
|||
|
|||
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. |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
oye encontre un componente, aunque ya solucionaste tu problema depronte te ayude en el futuro:
http://cc.codegear.com/Item/23823 |
#7
|
||||
|
||||
Muchas gracias Negriz. Voy a mirarlo, nunca está de mas el exceso de información y de herramientas.
Saludos |
#8
|
||||
|
||||
He encontrado otra forma de hacer lo mismo, aquí tenemos un ejemplo: http://cc.codegear.com/item/15716
|
|
|
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 |
|