在我的本机磁盘目录下有一个文件夹(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:\法律法规)这个目录下.
问题比较多,也不是很简单,希望有这方面只是的朋友帮一下,谢谢!
噢,还有,分不是问题,解决了可以多给!
解决方案 »
- C#开发的控件可不可以用于“Delphi”
- 替换5行一个字段值
- 我想在别人的程序中导入数据,对方用的是MYSql数据库,我该如何打开并连上它??
- 一个简单实现窗口的换肤例子
- ★★★★★delphi调用一个简单的oracle存储过程怎么不行??100分相送!!!!!★★★★★
- 可以解析下TQuery的AfterScroll,BeforeEdit事件吗?
- delphi7.0关于Base64算法的问题?急救中.........
- Socket错误问题
- 不知不觉,我也四颗了 祝福者有分!
- 线程问题123
- 在开发企业级应用程序的时候,请问数据库连接信息放在哪里比较好!给个例子吧!
- 打印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