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 19: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 11: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 12:27:05

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

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

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

movorack 05-01-2018 14: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 01:41:54

Hola.

Revisa los siguientes enlaces:
Saludos :)

aguml 06-01-2018 22: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 08: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 09:13:48.

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