在Treeview中节点的data属性中保存记录类型及其消除的办法
一、保存记录类型在data指针中:
type
Trec=record
text:string;
left,top,width,height:Integer;
end;
TPRec = ^TRec;
var
h,lh,w,tp,lt,m,firstp:Integer;
ht:THeadTreeNode;
currentnode,pnode:TTreeNode;
hh,ss,firsttext:string;
ntrec:TPrec;
begin
firsttext:=hnode.Text;
ht:=hnode;
m:=0;
while True do
begin
w:=ht.Width;
New(ntrec);
if w>0 then
begin
hh:=ht.Text;
lh:=ht.GetLevel;
h:=ht.Height;
if lh=1 then
i:=0;
//ss:='left:'+inttostr(j)+',top:'+inttostr(i)+',h:'+inttostr(h)+',w:'+inttostr(w)+',text:'+hh+',level:'+inttostr(lh);
//Memo1.Lines.Add(ss);
//build tree
if lh=1 then
currentnode:=tree.Items.Add(nil,hh)
else
begin
pnode:=findtreeitem(tree,ht.Host.Text);
currentnode:=tree.Items.AddChild(pnode,hh);
end;
ntrec^.text:=hh;
ntrec^.Top:=i;
ntrec^.Left:=j;
ntrec^.Width:=w;
ntrec^.Height:=h;
currentnode.Data:=ntrec;//CreateMemoFun(pp,hh,'leftcolumns',baNone,nil,'',j, i, w, h);
//ntrec:=TPRec(currentnode.Data);
with ntrec^ do
begin
ss:='nodename:'+hh+',left:'+inttostr(left)+',top:'+inttostr(top)+',width:'+inttostr(width)+',height:'+inttostr(Height)+',level:'+inttostr(lh);
end;
Memo1.Lines.Add(ss);
if m=0 then
firstp:=i
else
i:=firstp;
end else //跳过不可见列
w:=0;
if Assigned(ht.Child) then
begin
//tmph:=i;
i:=i+h;
getheaditems(pp,ht.Child,i,j,zh,tmph,tree);
end else
begin
j:=j+w;
zh:=i+h;
//i:=tmph;
end;
ht:=ht.Next;
m:=m+1;
if ht.Text=firsttext then
begin
Break;
end;
end;
end;
type
Trec=record
text:string;
left,top,width,height:Integer;
end;
TPRec = ^TRec;
var
tnode,fn:THeadTreeNode;
level,ss:string;
i:Integer;
begin
with TreeView1 do
begin
for I := 0 to Items.Count-1 do
begin
level:=IntToStr(items[i].Level);
if assigned(TPRec(items[i].Data)) then
begin
dispose(TPRec(items[i].Data));
Memo1.Lines.Add('已释放指针:'+items[i].Text);
end;
ss:='nodename:'+items[i].Text+',level:'+level+',sn:'+inttostr(i);
Memo1.Lines.Add(ss);
end;
end;
end;
在Treeview中节点的data属性中保存记录类型及其消除的办法的更多相关文章
- 006——VUE中的内容与属性中使用javascript表达式的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js中的访问器属性中的getter和setter函数实现数据双向绑定
嗯,之前在读js红宝书的时候,在对象那一章有介绍属性类型.第一种数据类型指的是数据属性,第二种是访问器属性.在初识vue的时候,其双向数据绑定也是基于访问器属性中的getter和setter函数原理来 ...
- IE8中li添加float属性,中英数字混合BUG
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 视图中 jquery 使用data属性
示例:<input id='username' data-id="{$val['id']}" data-userName="{$val['name']}" ...
- jsp <form>表单提交中如何在value属性中写表达式
<input type="text" name="grop_id" value="<%=rs.getString(2)%>" ...
- 多.h项目出现的问题:使用了预编译头依然出现error LNK2005:***obj已在***obj中定义与c++ error C2011: “xxx”:“class”类型重定义解决办法
使用了预编译头依然出现error LNK2005:***obj已在***obj中定义 造成该问题的可能性比较多,本人将在今后遇到时添加进来,今天先放出本人遇到的一种情况. 多重包含含有变量定义的.h文 ...
- PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解
本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...
- HTML 5:你必须知道的data属性
原文:All You Need to Know About the HTML5 Data Attribute 译文:你必须知道HTML 5 的Data属性 译者:dwqs HTML 5的Data属性可 ...
- html 5实用特性之data属性
HTML 5之前,我们必须依赖于class和rel属性来存储需要在网站中使用的数据片段,这种做法有时会在网站的外观和实用性之间产生冲突.而HTML 5 Data属性的存在就能很好满足需要. HTML5 ...
随机推荐
- shell去掉后缀方法
#!/bin/bash olddir=/home/img/luimg newdir=/home/img/luimg/thumb while read line do if [ -f $olddir${ ...
- idea新建项目打包 ,运行jar,并放入maven仓库
1.新建项目(转自:http://www.cnblogs.com/wql025/p/5215570.html) 创建一个新Maven项目 new 一个project 不选择任何Maven模板 起个Gr ...
- scala 遇到过的问题
1:在我安装完scala的插件后,在打开方法的实现类(open implementactions)的时候,抛出这个异常,后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的. ...
- iOS tableView嵌套部分WebView效果实现
对于一些资讯类的app,比如网易新闻,今日头条这样的,他们的文章详情页大部分基本都是tableView中嵌套webView来实现的效果,其中顶部标题,关注按钮等这些可能是原生的,内容部分是webVie ...
- vim-colors-config
在vim中,主题是以插件形式存在.其中系统自带的主题,存放在$VIMRUNTIME/colors文件夹下,以*.vim命名.(注:查看$VIMRUNTIME请在vim中执行 :echo $VIMRUN ...
- android 布局特点
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_cont ...
- Oracle Data Provider for .NET的使用(托管与非托管(一))
目录 简单的概述 简单的使用 非托管系统要求 托管驱动系统要求 其它的注意事项 ODP.NET版本说明 安装ODP.NET 安装非托管驱动 非托管驱动绿色配置 简单的概述 ODP.NET的含义是 Or ...
- js浅度克隆/深度克隆
首先弄明白几个概念: 一. 具体数据类型分为两种: 1.原始数据类型 2.引用数据类型 原始数据类型存储的是对象的实际地址,包括: number.string.boolean.还有两个特殊的nul ...
- Lumen开发:结合Redis实现消息队列(3)
4.运行队列监听器 开启任务监听器 Lumen包含了一个Artisan命令用来运行推送到队列的新任务.你可以使用queue:listen命令运行监听器: php artisan queue:liste ...
- ULN2003A 使用,有坑
8脚接24V负极 9脚接24V正极 16接24V继电器,再接到24V正极 1-7无论给5V 正 或 负,10-16都不能达到24V,越靠近输入端的输出端电压越大,最大的才11V,最小的2.5V 最后发 ...