tlistview使用--拖放操作

下列程序是本人在软件开发过程中根据用户操作上的方便,写的一个小过程,主要实现了向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;

谢谢支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Delphi或C++ Builder编程中,BeginThread是一个函数,用于创建一个新的线程并开始执行指定的函数。TListView是一个控件,用于显示和管理列表数据。 使用BeginThread tlistview时,可以在程序中创建一个新的线程,并在该线程中实现TListView的相关操作。新线程的主要作用是在后台执行耗时的任务,以保持主线程的响应性。 例如,我们可以使用BeginThread tlistview来实现在后台加载和更新TListView中的数据,从而提高程序的用户体验。具体的步骤如下: 1. 创建新的线程:使用BeginThread函数创建一个新的线程。该函数接受一个线程函数作为参数,该函数将在新线程中执行。 2. 在线程函数中对TListView进行操作:在新线程的线程函数中,可以通过TListView控件的相关方法和属性来加载、更新、删除和显示列表数据。这些操作可以根据具体需求进行编写,例如从数据库中加载数据,更新列表项的内容等。 3. 保证线程的安全性:由于多线程同时操作TListView可能会导致冲突和错误,需要使用线程同步机制来保证线程的安全性。可以使用一些工具类如TCriticalSection、TMonitor或者使用Windows API的同步对象来实现线程同步。 4. 启动线程和等待线程结束:在主线程中,调用BeginThread函数启动新线程的执行。然后使用WaitForSingleObject等方法来等待新线程的执行完成,以确保线程的顺序和程序的正确性。 总之,通过使用BeginThread tlistview,我们可以在新的线程中对TListView进行相关操作,以提高程序的性能和用户体验。但需要注意线程的安全性和正确的线程同步机制,以避免出现冲突和错误。 ### 回答2: BeginThread是Delphi编程语言中的一个函数,用于创建一个新的线程来执行指定的代码。 TListView是Delphi中的一个控件,用于显示数据列表。 BeginThread TListView的意思是在TListView控件中使用BeginThread函数来创建一个新的线程。 使用BeginThread TListView可以实现在一个单独的线程中加载和更新TListView控件的数据,从而提高程序的运行效率和用户体验。 具体的步骤如下: 1. 创建一个新的线程,并将要执行的代码传递给BeginThread函数。 2. 在新线程中,使用相应的代码来加载和更新TListView控件的数据。可以通过访问数据库或其他数据源来获取数据,并将其填充到TListView控件中。 3. 在代码执行完毕后,结束线程。 使用BeginThread TListView需要注意以下几点: 1. 在访问TListView控件时,需要进行线程同步。因为TListView控件是在主线程中创建的,所以在新线程中访问TListView控件时,需要使用Synchronize或Queue方法来保证线程安全。 2. 在处理大量数据时,要考虑数据的处理效率和内存占用情况,避免因为数据量过大导致程序崩溃或响应变慢。 总之,使用BeginThread TListView可以实现在一个单独的线程中加载和更新TListView控件的数据,从而提高程序的运行效率和用户体验。 ### 回答3: beginthread是一个用于创建线程的函数,可以在C/C++中使用。tlistview是一个表示线程执行过程中生成的数据的对象,通常用于在多线程程序中共享数据。 在使用beginthread函数创建线程时,需要指定一个线程函数作为参数。该函数将在新创建的线程中执行。线程函数可以通过参数传递额外的数据,在不同的线程中共享或操作该数据。 tlistview对象可以用于存储线程执行期间产生的数据。例如,如果我们有一个需要在主线程和子线程之间共享数据的GUI应用程序,可以使用tlistview对象来存储子线程生成的数据,并在主线程中显示这些数据。这样可以避免多线程访问同一数据时的竞态条件问题。 在使用beginthread函数创建线程后,我们可以通过线程函数处理程序对tlistview对象进行读写操作。这样,子线程就可以将数据写入tlistview对象,并由主线程读取和显示这些数据。这使得多线程编程更加容易和安全。 总的来说,beginthread函数用于创建线程,而tlistview对象用于在多线程程序中共享数据。通过使用这两者,我们可以更轻松地实现多线程程序,并确保数据的正确读写和同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值