Delphi TreeView树型框节点拖拽停靠、按条件开始拖拽
OnDragOver处理是否允许放下
procedure TMainForm.TreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var TargetNode, SourceNode: TTreeNode; begin Accept := False; TargetNode := TTreeView(Sender).GetNodeAt(X, Y); if (Source = Sender) and (TargetNode <> nil) then begin Accept := True; SourceNode := TTreeView(Sender).Selected; if TargetNode = SourceNode.Parent then Accept := False; if Accept then begin while (TargetNode.Parent <> nil) and (TargetNode <> SourceNode) do TargetNode := TargetNode.Parent; if TargetNode = SourceNode then Accept := False; end; end; end;
OnDragDrop是放下后节点的处理方法
procedure TMainForm.TreeViewDragDrop(Sender, Source: TObject; X, Y: Integer); var TargetNode, SourceNode: TTreeNode; begin TargetNode := TTreeView(Sender).GetNodeAt(X, Y); if TargetNode <> nil then begin SourceNode := TTreeView(Sender).Selected; TTreeView(Sender).Items.BeginUpdate; SourceNode.MoveTo(TargetNode, naAddChildFirst); TTreeView(Sender).Selected := SourceNode; TTreeView(Sender).Items.EndUpdate; end; end;
另外TreeView本身还需要设定支持拖放,俩个方法
1: 静态设定TreeView可以拖放
procedure TMainForm.FormCreate(Sender: TObject); begin TreeView.DragMode := dmAutomatic; // end;
2: 通过事件动态设定
procedure TMainForm.TreeViewMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button = mbLeft) and (htOnItem in TTreeView(Sender).GetHitTestInfoAt(X, Y)) then //判断是左键并且点击在Item上 begin if (ssCtrl in Shift) then //如果按下了Ctrl键 TTreeView(Sender).BeginDrag(False); //允许拖放 end; end;
Delphi TreeView树型框节点拖拽停靠、按条件开始拖拽相关推荐
- DELPHI TreeView 文件目录树和 设置节点图标 完整
DELPHI TreeView 文件目录树和 设置节点图标 下载地址 http://download.csdn.net/detail/teststudio/6448293 需要制作文档管理软件 ...
- 将DataTable中的数据,根据节点的子父节点的Tag。展示到TreeView树状控件中。
//移除所有分类tvBookType.Nodes.Clear();try{dt = BookTypeServices.GetBookType();}catch (Exception ex){Messa ...
- b树删除节点每次只能删一个吗_面试官,请不要问我B+树了!!
每当我们执行某个 SQL 发现很慢时,都会下意识地反应是否加了索引,那么大家是否有想过加了索引为啥会使数据查找更快呢,索引的底层一般又是用什么结构存储的呢,相信大家看了标题已经有答案了,没错!B+树! ...
- html 树形图可拖拽,HTML5拖拽API实现vue树形拖拽组件
因业务场景需要一个可拖拽修改节点位置的树形组件,因此动手撸了一个,乘此机会摸了一把html5原生拖拽.近期有时间将核心部分代码抽出,简单说下实现方式. 1.树形结构-组件递归使用 树形结构非常简单,t ...
- TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类
Web 开发中经常用到 TreeView 控件,一个很常见的操作就是遍历所有的节点.但是该控件本身并未提供此功能,每次都要手工写递归访问的函数,非常烦琐.所以我写了一个简单的帮助类来解决这个问题,这样 ...
- 数据库表TreeView树的快速生成
数据库表TreeView树的快速生成 根据数据表的内容生成TreeView树状结构,通常的做法就是从顶级开始,然后逐项递归查询遍历生成.这种方法在实现上容易做到,也很容易想到,但是效率比较低,因为数据 ...
- html5拖拽表单设计器,require+jquery+backbone实现拖拽式报表设计器-拖拽式表单设计器...
HTML我帮您-拖拽式报表设计器-拖拽式表单设计器是一个可视化设计器,基于require+jquery+backbone+underscore+bootstrap实现的表单设计器.思想来源于 Layo ...
- delphi Treeview用法
Treeview用于显示按照树形结构进行组织的数据. Treeview控件中一个树形图由节点(TreeNode)和连接线组成.TtreeNode是TTreeview的基本组成单元. ...
- 小程序实现TreeView树多选功能
话不多说,先上效果图: 小程序实现Treeview树多选功能 实现思路 源数据结构 首先我们的数据结构大概是: [{"id": "0","name&q ...
最新文章
- 社区头条:Spring For All 新版上线了!!!
- 笔记本上使用Archlinux[转]
- java中JScrollPane不显示水平滚动条的解决办法
- pandas合并groupby_Pandas-GroupBy,然后在原始表上合并
- hdfs查看目录大小文件大小
- java blueprint_blueprint(蓝本/蓝图)学习笔记
- 一个问题引发的连环血案
- 【图像融合】基于matlab图像融合评价指标【含Matlab源码 789期】
- bp神经网络预测模型流程图,bp神经网络实例分析
- 达梦数据库管理工具介绍
- 乱码转换器在线转换_有了这几款视频下载转换软件,想看的视频都可以随意看了...
- Redis 单线程却能支撑高并发
- foxmai邮件服务器pop,常见pop和stmp服务器地址-foxmail6或outlook邮件管理
- 移动端怎么让底部固定_逆冬:移动端排名应该怎么做?两种匹配移动端实战排名干货分享!...
- react图片剪裁react-cropper
- Excel分列-字母与汉字(前后)
- shell十三问(转)
- 请问网页的在线聊天怎么实现
- day02-Java基础语法以及IDLE的安装和使用
- 客户问我,他都已经提供了那么多硬盘,你们之前也说可以存满90天,为什么监控录像还是没有90天?
热门文章
- 两万字深度讲解系统设计!超详细解析!面试复习必备!
- w3c标准语言的是什么,W3C标准及其规范 - Somuns的个人空间 - OSCHINA - 中文开源技术交流社区...
- linux – Docker:无法添加对接口(不支持操作)
- Kubernetes入门一:介绍及环境准备
- 抖音短视频变现的渠道有哪些
- Android攻城狮AsyncTask
- alios things开发板_AliOS Things这个操作系统怎么样?
- Python numpy.abs和abs函数别再傻傻分不清了
- win10三国志14已停止工作解决方法--win10专业版
- 必须吹吹自己,太厉害了!-简直不敢相信,面试拼多多我只用了15天就成功拿下offer,