Ver Mensaje Individual
  #7  
Antiguo 02-04-2024
javipes javipes is offline
Miembro
 
Registrado: jul 2007
Posts: 14
Reputación: 0
javipes Va por buen camino
Exclamation

Aunque ya se ha respondido, te amplio algo que yo utilizo, por si te esclarece más, que yo la primera vez me costó un poco:

Por ejemplo, para que el receptor del drag-and-drop sea un tmemo en tu form, puedes ampliar la clase TMemo con
Código Delphi [-]
type   
  //la clase TMemo sera receptora del drag-and-drop   
  TMemo = class(Vcl.StdCtrls.TMemo)   protected     
    procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;     
    procedure    CreateWnd; override;     
    procedure DestroyWnd; override;   
  end;

y estos metodos escribirlos:
Código Delphi [-]
{$REGION 'Memo'}  
procedure TMemo.CreateWnd; 
begin   
  inherited;   
  DragAcceptFiles(Handle, true); 
end;  

procedure TMemo.DestroyWnd; 
begin   
  DragAcceptFiles(Handle, false);   
  inherited; 
end;  

procedure TMemo.WMDropFiles(var Message: TWMDropFiles); 
var   
  numfichs: integer;   
  fn: array[0..MAX_PATH-1] of char;   
  nomfichero,extension:string; 
begin    
  numfichs := DragQueryFile(Message.Drop, $FFFFFFFF, fn, MAX_PATH);   
  if numfichs <> 1 then   
  begin     
    MessageBox(Handle, 'Solo un fichero.', 'Error descarga', MB_ICONERROR);     
    Exit;   
  end;    
  if DragQueryFile(Message.Drop, 0, fn, MAX_PATH) = 0 then 
    Exit;    
  nomfichero := fn;   //contiene el path completo    
 //hacer lo que se quiera con el fichero o con el nombre   
end; 
{$ENDREGION 'Memo'}

con esto, cualquier tmemo que incluyas en tu form podra ser receptor de drag and drop, por ejemplo para cargar en el el contenido del fichero si es de tipo texto.
Tambien podrías cambiarlo para aplicarlo sobre un tedit y que el receptor fuera el tedit....

Última edición por Neftali [Germán.Estévez] fecha: 02-04-2024 a las 09:49:14. Razón: Corregir la visualización del código
Responder Con Cita