Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Arrastrar archivo a un TEdit para leer su ruta (https://www.clubdelphi.com/foros/showthread.php?t=92700)

aguml 04-01-2018 20:42:46

Arrastrar archivo a un TEdit para leer su ruta
 
Hola amigos, ahora mismo he conseguido el soltar un archivo sobre cualquier parte del form y leer su ruta y lo hice con este código: https://www.clubdelphi.com/foros/showthread.php?t=54696
Pero la idea es poder hacer que solo acepte el archivo el textbox deseado y que el icono de prohibido aparezca en el resto del form y sus componentes. ¿Sería eso posible?¿Cómo?

Neftali [Germán.Estévez] 05-01-2018 12:55:14

Variando un poco el ejemplo de la página puedes conseguir lo que necesitas.

Defines en el formulario estas clases:
Código Delphi [-]
  TDragDropEdit = class(TEdit);
  TEdit = class(TDragDropEdit)
    procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  end;

  TForm1 = class(TForm)
    Edit1: TEdit;
    ...

Y en la implementación tendrás algo como esto:

Código Delphi [-]
procedure TEdit.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
      Self.Text := 'Archivo => ' + CFileName;
      Msg.Result := 0;
    end;
  finally
    DragFinish(Msg.Drop);
  end;
end;

El el create defines que el que acepta es tu control:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Edit1.Handle, True);
end;

aguml 05-01-2018 13:27:05

Cómo sería eso en c++builder?

Neftali [Germán.Estévez] 05-01-2018 13:42:02

Ahí te tendrá que ayudar otro compañero, yo me quedo en Delphi, pero no debe ser complicado.

movorack 05-01-2018 15:21:05

Tambien uso Delphi, pero creería que el truco está en el handle que determinas al aceptar el arrastre de archivos.

ecfisa 06-01-2018 02:41:54

Hola.

Revisa los siguientes enlaces:
Saludos :)

aguml 06-01-2018 23:48:08

Muchas gracias! El primer enlace creo que prácticamente lo que quiero y solo tengo que cambiar el componente y poco más.

Neftali [Germán.Estévez] 08-01-2018 09:48:59

Cita:

Empezado por movorack (Mensaje 523905)
Tambien uso Delphi, pero creería que el truco está en el handle que determinas al aceptar el arrastre de archivos.

En parte sí, pero sólo con eso no basta.
Ya que en ese caso el mensaje que se está capturando en el ejemplo original (WM_DROPFILES) no llega, por eso es necesario realizar la otra parte.

NOTA: Por un error en la edición, este mensaje originalmente salió dentro del de [movorack]. Lo corrijo y lo añadio a uno nuevo.


La franja horaria es GMT +2. Ahora son las 16:43:01.

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