操作系统课程设计报告-模拟文件管理系统(附源程序)_第1页
操作系统课程设计报告-模拟文件管理系统(附源程序)_第2页
操作系统课程设计报告-模拟文件管理系统(附源程序)_第3页
操作系统课程设计报告-模拟文件管理系统(附源程序)_第4页
操作系统课程设计报告-模拟文件管理系统(附源程序)_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、源程序代码,联系153893706操作系统课程设计报告题目: 模拟文件管理系统学 院 计算机 专 业 网络工程 年级班别 1班 学 号 学生姓名 指导教师_ _ 成 绩 2007 年 1 月 一、课程设计题目:编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。要求:(1)设计多用户文件系统,采用多级文件目录。(2)至少要有十个以上的实用命令,应设置文件保护措施。(3)设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入打入冗长的命令。二、设计思想说明:使用可视化环境编程,程序界面模仿windows系统的资源管理器程序左边为目录树形结构,显示多级文件目录

2、,右边为目录内容显示。使用鼠标,键盘,快捷键及拖动作各种文件的操作。文件操作功能有:用户登录,新建文件夹,新建文件,文件重命名,剪切文件/文件夹,复制文件/文件夹,粘贴,查看文件内容,修改文件内容,查看文件属性,修改文件权限等。为了便于操作,系统内的所有文件文件类型默认为文本文件,用户可以直接编辑其文字内容。三、系统结构的说明1.开发环境:2.运行环境: Windows 98/NT4.0 以上3.使用控件:Tmenu 菜单栏控件TImageList 图表集控件 TTreeView 树形结构显示控件 TListView 对象显示控件 TPopUpMenu 反健菜单控件 TSplitter 工具栏

3、按钮分割控件 TStatusBar 状态栏控件 TToolButton 工具栏按钮控件 TToolBar 工具栏菜单控件4.窗体结构: 如下列图,窗体分为三个,分别是Form1,Form2,Form3。其中Form1位程序主界面窗体,为始终显示状态;Form2为文件内容显示及修改窗体,翻开文件时显示,其他时候为隐藏状态;Form3为文件属性窗体,查看文件属性时为显示状态,其他时候为隐藏状态。Form1,Form2,Form3之间互相包含头文件,以便于传递数据。 图表一 Form1 图表二 Form2 图表三 Form3函数设置:Form1:int all_size(); /统计ListView

4、中所有文件的大小int check_file_name(ufd *start,AnsiString filename,int type); /寻找重名节点ufd *create_file(); /递归复制各节点void create_up_link(ufd *up,ufd *p); /复制后填写每个节点中的up指针void createfile(AnsiString filename); /新建文件void createfolder(AnsiString filename); /新建目录ufd *copy_file(ufd *del); /递归复制各节点void delete_f(ufd *d

5、el); /递归删除节点void delete_file(ufd *del); /删除文件/文件夹void destory_ft(); /销毁 文件-tree 链表void destory_fv(); /销毁 文件-list 链表void disable_all(); /禁止控件ft_connect *draw_tree(TTreeNode *tree_p,ufd *p); /递归生成树状结构void enable_all(); /激活控件void file_copy_paste(ufd *directory); /复制后的粘贴void file_cut(ufd *pcut); /剪切文件/文

6、件夹void file_paste(ufd *directory); /剪切后粘贴AnsiString file_path(ufd *p); /计算文件路径void folder_view_ini(); /初始化目录显示void item_view_ini(); /初始化文件显示void login(); /登录void mfd_in(); /初始化用户文件链表,并赋予用户文件数据void per_copy(ufd *p); /复制void refrash(); /刷新void reset(); /重置int subrelative(ufd *a,ufd *b); /判断a是否附属于b a在b

7、里?void ufd_in(); /初始化用户文件链表,并赋予用户文件数据组件列表Form1: TTreeView *TreeView1; TListView *ListView1; TImageList *ImageList1; TImageList *ImageList2; TMainMenu *MainMenu1; TMenuItem *N5; TMenuItem *N6; TMenuItem *N7; TMenuItem *N8; TStatusBar *StatusBar1; TToolBar *ToolBar1; TToolButton *ToolButton1; TToolBut

