★★ListView的拖放问题(Drag)★★

fei19790920 2004-03-24 04:27:02
想实现ListView接受外部的拖放,如从资源管理器中拖一个文件到当前程序的ListView中,请问怎么实现??
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglh 2004-03-24
  • 打赏
  • 举报
回复
void __fastcall TForm2::DragDropFiles(TMessage &msg)
{
char FileName[_MAX_PATH]; // 缓冲区
int i, Sum; // 获得拖拉的文件数目,该功能由第二个参数决定
Sum = DragQueryFile( HDROP(msg.WParam), 0xFFFFFFFF, NULL, 0); // 显示拖拉文件的数目
for( i=0; i<Sum; i++ )
{
// 获取第i个拖拉文件的名字,并保存在缓冲区FileName中
DragQueryFile( HDROP(msg.WParam), i, FileName, _MAX_PATH);
Form2->ListBox1->Items->Add(FileName); //根据扩展名,判断是否加到文件列表中
ListBox1->Items->Delete(Form2->ListBox1->Items->Count-1);
}
// 释放应用程序为传递文件名而开辟的内存空间
DragFinish( HDROP(msg.WParam) );

自己整理一下!
xzhifei 2004-03-24
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, ShellAPI, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
procedure AppOnMessage(var Msg: TMsg; var Handled: Boolean);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
var
WMD: TWMDropFiles;
begin
if Msg.message = WM_DROPFILES then
begin
// MessageBeep(0);
WMD.Msg := Msg.message;
WMD.Drop := Msg.wParam;
WMD.Unused := Msg.lParam;
WMD.Result := 0;
WMDropFiles(WMD);
Handled := TRUE;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(listview1.Handle, True);
// DragAcceptFiles(Handle, True);
// DragAcceptFiles(Application.Handle, True);
Application.OnMessage := AppOnMessage;

end;

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
N: Word;
buffer: array[0..180] of Char;
item: TListItem;
begin

with Msg do
begin
for N := 0 to DragQueryFile(Drop, $FFFFFFFF, buffer, 1) - 1 do
begin
DragQueryFile(Drop, N, Buffer, 80);
Item := ListView1.Items.Add;
item.Caption := StrPas(Buffer);
end;
DragFinish(Drop);
end;

end;

end.

aiirii 2004-03-24
  • 打赏
  • 举报
回复
http://www.delphibox.com/article.asp?articleid=15
List列表拖放排序记忆演示
lywho 2004-03-24
  • 打赏
  • 举报
回复
gz
RuinRice 2004-03-24
  • 打赏
  • 举报
回复
没做过
但listview不是支持所有文件的托放的!·
最笨的方法是一行行向里面写呗
内容概要:本文针对区域综合能源系统(RIES)的多目标优化调度问题,提出了一种基于NSGA-II多目标进化算法并计及电-热-气综合需求响应(IDR)的优化模型。研究构建了一个涵盖电力、热力与天然气等多种能源形式的RIES集成模型,旨在协同优化“系统运行成本最小化”与“用户用能满意度最大化”这两个相互冲突的目标。通过在Matlab环境中实现NSGA-II算法,成功求解出一组代表最优权衡关系的帕累托前沿解集,为决策者提供了多样化的调度方案选择。文中深入探讨了电-热-气综合需求响应的精细化数学建模方法,并将其作为一种关键的柔性调节资源融入优化框架,有效实现了负荷侧的削峰填谷,提升了能源的整体利用效率与系统运行的经济性。研究通过详实的仿真算例验证了所提模型与算法的有效性和优越性,结果表明,引入综合需求响应机制能够显著降低系统综合运行成本,同时有效改善用户的用能体验。; 适合人群:具备一定电力系统、优化算法和Matlab编程基础的研究生、科研人员及从事能源系统规划与优化工作的工程师。; 使用场景及目标:① 学习和复现基于NSGA-II的多目标优化在综合能源系统中的应用;② 研究电-热-气综合需求响应的建模方法及其在系统调度中的作用;③ 获取可用于科研和教学的Matlab代码实例。; 阅读建议:此资源提供了完整的Matlab代码实现,读者应结合文档内容,重点理解综合需求响应的建模逻辑、多目标优化问题的构建以及NSGA-II算法的具体实现步骤,并通过运行和调试代码加深对区域综合能源系统优化调度核心思想的理解。
内容概要:本文围绕分布式光伏储能系统的优化配置方法展开研究,重点探讨了在高比例可再生能源接入背景下,如何通过Matlab代码实现对光伏与储能系统的协同优化配置。研究综合考虑了分布式电源、储能设备以及多渗透率电动汽车接入对配电网的影响,构建了一个涵盖技术、经济与运行约束的多目标优化模型。该模型以提升新能源消纳能力、增强配电网承载能力、降低系统运行成本为核心目标,采用粒子群优化算法(PSO)等智能优化算法进行求解,并通过典型算例仿真验证了所提方法的有效性与实用性。文中不仅提供了完整的Matlab代码实现路径,还系统阐述了模型构建逻辑、算法设计流程及结果分析方法,为相关领域的科研与工程实践提供了可复现的技术参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、储能系统、智能电网、电动汽车等领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于分布式光伏与储能系统的规划与设计阶段,实现容量与位置的协同优化配置;②评估高渗透率电动汽车接入对配电网承载能力的影响,并制定相应的优化对策;③提升配电网对可再生能源的接纳能力与运行经济性,支撑新型电力系统的建设与发展。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,深入理解优化模型的构建逻辑、求解算法的实现细节以及仿真结果的分析过程,并尝试在不同参数设置和场景条件下进行仿真实验,以增强对系统运行特性的认知与调控能力。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