文档章节

学习 TTreeView [9] - OnDragDrop、OnDragOver

涂孟超
 涂孟超
发布于 2014/09/26 15:30
字数 231
阅读 7
收藏 0
本例效果图:


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  stream: TStream;
begin
  TreeView1.Align := alLeft;
  stream := TMemoryStream.Create;
  with TStringList.Create do begin
    Add('一连长');
    Add(' 一排长');
    Add('  一班长');
    Add('   战士1');
    Add('   战士2');
    Add('   战士3');
    Add('   战士4');
    Add('  二班长');
    Add('  三班长');
    Add(' 二排长');
    Add(' 三排长');
    Add('二连长');
    Add('三连长');
    SaveToStream(stream);
    Free;
  end;
  stream.Position := 0;
  TreeView1.LoadFromStream(stream);
  stream.Free;
  TreeView1.DragMode := dmAutomatic; {允许自动拖放}
end;

{只允许拖动子节点}
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := not TTreeView(Source).Selected.HasChildren;
end;

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  n1,n2: TTreeNode;
begin
  if Sender=Source then
  begin
    n1 := TTreeView(Sender).Selected;    {源}
    n2 := TTreeView(Sender).DropTarget;  {目标}
    TreeView1.Items.Insert(n2, n1.Text); {目标前插入}
    n1.Delete;                           {删除源}
  end;
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/03/13/1104035.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
学习笔记3(javascript事件列表详解)

最近在学习javascript,就顺便把常用事件给大家整理整理,也让自己加深印象。不足之处欢迎各位补充。 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 onmousedown ...

彭博
2012/02/29
873
1
govcl 1.2.3 正式发布,跨平台 Go 语言 GUI 库

govcl是一款简单+小巧+原生的go语言GUI库,依靠着Delphi VCL/Lazarus LCL两棵大树使得写一个GUI软件不再是一件麻烦的事。 本次更新: -- govcl -- 1、liblcl添加TApplication.RestoreTopMost...

不在乎y
05/14
1K
5
govcl v1.0.4 释出,GO 语言 UI 组件库

1、增加了TListView、TTreeView、TPageControl几个事件; 2、增加了TListView、TTreeView排序过程; 3、修复了New控件时使用CheckPtr增加安全检测; 4、增加了TListView、TTreeView排序,图像...

不在乎y
2017/12/21
2.7K
14
HTML5 拖放(Drag 和 Drop)

拖放(Drag 和 drop)是 HTML5 标准的组成部分。 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置。 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。 浏览器支持 Internet...

wybo521
2016/01/06
21
0
依据数据集 进行 树 的构造(treeview & dataset) 方法一

type PDepData=^DepData; DepData = record ID: Integer; DepID: string; DepName: string; end; procedure FreeTV(tv: TTreeview); var i: Integer; begin for i := 0 to tv.Items.Count - ......

vga
2015/11/14
87
0

没有更多内容

加载失败,请刷新页面

加载更多

Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
9分钟前
5
0
Docker下实现MySQL主从(读、写分离)同步配置

docker下实现两个(或多个)mysql容器的主、从数据库同步配置,首先要明白docker容器的相互通信关系,默认是使用的bridge模式: 也就是说,通过docker run命令创建docker容器是每个容器都有自己...

源哥L
18分钟前
10
0
一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
37分钟前
15
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
今天
23
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
今天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部