8、ton *ToolButton2; TToolButton *ToolButton3; TPopupMenu *PopupMenu1; TMenuItem *N9; TMenuItem *N10; TMenuItem *a1; TMenuItem *N11; TMenuItem *N12; TMenuItem *N13; TMenuItem *N14; TMenuItem *N15; TMenuItem *N17; TMenuItem *N18; TMenuItem *N1; TMenuItem *N2; TMenuItem *N3; TMenuItem *N4; TMenuItem *N20

9、; TMenuItem *N21; TMenuItem *N22; TMenuItem *N23; TMenuItem *N19; TMenuItem *N24; TMenuItem *N25; TMenuItem *N27; TMenuItem *N28; TMenuItem *N29; TMenuItem *N30; TMenuItem *N16; TPopupMenu *PopupMenu2; TMenuItem *N26; TMenuItem *N33; TMenuItem *N31; TMenuItem *N34; TMenuItem *N35; TSplitter *Splitte

10、r1; TSplitter *Splitter2; TToolButton *ToolButton4; TToolButton *ToolButton5;Form2: TMemo *Memo1; TButton *Button1; TButton *Button2;Form3: TButton *Button1; TGroupBox *GroupBox1; TCheckBox *read_mark; TCheckBox *write_mark; TCheckBox *execute_mark; TGroupBox *GroupBox2; TLabel *Label1; TLabel *Labe

11、l2; TLabel *Label3; TEdit *path; TEdit *filename; TEdit *size;响应事件列表Form1: void _fastcall FormCreate(TObject *Sender); void _fastcall TreeView1Change(TObject *Sender, TTreeNode *Node); void _fastcall N9Click(TObject *Sender); void _fastcall a1Click(TObject *Sender); void _fastcall N2Click(TObject *S

12、ender); void _fastcall ListView1DblClick(TObject *Sender); void _fastcall ToolButton1Click(TObject *Sender); void _fastcall N30Click(TObject *Sender); void _fastcall N14Click(TObject *Sender); void _fastcall N15Click(TObject *Sender); void _fastcall N21Click(TObject *Sender); void _fastcall N22Click

13、(TObject *Sender); void _fastcall N23Click(TObject *Sender); void _fastcall N17Click(TObject *Sender); void _fastcall N25Click(TObject *Sender); void _fastcall N29Click(TObject *Sender); void _fastcall ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected); void _fastcall N26Click(TObj

14、ect *Sender); void _fastcall N24Click(TObject *Sender); void _fastcall N19Click(TObject *Sender); void _fastcall N16Click(TObject *Sender); void _fastcall N28Click(TObject *Sender); void _fastcall N33Click(TObject *Sender); void _fastcall N35Click(TObject *Sender); void _fastcall N34Click(TObject *S

15、ender); void _fastcall PopupMenu2Popup(TObject *Sender); void _fastcall N11Click(TObject *Sender); void _fastcall N13Click(TObject *Sender); void _fastcall N27Click(TObject *Sender); void _fastcall N31Click(TObject *Sender); void _fastcall ListView1DragDrop(TObject *Sender, TObject *Source,int X, in

16、t Y); void _fastcall ListView1DragOver(TObject *Sender, TObject *Source,int X, int Y, TDragState State, bool &Accept); void _fastcall ListView1KeyDown(TObject *Sender, WORD &Key,TShiftState Shift); void _fastcall ListView1KeyUp(TObject *Sender, WORD &Key, TShiftState Shift); void _fastcall TreeView1

17、DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept); void _fastcall TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y); void _fastcall N8Click(TObject *Sender); void _fastcall N12Click(TObject *Sender); void _fastcall N3Click(TObject *Sender); void

18、 _fastcall N4Click(TObject *Sender); void _fastcall ToolButton2Click(TObject *Sender); void _fastcall ToolButton4Click(TObject *Sender); void _fastcall N10Click(TObject *Sender); void _fastcall ToolBar1Click(TObject *Sender);Form2: void _fastcall Button2Click(TObject *Sender); void _fastcall Button1

19、Click(TObject *Sender);Form3: void _fastcall Button1Click(TObject *Sender);四、数据结构的说明程序的所有数据存储由以下四个链表组成:struct ufd /文件目录了链表 int sign; /标志 0-file /1-folder AnsiString filename; /文件/目录名 char protect3; /文件保护码 int length; /文件大小 AnsiString content; /文件内容 ufd *up; /父节点指针 struct ufd *next; /下一节点指针 struct uf

