程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> tlistview使用--拖放操作

tlistview使用--拖放操作

編輯:Delphi

  下列程序是本人在軟件開發過程中根據用戶操作上的方便,寫的一個小過程,主要實現了向listvIEw控件中拖放文件功能,其源代碼如下:

  procedure tyanzheng.AppMessage(var Msg: TMsg;var Handled: Boolean);
  var
  nFiles, I: Integer;
  ListItem: TListItem;
  begin
  if (Msg.message = WM_DROPFILES) and (msg.hwnd = ListVIEw1.Handle) then
  begin
  if MessageDlg('確定要加入嗎',
      mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
  // 取dropped files的數量
  nFiles := DragQueryFile (Msg.wParam, $FFFFFFFF, nil, 0);
  // 循環取每個拖下文件的全文件名
  try
  for I := 0 to nFiles - 1 do
  begin
  // 為文件名分配緩沖 allocate memory
  SetLength (Filename, 80);
  // 取文件名 read the file name
  DragQueryFile (Msg.wParam, I, PChar (Filename), 80);
  Filename := PChar (Filename);
  //將全文件名分解程文件名和路徑
  ListItem := ListVIEw1.Items.Add;
  ListItem.Caption := ExtractFileName(FileName);
  listitem.ImageIndex:=6;
  ListItem.SubItems.Add(ExtractFilePath(FileName));
  filepath:=extractfilepath(filename);
  //drage:=true;
  end;
  finally
  //結束這次拖放操作
  DragFinish (Msg.wParam);
  end;
  //標識已處理了這條消息
  Handled := True;
   movefile(pchar(filename),pchar(filespath+listitem.caption));
  end;end;
  end;
  注意:本程序功能是完整的,程序中使用了movefile函數,也就是說,實現了把操作的文件移到了系統所在的目錄中,因此建議在調試過程中不要用重要的文件作調試用。

  程序中用到了向Windows發送消息,不明白的話,建議看一些有關方面的文章(本程序可直接運行,須加入到系統中),本程序與《tlistvIEw顯示文件夾內容中的程序結合使用,效果更好》

  程序用在showform事件中:用法如下:

  //設置需要處理文件WM_DROPFILES拖放消息
  DragAcceptFiles(ListVIEw1.Handle, TRUE);
  //設置AppMessage過程來捕獲所有消息
  Application.OnMessage := AppMessage;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved