在我的本机磁盘目录下有一个文件夹(D:\法律法规),在这个文件夹下边有一些word文件,现在我把这些word文件的文件名取出来了,放在一个listview控件中,我有如下几个问题:
1.在listview中有这些word文件的文件名,我想双击某一个文件名,就能够浏览到这个word文件,直接打 开这个word文件可以,用别的方式打开也可以,只要是能够看到文件的内容就行;
2.这个listview要有新增的功能,当点击新增按钮之后,直接打开word程序,就像点击"新建 Microsoft Word 文档"那样,然后让用户输入内容,输入完成之后直接存放到(D:\法律法规)这个目录下,不需要用户再手工存放;
3.这个和第二个问题差不多了,当点击新增之后,弹出一个Form,让用户输入文件的编号和文件的名称,然后有一个加载的按钮(意思也就是用户可以先在软件的外边写好word文件的内容,然后在这个地方加进来就行了),点击了加载按钮之后让用户从磁盘上选择word文件,加载完了之后也自动保存到(D:\法律法规)这个目录下.
问题比较多,也不是很简单,希望有这方面只是的朋友帮一下,谢谢!
噢,还有,分不是问题,解决了可以多给!
1.在listview中有这些word文件的文件名,我想双击某一个文件名,就能够浏览到这个word文件,直接打 开这个word文件可以,用别的方式打开也可以,只要是能够看到文件的内容就行;
2.这个listview要有新增的功能,当点击新增按钮之后,直接打开word程序,就像点击"新建 Microsoft Word 文档"那样,然后让用户输入内容,输入完成之后直接存放到(D:\法律法规)这个目录下,不需要用户再手工存放;
3.这个和第二个问题差不多了,当点击新增之后,弹出一个Form,让用户输入文件的编号和文件的名称,然后有一个加载的按钮(意思也就是用户可以先在软件的外边写好word文件的内容,然后在这个地方加进来就行了),点击了加载按钮之后让用户从磁盘上选择word文件,加载完了之后也自动保存到(D:\法律法规)这个目录下.
问题比较多,也不是很简单,希望有这方面只是的朋友帮一下,谢谢!
噢,还有,分不是问题,解决了可以多给!
解决方案 »
- 如果测试SQLSERVER连接不上时,为什么返回结果那么慢?
- 求一算法两字符串abcdef123与xbcyzf123最大相同字符串数
- TidTCPClient的List index out of bounds(0)问题!!!
- 大家谈谈初用Delphi2005的感想
- 高分相求:关于DELPHI7编写简单网络文件传输的程序问题?紧急在线等待中. . .
- 数据表某字段的值只有两种可能,怎样实现显示值与数据库值不同。如:值为“1”,显示为“男”。
- 问个小问题,希望大家帮忙。
- 请教各位WINDOWS版本问题!
- 关于多线程下的一个很简单的作图问题,请告诉我错在哪?
- 控制面板的问题.
- 在开发企业级应用程序的时候,请问数据库连接信息放在哪里比较好!给个例子吧!
- 打印STRINGGRID内容,用什么打印控件?
不知道你说的--建议查一下ole--是什么意思?
图1 程序运行结果 TForm1 = class(TForm) TreeView1: TTreeView; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean); private FItemList: TList; procedure SetTreeViewImageList; procedure FillTreeView(Folder: IShellFolder; FullPIDL: PItemIDList; ParentNode: TTreeNode); end;var Form1: TForm1;implementation{$R *.DFM}uses ActiveX, ComObj, ShellAPI, CommCtrl;// 以下是几个对项目标识符进行操作的函数procedure DisposePIDL(ID: PItemIDList);var Malloc: IMalloc;begin if ID = nil then Exit; OLECheck(SHGetMalloc(Malloc)); Malloc.Free(ID);end;function CopyItemID(ID: PItemIDList): PItemIDList;var Malloc: IMalloc;begin Result := nil; OLECheck(SHGetMalloc(Malloc)); if Assigned(ID) then begin Result := Malloc.Alloc(ID^.mkid.cb + sizeof(ID^.mkid.cb)); CopyMemory(Result, ID, ID^.mkid.cb + sizeof(ID^.mkid.cb)); end;end;function NextPIDL(ID: PItemIDList): PItemIDList;begin Result := ID; Inc(PChar(Result), ID^.mkid.cb);end;function GetPIDLSize(ID: PItemIDList): Integer;begin Result := 0; if Assigned(ID) then begin Result := sizeof(ID^.mkid.cb); while ID^.mkid.cb <> 0 do begin Inc(Result, ID^.mkid.cb); ID := NextPIDL(ID); end; end;end;function CreatePIDL(Size: Integer): PItemIDList;var Malloc: IMalloc; HR: HResult;begin Result := nil; HR := SHGetMalloc(Malloc); if Failed(HR) then Exit; try Result := Malloc.Alloc(Size); if Assigned(Result) then FillChar(Result^, Size, 0); finally end;end;function ConcatPIDLs(ID1, ID2: PItemIDList): PItemIDList;var cb1, cb2: Integer;begin if Assigned(ID1) then cb1 := GetPIDLSize(ID1) - sizeof(ID1^.mkid.cb) else cb1 := 0; cb2 := GetPIDLSize(ID2); Result := CreatePIDL(cb1 + cb2); if Assigned(Result) then begin if Assigned(ID1) then CopyMemory(Result, ID1, cb1); CopyMemory(PChar(Result) + cb1, ID2, cb2); end;end;
搜这个
把它的Mask设置为*.doc