20、d *folder; /目录下一层指针*ufd_head,*ufd_p,*current_ufd;struct ft_connect /TreeView 与ufd关系链表 struct ufd *folder; /ufd指针 TTreeNode *tree; /TreeView节点指针 ft_connect *next; /下一节点指针*ft_head=NULL,*ft_p,*ft_q;struct fv_connect /ListView 与ufd关系链表 struct ufd *file; /ufd指针 TListItem *item; /ListView节点指针 fv_connect *

21、next; /下一节点指针*fv_head=NULL,*fv_p=NULL,*fv_q=NULL;struct mfd /用户链表 AnsiString username; /用户名 struct ufd *ufd; /用户目录指针 struct mfd *link; /下一节点指针*mfd_head,*mfd_p,*current_user;五、各模块的算法流程图1.用户登录模块流程图:2.刷新/初始化流程图:3.TreeView change事件 处理流程图:6.文件/文件夹 重命名流程图:7.删除文件/文件夹流程图:复制文件/文件夹流程图:六、程序源代码清单:Project1.bpr 工

22、程文件Project1.cpp 工程源文件Unit1.cpp FORM1 源文件Unit1.dfm FORM1 窗体文件Unit2.cpp FORM2 源文件Unit2.dfm FORM2 窗体文件Unit3.cpp FORM3 源文件Unit3.dfm FORM3 窗体文件七、关键源代码核心函数源代码:void _fastcall TForm1:FormCreate(TObject *Sender)/Form1初始化函数 mfd_in(); login();/-void _fastcall TForm1:TreeView1Change(TObject *Sender, TTreeNode *

23、Node) /记录当前数-文件夹链接 ft_p=ft_head; while(ft_p) if(ft_p-tree=TreeView1-Selected) break; ft_p=ft_p-next; if(ft_p) now_ft=ft_p; item_view_ini(); /-void _fastcall TForm1:N9Click(TObject *Sender) /删除按钮响应 TListItem *p; if(p=ListView1-Selected) if(Application-MessageBoxA(确定删除+p-Caption+吗?).c_str(),删除,MB_OKCA

24、NCEL) delete_file(now_fv-file); refrash();/-void refrash() /刷新显示 Form1-TreeView1-Items-Clear(); Form1-ListView1-Items-Clear(); destory_ft(); drag_copy=0; folder_view_ini();ufd *create_file(ufd *perv,AnsiString filename) /新建单个文件的数据结构 ufd *q; q=new(ufd); q-filename=filename; q-sign=0; strcpy(q-protect

25、,111); q-length=12; q-folder=NULL; q-up=NULL; q-content=事例文件内容; q-next=NULL; return q;void login() /登录 AnsiString username=user1; int sign=0; mfd *p,*q; reset(); disable_all(); if(!InputQuery(用户登录,请输入用户名(系统默认为user1-user3),username) return; p=mfd_head; while(p) if(p-username=username) break; q=p; p=p

26、-link; if(!p) sign=Application-MessageBoxA(用户不存在,是否创立?,登录提示,MB_YESNO); if(sign=IDYES) p=new(mfd); p-username=username; p-link=NULL; p-ufd=create_file(NULL,原始文件); q-link=p; else return; current_user=p; Form1-StatusBar1-Panels-Items0-Text=当前用户:+username; enable_all(); folder_view_ini();/-void folder_v

27、iew_ini() /初始化目录显示 ft_connect *p; TTreeNode *tree_p; Form1-TreeView1-Items-Clear(); tree_p=Form1-TreeView1-Items-AddChild(NULL,current_user-username+ 的根目录); ft_head=new(ft_connect); ft_head-next=NULL; ft_head-folder=0; ft_head-tree=tree_p; ft_p=ft_head; draw_tree(tree_p,current_user-ufd); p=ft_head;

28、 while(p&now_ft) if(p-folder=now_ft-folder) break; p=p-next; if(p) p-tree-Selected=1; else ft_head-tree-Selected=1;ft_connect *draw_tree(TTreeNode *tree_p,ufd *p) /递归生成树状结构 TTreeNode *tree_q; while(p) if(p-sign=1) tree_q=Form1-TreeView1-Items-AddChild(tree_p,p-filename); ft_q=new(ft_connect); ft_q-n

29、ext=NULL; ft_q-tree=tree_q; ft_q-folder=p; ft_p-next=ft_q; ft_p=ft_p-next; if(p-folder) draw_tree(tree_q,p-folder); p=p-next; void item_view_ini() /初始化文件显示 AnsiString str; ufd *p; TListItem *list_p; Form1-ListView1-Items-Clear(); if(!now_ft-tree) /无当前选择文件夹 p=current_user-ufd; else ft_p=ft_head; if(n

30、ow_ft-folder=0) p=current_user-ufd; else p=now_ft-folder-folder; destory_fv(); /先销毁原链表 fv_p=new(fv_connect); fv_p-next=NULL; fv_head=fv_p; while(p) /显示并建立关系链表 list_p=Form1-ListView1-Items-Add(); list_p-Caption=p-filename; if(p-sign=0) list_p-ImageIndex=1; fv_q=new(fv_connect); fv_q-item=list_p; fv_q

31、-file=p; fv_q-next=NULL; fv_p-next=fv_q; fv_p=fv_p-next; p=p-next; fv_p=fv_head; fv_head=fv_head-next; free(fv_p); str=(String)Form1-ListView1-Items-Count+ 个对象; Form1-StatusBar1-Panels-Items1-Text=str; if(now_ft-folder) str=now_ft-folder-filename; else str=根目录; Form1-StatusBar1-Panels-Items3-Text=当前

32、位置:+str; Form1-StatusBar1-Panels-Items2-Text=总大小:+(String)all_size()+字节;void destory_fv() /销毁 文件-list 链表 fv_p=fv_head; while(fv_p) fv_head=fv_p; fv_p=fv_p-next; free(fv_head); fv_head=NULL;void destory_ft() /销毁 文件-tree 链表 ft_p=ft_head; while(ft_p) ft_head=ft_p; ft_p=ft_p-next; free(ft_head); ft_head

33、=NULL;void _fastcall TForm1:ListView1DblClick(TObject *Sender) /ListView上双击图表事件响应 TListItem *p; p=ListView1-Selected; if(p) fv_p=fv_head; while(fv_p) /list指针,通过 文件-list 链表 获取文件链表节点指针 if(fv_p-item=p) break; fv_p=fv_p-next; if(fv_p) ufd_p=fv_p-file; if(ufd_p-sign=1) ft_p=ft_head; while(ft_p) /文件链表节点指针

34、,通过 文件-tree 链表 获取tree节点指针 if(ft_p-folder=ufd_p) break; ft_p=ft_p-next; if(ft_p) ft_p-tree-Selected=true; /通过节点选中属性 展开tree并激活之前定义的选中后更改右边工程框显示 else return; else if(!ufd_p-protect0) Application-MessageBoxA(权限缺乏,无法读取文件,错误,MB_ICONERROR); return; if(!ufd_p-protect1) Form2-Memo1-ReadOnly=1; Form2-Button1-

35、Enabled=0; else Form2-Button1-Enabled=1; Form2-Memo1-ReadOnly=0; edit=ufd_p; Form2-Show(); Form2-Caption=编辑文件 +ufd_p-filename; Form2-Memo1-Text=ufd_p-content; int all_size() /统计ListView中所有文件的大小 int size=0; ufd *p; if(now_ft-folder=0) p=current_user-ufd; else p=now_ft-folder-folder; while(p) size+=p-

36、length; p=p-next; return size;void _fastcall TForm1:N29Click(TObject *Sender) /ListView中重命名按钮 TTreeNode *tree_p; AnsiString filename; ufd *p; if(ListView1-Selected) filename=now_fv-file-filename; if(!InputQuery(重命名,请输入新名字:,filename) return; if(now_fv-file-up) p=now_fv-file-up-folder; else p=current_

37、user-ufd; if(check_file_name(p,filename,now_fv-file-sign)=1) Application-MessageBoxA(无法重命名,指定的文件与现有文件重名。请选择另一文件名。,错误,MB_ICONERROR); return; now_fv-file-filename=filename; refrash(); /-void _fastcall TForm1:ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected) /ListView中的selectItem事件 f

38、v_p=fv_head; while(fv_p) if(fv_p-item=Item) break; fv_p=fv_p-next; now_fv=fv_p;/-void _fastcall TForm1:N24Click(TObject *Sender) /新建文件按钮 AnsiString filename; filename=新文件; if(!Form1-ListView1-Selected) if(!InputQuery(新建文件,请输入文件名,filename) return; if(now_ft-folder) if(check_file_name(now_ft-folder-fo

39、lder,filename,0) Application-MessageBoxA(无法新建,指定的文件与现有文件重名。请选择另一文件名。,错误,MB_ICONERROR); return; else if(check_file_name(current_user-ufd,filename,0) Application-MessageBoxA(无法新建,指定的文件与现有文件重名。请选择另一文件名。,错误,MB_ICONERROR); return; createfile(filename); refrash();/-void createfile(AnsiString filename) /新建

40、文件 ufd *p,*q; if(p=now_ft-folder) p=now_ft-folder-folder; else p=current_user-ufd; q=create_file(NULL,filename); q-up=now_ft-folder; if(now_ft-folder&!now_ft-folder-folder) now_ft-folder-folder=q; else if(!p) current_user-ufd=q; else while(p-next) p=p-next; p-next=q; int check_file_name(ufd *start,A

41、nsiString filename,int type) /寻找重名节点 ufd *p; p=start; while(p) if(p-sign=type&p-filename=filename) return 1; p=p-next; return 0;void createfolder(AnsiString filename) /新建目录 ufd *p,*q; if(p=now_ft-folder) p=now_ft-folder-folder; else p=current_user-ufd; q=new(ufd); q-filename=filename; strcpy(q-prote

42、ct,111); q-sign=1; q-length=0; q-up=now_ft-folder; q-next=NULL; q-folder=NULL; if(now_ft-folder&!now_ft-folder-folder) now_ft-folder-folder=q; else if(!p) current_user-ufd=q; else while(p-next) p=p-next; p-next=q; void delete_file(ufd *del) /删除文件/文件夹 ufd *p=NULL; if(del-sign=1) delete_f(del); if(del

43、-up) if(p=del) p=del-up-folder=del-next;free(del);return; p=del-up-folder; else p=current_user-ufd; if(p=del) current_user-ufd=del-next;free(del);return; while(p) if(p-next=del) p-next=del-next; free(del); return; p=p-next; void delete_f(ufd *del) /递归删除节点 ufd *p,*q; p=del-folder; while(p) if(p-sign=

44、1) delete_f(p); q=p; p=p-next; free(q); void create_up_link(ufd *up,ufd *p) /复制后填写每个节点中的up指针 while(p) p-up=up; if(p-sign=1&p-folder) create_up_link(p,p-folder); p=p-next; void file_cut(ufd *pcut) /剪切文件/文件夹 ufd *p,*q=NULL; cut=NULL; cut_up=NULL; cut_prev=NULL; cut=pcut; if(p=cut-up) p=cut-up-folder;

45、cut_up=cut-up; else p=current_user-ufd; cut_up=NULL; while(p) if(p=pcut) break; q=p; p=p-next; cut_prev=q; cut_sign=1;void file_paste(ufd *directory) /剪切后粘贴 ufd *p,*q,*r=NULL; if (cut-sign!=0&cut-sign!=1) Application-MessageBoxA(剪切失败:无法找到源文件,错误,MB_ICONERROR); cut=NULL; cut_up=NULL; cut_prev=NULL; re

46、turn; if(!directory) p=current_user-ufd; cut-up=NULL; else p=directory-folder; if(cut-folder&subrelative(cut-folder,directory)=1)|cut=directory) Application-MessageBoxA(剪切失败:目标文件夹是原文件夹的子文件夹,错误,MB_ICONERROR); return; cut-up=directory; q=p; while(p) if(p-filename=cut-filename) cut-filename=复件_+cut-fil

47、ename; p=q; r=p; p=p-next; p=r; if(!p) if(!directory) current_user-ufd=cut; else directory-folder=cut; else p-next=cut; if(!cut_prev) if(!cut_up) current_user-ufd=cut-next; else cut_up-folder=cut-next; else cut_prev-next=cut-next; cut-next=NULL; cut=NULL; cut_up=NULL; cut_prev=NULL; copy=NULL;void _

48、fastcall TForm1:N16Click(TObject *Sender) /剪切按钮 if(ListView1-Selected) file_cut(now_fv-file); /-void _fastcall TForm1:N28Click(TObject *Sender) /粘贴按钮 if(cut_sign&!cut) Application-MessageBoxA(无法移动文件,无法读取文件或磁盘,错误,MB_ICONERROR); return; if(cut&(cut_sign|copy_sign) ufd *p=NULL; if(ListView1-Selected) i

49、f(now_fv-file-sign=1) p=now_fv-file; else p=now_ft-folder; if(cut_up=p)|(cut_up=NULL&p=NULL) Application-MessageBoxA(源文件夹相同,错误,MB_ICONERROR); return; else if(!p) if(cut_sign=1)file_paste(NULL); else file_copy_paste(NULL); else if(cut_sign=1)file_paste(p); else file_copy_paste(p); cut_sign=0; refrash

50、(); /-int subrelative(ufd *b,ufd *a) /判断a是否附属于b a在b里? int sign; ufd *p; p=b; while(p) if(p-sign=0) return 0; if(a=p) return 1; sign=subrelative(a,p-folder); if(sign=1) return 1; p=p-next; return 0;void _fastcall TForm1:PopupMenu2Popup(TObject *Sender) /捕获反键点击对象 ft_p=ft_head; if(now_ft-tree!=TreeView

51、1-Selected) while(ft_p) if(ft_p-tree=TreeView1-Selected) break; ft_p=ft_p-next; if(ft_p) now_ft=ft_p; /-void per_copy(ufd *p) /复制 ufd *s; copy_sign=1; copy=new(ufd); copy-sign=p-sign; copy-filename=p-filename; strcpy(copy-protect,p-protect); copy-length=p-length; copy-content=p-content; copy-next=NU

52、LL; copy-up=NULL; if(p-sign=1) copy-folder=copy_file(p-folder); else copy-folder=NULL; if(copy-sign=1©-folder) create_up_link(copy,copy-folder); cut=copy; cut_up=p-up; copy=p;ufd *copy_file(ufd *del) /递归复制各节点 ufd *head=NULL,*p,*q=NULL,*r=NULL,*s=NULL; p=del; while(p) s=NULL; if(p-sign=1) s=copy_

53、file(p-folder); r=new(ufd); if(!head) head=r; else if(!q) q=head; r-sign=p-sign; r-filename=p-filename; strcpy(r-protect,p-protect); r-length=p-length; r-content=p-content; r-folder=s; r-next=NULL; /r-up=p-up; /r-next=p-next; /r-folder=p-folder; if(q) q-next=r;q=q-next; p=p-next; return head;void _f

54、astcall TForm1:N27Click(TObject *Sender) /复制按钮 if(now_fv&now_fv-file&ListView1-Selected) per_copy(now_fv-file);/-void file_copy_paste(ufd *directory) /复制后的粘贴 ufd *p,*q,*r=NULL; if (copy-sign!=0©-sign!=1) Application-MessageBoxA(复制失败:无法找到源文件,错误,MB_ICONERROR); cut=NULL; cut_up=NULL; cut_prev=NULL;

55、 return; if(!directory) p=current_user-ufd; cut-up=NULL; else p=directory-folder; if(copy-folder&subrelative(copy-folder,directory)=1|copy=directory) Application-MessageBoxA(复制失败:目标文件夹是原文件夹的子文件夹,错误,MB_ICONERROR); return; cut-up=directory; q=p; while(p) if(p-filename=cut-filename) cut-filename=复件_+cu

56、t-filename; p=q; r=p; p=p-next; p=r; if(!p) if(!directory) current_user-ufd=cut; else directory-folder=cut; else p-next=cut; cut-next=NULL; cut=NULL; cut_up=NULL; cut_prev=NULL;void _fastcall TForm1:ListView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) /拖放后松开鼠标事件/ Application-MessageBoxA

57、(String)drag_copy).c_str(),错误,MB_ICONERROR); fv_p=fv_head; while(fv_p) if(fv_p-item=ListView1-DropTarget) break; fv_p=fv_p-next; if(fv_p=now_fv) Application- MessageBoxA(源文件夹相同,错误,MB_ICONERROR); return; / (TListView1 *)Sender)-Caption; if(drag_copy=1&fv_p&fv_p-file-sign=1) per_copy(now_fv-file); fil

58、e_copy_paste(fv_p-file); cut_sign=0; copy_sign=0; refrash(); if(!now_fv) Application-MessageBoxA(?,错误,MB_ICONERROR);/ Application-MessageBoxA(now_fv-item-Caption)+(ListView1-DropTarget-Caption).c_str(),MB_ICONERROR); else if(fv_p&fv_p-file-sign=1) file_cut(now_fv-file); file_paste(fv_p-file); cut_sign=0; refrash(); drag_copy=0;/-void _fastcall TForm1:ListView1KeyDown(TObject *Sender, WORD &Key, TShiftS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论