如何实现将TFileListBox中的文件名拖放到Notepad图标上,即可被记事本打开?(100分)

  • 主题发起人 主题发起人 jack0424
  • 开始时间 开始时间
J

jack0424

Unregistered / Unconfirmed
GUEST, unregistred user!
就像将Windows资源管理器中的文件拖放到桌面Notepad图标上,即可被记事本打开一样。
 
没有人能回答吗?
 
很简单的问题
用IDataObject,IDragSource.......等等
注意Object的类型直接用TEXT就行了

你最好用DragDrop VCL包,免费的
 
hyz1980: 能给个例子吗?
 
我这有一个程序,我没有仔细看不过实现了你的要求!大概是这么一段:
Var s1FileName,TemStr,ParamString:String;
i,FromIndex,ToIndex,iPos:Integer;
begin
if ParamCount>=1 then
begin
i:=1;
ParamString:=ParamStr(i);
While (ParamString[1]='/') and (i<=ParamCount) do
begin
Inc(i);
ParamString:=ParamStr(i);
end;
FromIndex:=i;
ParamString:=ParamStr(i);
if ParamString[1]='/' then
Exit;
While i<=ParamCount do
begin
if ParamString[1]='/' then
Break;
Inc(i);
ParamString:=ParamStr(i);
end;
ToIndex:=i;
s1FileName:=GetCommandLine;
ParamString:=ParamStr(FromIndex);
iPos:=Pos(ParamString,s1FileName);
TemStr:=ParamString;
Delete(s1FileName,1,iPos-1+length(TemStr));
For i:=FromIndex+1 to ToIndex do
begin
ParamString:=ParamStr(i);
iPos:=pos(ParamString,s1FileName);
TemStr:=TemStr+copy(s1FileName,1,iPos+length(ParamString));
end;
s1FileName:=TemStr;
MyOpenFile(s1FileName);
end;
Function TFormMain.MyOpenFile(FileName:String):Boolean;
begin
Result:=False;
if [red]CheckHasModified [/red] {对Richedit.modified进行判断的一段省略}then
begin
try
RichEdit1.Lines.LoadFromFile(FileName);
RichEdit1.Modified:=False;
sFileName:=FileName;
Result:=True;
except
on E:Exception do
ShowMessage(E.Message);
end;
end;
end;
 
to 江南大米:
你的程序没实现文件名的拖放操作啊?
 
自己做的话需要实现 IDropSource, IDataObject 接口,比较麻烦
最好直接用 DragDrop 控件,带源码。
 
谢谢指点,DragDrop 控件确实好用。
 
后退
顶部