zoukankan      html  css  js  c++  java
  • 【转】Delphi 文件拖放

    转自:万一的博客。

    原理分析:

    这需要用到 ShellAPI 单元的两个函数: DragAcceptFiles、DragQueryFile;

    用 DragAcceptFiles(窗口句柄, True); 以让窗口能够接受拖放;

    然后就等待 WM_DROPFILES 消息, 并用 DragQueryFile 函数处理消息参数, 从而获取信息.



    代码文件:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      protected
        procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses ShellAPI;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DragAcceptFiles(Handle, True);
    end;
    
    procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
    var
      p: array[0..255] of Char;
      i,count: Integer;
    begin
      {先获取拖拽的文件总数}
      count := DragQueryFile(message.Drop, $FFFFFFFF, nil, 0);
    
      {分别获取文件名}
      for i := 0 to count-1 do
      begin
        DragQueryFile(message.Drop, i, p, SizeOf(p));
        Memo1.Lines.Add(p); {既然知道了文件名, 当然也可以随手打开它}
      end;
    end;
    
    end.


    窗体文件:


    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 154
      ClientWidth = 261
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Memo1: TMemo
        Left = 0
        Top = 0
        Width = 261
        Height = 129
        Align = alTop
        Lines.Strings = (
          'Memo1')
        ScrollBars = ssBoth
        TabOrder = 0
      end
    end

  • 相关阅读:
    HDU 4165 pills
    POJ 2125 Destroy The Graph
    POJ 2075 Tangled in Cables
    NYOJ Number SequenceProblem F
    PHP Eval研究笔记
    PHP 学习备忘(更新中)
    iOS学习笔记1 版本控制
    PHP全局缓存上栽的坑及其他【反面教材系列】
    iOS学习笔记2 Code Format
    iOS学习笔记4 垃圾回收初涉
  • 原文地址:https://www.cnblogs.com/laymond/p/3375452.html
Copyright © 2011-2022 走看看