📄 delphi拖放编程(2).htm
字号:
<p> …</p><p> 则移动、拷贝操作将限制在本子窗口范围内。</p><p> 当解决了上述问我们的工作就只是遵循拖放的一般开发步骤,按步就班来完成了。</p><p> 1.FileList开始拖动操作</p><blockquote> <p>procedure TFMForm.FileListMouseDown(Sender: TObject; Button: TMouseButton; </p> <p>Shift: TShiftState; X, Y: Integer); </p> <p>begin </p> <p>if Button = mbLeft then </p> <p>with Sender as TFileListBox do </p> <p>begin </p> <p>if ItemAtPos(Point(X, Y), True) >= 0 then </p> <p>BeginDrag(False); </p> <p>end; </p> <p>end; </p></blockquote><p> ItemAtPos用来检查当前是否有文件存在。而BeginDrag方法传递参数False,允许FileList单独处理鼠标事件而并不开始拖动。事实上这种情况是大量存在的。</p><p> </p><p> 2.DirectoryOutline、DriveTabSet决定是否能接受拖动的就地放下。</p><blockquote> <p><br> procedure TFMForm.DirectoryOutlineDragOver(Sender, Source: TObject; X, </p> <p>Y: Integer; State: TDragState; var Accept: Boolean); </p> <p>begin </p> <p>if Source is TFileListBox then </p> <p>Accept := True; </p> <p>end; </p> <p> </p> <p>procedure TFMForm.DriveTabSetDragOver(Sender, Source: TObject; X, </p> <p>Y: Integer; State: TDragState; var Accept: Boolean); </p> <p>var </p> <p>PropPos: Integer; </p> <p>begin </p> <p>if Source is TFileListBox then </p> <p>with DriveTabSet do </p> <p>begin </p> <p>PropPos := ItemAtPos(Point(X,Y)); </p> <p>Accept := (PropPos > -1) and (PropPos < Tabs.Count); </p> <p>end; </p> <p>end; </p></blockquote><p></p><p> DirectoryOutline是无条件的接受,而DriveTabSet需检查是否是合法的标签。</p><p> </p><p> 3.拖动放下的响应</p><p> DirectoryOutline的拖动放下用于实现文件移动功能。程序中调用ConfirmChange 事件处理过程,目标路径由DirctoryOutline.Items[GetItem(X,Y)].FullPath来得到。</p><blockquote> <p><br> procedure TFMForm.DirectoryOutlineDragDrop(Sender, Source: TObject; X, </p> <p>Y: Integer); </p> <p>begin </p> <p>if Source is TFileListBox then </p> <p>with DirectoryOutline do </p> <p>begin </p> <p>ConfirmChange('Move',FileList.FileName, Items[GetItem(X, Y)].FullPath); </p> <p>end; </p> <p>end; </p> <p> DriveTabSet的拖动放下用于实现文件拷贝功能。程序中把当前位置转化为相应的驱动器号,目标路径由CurrentDirList[DriveTabSet.TabIndex]获得。</p> <p>procedure TFMForm.DriveTabSetDragDrop(Sender, Source: TObject; X,Y: Integer); </p> <p>var </p> <p>APoint: TPoint; </p> <p>begin </p> <p>APoint.X := X; APoint.Y := Y; </p> <p>DriveTabSet.TabIndex := DriveTabSet.ItemAtPos(APoint); </p> <p>if Source is TFileListBox then </p> <p>with DriveTabSet do </p> <p>begin </p> <p>if CurrentDirList[TabIndex] <> '' then </p> <p>ConfirmChange('Copy',TheFilename,CurrentDirList[TabIndex]); </p> <p>end; </p> <p>end; </p></blockquote><p></p><p> 4.FileList响应拖动结束,更新文件列表</p><blockquote> <p>procedure TFMForm.FileListEndDrag(Sender, Target: TObject; X, Y: Integer); </p> <p>begin </p> <p>if Target <> nil then FileList.Update; </p> <p>end; </p></blockquote><p></p><p></p><p> 到目前为止,我们的文件管理器功能已足够强大。不过还有许多问题值得读者去进一步探讨,如:</p><p> 1.文件与应用程序关联的建立;</p><p> 2.在文件列表框中显示更多的文件信息;</p><p> 3.文件列表框中的文件按后缀各排序等。</p><p> 文件管理器是一个真正的综合例程,对它的钻研会使您更进一步模到Delphi编程的精髓。</p></td></tr></table><br><img src="/xslimages/content/buttom.gif" align="absmiddle"></img> 相关内容 <br><ul><a href="/33554432/34603008/34668544/103215.htm">Delphi拖放编程(1)<br><br></a></ul><br><font color="#000000"><font color="#1C82C5"><img src="/xslimages/content/buttom.gif" align="absmiddle"></img></font> 相关链接 </font><br><ul><a href="http://bbs.cpcw.com/forum/vb/">到程序方舟论坛,论坛主持人为你答疑!<br><br></a></ul><a href=""><font color="#FF9900"><font color="#CC0000"></font></font></a><font color="#000000"><font color="#1C82C5"><img src="/xslimages/content/buttom.gif" align="absmiddle"></img></font> 更多的 </font><br><table width="70%"><tr><td width="30%" valign="top" align="left"><ul></ul></td><td width="30%" valign="top" align="left"></td></tr></table></td></tr></table><table width="98%" border="0" cellspacing="0"><tr><td width="85%" height="19" align="center" bgcolor="#FDF0C4"><a href="mailto:ph@cpcw.com"> 本文版权归作者和天极网共同所有,如有任何版权问题,请与我们联系。 </a></td><td width="15%" bgcolor="#FFCC66" height="19"> 【 <a href="/index.htm"> 回首页 </a> 】 </td></tr></table><br></td><td colspan="2" valign="top" width="25%" bgcolor="#eeeeee"><table width="97%" align="center"><tr><td bgcolor="#ff9900" width="182" height="15"></td></tr></table><table width="97%" border="0" cellpadding="3" align="center"><tr><td valign="top" height="23" border="1" bgcolor="#eeeeee" cellspacing="0" bordercolor="#ff9900"><div align="center"> 火热链接 </div></td></tr><tr bgcolor="#F5F5F5"><td width="27%" height="20" align="left"><div align="left"><a href="/33554432/36700160/116464.htm">淄博广电被罚 吉通陪绑……</a><br><a href="/33554432/36700160/116429.htm">图文:首信公司与ECnet建全球B2B采购网</a><br><a href="/33554432/36700160/116416.htm">“反色情”触及儿童网站</a><br><a href="/33554432/36700160/116409.htm">WAP,未来的未来</a><br><a href="/33554432/36700160/116406.htm">日本:5年后IT业超美国</a><br><a href="/33554432/36700160/116394.htm">美国在线和时代华纳:引判例对付审查</a><br><a href="/33554432/36700160/116367.htm">WAP收费标准再次推迟出台</a><br><a href="/33554432/36700160/116348.htm">网络经济任重道远</a><br><a href="/33554432/36700160/116319.htm">苹果:我们并未对任何人施压</a><br><a href="/33554432/36700160/116322.htm">法官的离职不会影响微软案</a><br></div></td></tr></table><br><table width="97%" border="0" cellpadding="3" align="center"><tr bgcolor="#ff9900"><td valign="top" height="20"><div align="center"> 天极搜索 </div></td></tr><tr bgcolor="#F5F5F5"><form action="http://search.yesky.com/servlet/search" method="post" name="search" onsubmit="form_onsubmit(); return ValidationPassed;"><td width="27%" height="20" align="center"><div><script language="javascript"> function form_onsubmit() { ValidationPassed = true ; if (document.search.keyword.value=="") { alert ("请输入搜索关键字!"); ValidationPassed=false; } return ValidationPassed; } </script><input name="keyword" id="keyword" class="nava" size="12"></input><input type="hidden" name="classify" value="keyword"></input><input type="hidden" name="no" value="34603008"></input><input onClick="form_onsubmit(this.form);" style="HEIGHT:22px;WIDTH:40px" type="submit" value="搜索" name="submit2"></input></div></td></form></tr></table><div align="left"><font color="#000000"><br><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr align="center"><td><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td width="10" height="2"><img src="/xslimages/school/pathboy-ruanjian.gif" width="32" height="32"></img></td><td width="186" height="2" valign="top"><table width="100%" border="1" cellspacing="0" cellpadding="0" bordercolordark="#FFFFFF" bordercolorlight="#000000" bgcolor="#6898D0"><tr align="center"><td height="26"><font color="#FFFFFF"> MyDown下载 </font><font class="nava" color="#FFFFFF"></font></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="0" cellspacing="1" width="100%" align="center"><tbody><tr align="left"><td bgcolor="#ffffff"><script type="text/javascript" language="javascript" src="http://www.mydown.com/mydown.js"></script><br></td></tr></tbody></table><table width="100%" align="center"><tr><td align="center"><tr><td align="center"><a href="http://www.hoyodo.com"><img border="0" src="http://www.hoyodo.com/home/images/banner/botton.gif" width="120" height="60"></img></a><br><br><a href="http://e.yesky.com"><img border="0" src="http://e.yesky.com/images/logo_e2.gif" width="120" height="60" alt="天极E时代"></img></a></td></tr></td></tr></table></font></div><br></td></tr></table><table width="97%" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td><div align="center"><a href="/hdong/gao.htm" target="_blank">欢迎投稿</a>| <a href="/bill/index.html" target="_blank">市场联系</a>| <a href="/serve/dnbjs.htm" target="_blank">关于我们</a>| <a href="/maillist/index.html" target="_blank">邮件列表</a>| <a href="/hdong/zaopin.html" target="_blank">加入我们</a>| <a href="/hdong/xinsi.html" target="_blank">隐私条款</a></div></td></tr></table><hr height="1" size="1" width="760"></hr><td width="57%" valign="top" rowspan="1" align="center"><div align="center"><script language="JavaScript" src="http://ad.cpcw.com/js/school.js"></script></div></td><table width="97%" border="0" cellspacing="0" cellpadding="0" align="center"><tr></tr><tr></tr><tr></tr></table><table width="97%" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td><div align="center"><span class="nava"><font color="#000000" face="Arial, Helvetica, sans-serif"> Copyright (C) 1999 Yesky.com, All Rights Reserved </font><font color="#000000"><br> 版权所有 <font face="Arial, Helvetica, sans-serif"> Yesky </font></font></span></div></td></tr></table><script>document.write("<a href=http://best.netease.com/cgi-bin/view/viewbasic.cgi?program target=_blank><img style=visibility:hidden src=http://best.netease.com/cgi-bin/log.cgi?user=program&refer="+escape(document.referrer)+"&cur="+escape(document.URL)+" border=0 alt=网易中文排行榜 ></a>");</script><script> document.write("<a href=http://best.netease.com/cgi-bin/view/viewbasic.cgi?rkai target=_blank> <img style=visibility:hidden src=http://best.netease.com/cgi-bin/log.cgi?user=rkai&refer="+escape(document.referrer)+"&cur="+escape(document.URL)+" border=0 alt=网易中文排行榜 width=15 height=15></a>");</script><A HREF="http://best.nease.net/cgi-bin/view/viewbasic.cgi?cpcw" TARGET="_blank"><IMG SRC="http://best.nease.net/cgi-bin/log.cgi?user=cpcw" style="visibility:hidden"/></A><br><iframe frameborder="0" scrolling="no" src="http://count.yesky.com/servlet/count?articleno=103216" height="0" width="100%"></iframe></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -