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

  • 相关阅读:
    zoj 1649 Rescue
    poj 1659 Frogs' Neighborhood
    hdu 1385 Minimum Transport Cost
    hdu 2680 Choose the best route
    写了一下午的dijkstra。突然发现我写的根本不是dijkstra。。。。是没优化过的BFS.......
    hdu 1548 A strange lift
    hdu 2066 一个人的旅行
    hdu 2544 最短路
    洛谷 P3253 [JLOI2013]删除物品 解题报告
    洛谷 P10P1343 地震逃生 改错
  • 原文地址:https://www.cnblogs.com/laymond/p/3375452.html
Copyright © 2011-2022 走看看