这是个饱受非议的控件; 我通过尝试, 理解了非议, 也能理解作者. 总之向作者的思路靠拢吧, 还是不错的.


TIWTreeView 所在单元及继承链:
IWCompTreeview.TIWTreeView

主要成员:


property Items: TIWTreeViewItems    //所有 Item 的集合
property Selected: TIWTreeViewItem //在这里, 叫做 "当前 Item" 更合适
property AutoIndent: Boolean //是否自动缩排; 默认 True
property DoServerSidePlusMinus: Boolean //如果是 True, Html 中不包含被折叠的部分, 需要展开时再从服务器读取; 相反, Html 中包含所有节点; 默认 False
property TreeViewImages: TIWTreeViewImages //通过其 OpenFolderImage、ClosedFolderImage、DocumentImage、PlusImage、MinusImage 子属性指定五个图标
property ItemSpace: TIWTreeViewItemSpace //调整纵、横间距
property UseItemImages: Boolean //是否使用 Item 标志图像
property TreeViewImagesWidth: Integer //图标宽度
property TreeViewImagesHeigth: Integer //图标高度
property UseFrame: Boolean //是否使用框架
property ScrollToName: string //滚动到指定名称的 Item
property ScrollBars: TIWScrollStyle //滚动条选项
property WrapItems: Boolean //Item 文本能否换行; 默认 False
property DoRefreshControl: Boolean //在修改某些属性时必须让它为 True 才会有效 property TreeItemClick: TIWTreeViewClickEvent //通过它可以为每个 Item 指定 Click 事件
property OnPlusMinus: TTreeViewPlusMinusProc //每当展开或收拢子节点时 procedure ClearAll //

TIWTreeViewItemsTIWTreeViewItem:


{IWCompTreeview.TIWTreeViewItems

测试:

{在空白窗体上放 IWRegion1 和 IWTreeView1; 下面代码在设计时实现会更方便}
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
var
fItem: TIWTreeViewItem;
begin
IWRegion1.Width := 200;
IWRegion1.Align := alLeft;
IWRegion1.Color := clWebYellow;
LinkColor := clWebRed; //如果给 TIWTreeViewItem 指定了 OnClick 事件, 它会被呈现为链接 IWTreeView1.Parent := IWRegion1;
IWTreeView1.Align := alClient; IWTreeView1.Items.Add(nil).Caption := 'ItemA';
IWTreeView1.Items.Add(nil).Caption := 'ItemB';
IWTreeView1.Items.Add(nil).Caption := 'ItemC'; fItem := IWTreeView1.Items.Add(nil);
fItem.Caption := 'ItemD';
IWTreeView1.Items.Add(fItem).Caption := 'ItemD1';
IWTreeView1.Items.Add(fItem).Caption := 'ItemD2'; fItem := IWTreeView1.Items.Add(fItem);
fItem.Caption := 'ItemD3';
IWTreeView1.Items.Add(fItem).Caption := 'ItemD31';
IWTreeView1.Items.Add(fItem).Caption := 'ItemD32';
end; {尽管可以为每个 Item 指定 OnClick, 但我觉得用 TreeItemClick 事件一起指定更方便; 事件中可以通过其 Tag、ID、Name、Caption等来区别}
procedure TIWForm1.IWTreeView1TreeItemClick(Sender: TObject; ATreeViewItem: TIWTreeViewItem);
begin
if not ATreeViewItem.HasChild then
WebApplication.ShowMessage(ATreeViewItem.Caption);
end;

效果图:


使用 IntraWeb (19) - 基本控件之 TIWTreeView的更多相关文章

  1. 使用 IntraWeb (24) - 基本控件之 TIWFileUploader、TIWFile

    TIWFileUploader 是基于 Ajax 的上传控件, 最初是 Andrew Valums 开发, 从 IntraWeb XIV 纳入并替换 TIWFile. 虽然从组件面板上还能看到 TIW ...

  2. 使用 IntraWeb (29) - 基本控件之 TIWAutherList、TIWAutherINI、TIWAutherEvent

    TIWAutherList //通过一组户名与密码验证登陆 TIWAutherINI //通过记录户名与密码信息的 #Auth.ini 文件验证登陆 TIWAutherEvent //通过其 OnCh ...

  3. 使用 IntraWeb (28) - 基本控件之 TIWTemplateProcessorHTML、TIWLayoutMgrHTML、TIWLayoutMgrForm

    TIWTemplateProcessorHTML //使用外部的 html 文件做模板 TIWLayoutMgrHTML //直接输入 Html 文本做模板 TIWLayoutMgrForm //这应 ...

  4. 使用 IntraWeb (26) - 基本控件之 TIWMenu

    TIWMenu 的任务是让原来的 TMainMenu 呈现在网页上, 通过其 AttachedMenu 属性关联一个 TMainMenu 是必需的. TIWMenu 所在单元及继承链: IWCompM ...

  5. 使用 IntraWeb (25) - 基本控件之 TIWRegion

    这应该是 IW 中最重要的容器了, 和它同父的还有 TIWTabControl TIWRegion 所在单元及继承链: IWRegion.TIWRegion 主要成员: property Align: ...

  6. 使用 IntraWeb (23) - 基本控件之 TIWTimer、TIWProgressBar、TIWProgressIndicator、TIWTimeEdit

    TIWTimer //和 TTimer 没多大区别, 它的默认事件现在是异步的(OnAsyncTimer), 在网络上使用 OnTimer 肯定是非常糟糕的 TIWProgressBar //进度条 ...

  7. 使用 IntraWeb (22) - 基本控件之 TIWCalendar

    TIWCalendar: 日历控件, 继承于 TIWCustomGrid, 所以它和 TIWGrid 共同属性特多. 它的 Cell 是 TIWCalendarCell 对象, 直接从 TIWGrid ...

  8. 使用 IntraWeb (20) - 基本控件之 TIWGrid

    TIWGrid 最终通过 Html Table 呈现; 其每个 Cell 都是一个 TIWGridCell 对象, Cell 对象的 Control 属性非常好, 可以非常方便地嵌入其他控件. TIW ...

  9. 使用 IntraWeb (16) - 基本控件之 TIWList、TIWListbox、TIWComboBox、TIWOrderedListbox

    TIWList //列表; 它对应 Html 中的 OL.LI(某些选项下会用表格模拟); TIWListbox 和 TIWComboBox 则对应 Html 在的 Option TIWListbox ...

随机推荐

  1. js 隐藏代码生成工具

    昨天写了篇<js 奇葩技巧之隐藏代码>,今天来写个工具方便大家生成吧.在昨天算法基础上优化了解码算法,采用立即函数运行.有两种模式可供选择: 1. eval  全局模式,比如你定义的 va ...

  2. [整理]Error: [ngRepeat:dupes]的解决方法

    sdfsadf <div class="pageNum middle PT10"> <a href="javascript:void(0);" ...

  3. # 20155337 2016-2017-2 《Java程序设计》第六周学习总结

    20155337 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 •串流(Stream): 数据有来源及目的地,衔接两者的是串流对象.如果要将数据从来源取出, ...

  4. 自己动手开发Socks5代理服务器

    一.Socks5协议简介 socks5是基于传输层的协议,客户端和服务器经过两次握手协商之后服务端为客户端建立一条到目标服务器的通道,在传输层转发TCP/UDP流量. 关于socks5协议规范,到处都 ...

  5. 让浏览器重新下载css文件,解决不刷新缓存的问题

    网站页面源代码中的css文件和js文件后面带一个问号,后面跟着一连串数字或字符,问号起不到实际作用,仅能当作后缀,如果用问号加参数的方法,可以添加版本号等信息 它的作用有:1.作为版本号,让自己方便记 ...

  6. Comparable和Comparator的区别&Collections.sort的两种用法

    在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...

  7. Servlet笔记7--HttpServletRequest介绍

    通过HttpServletRequest获取表单提交的数据: 前端页面: <html> <head> <title>register</title> & ...

  8. PCA和白化练习之处理二维数据

    在很多情况下,我们要处理的数据的维度很高,需要提取主要的特征进行分析这就是PCA(主成分分析),白化是为了减少各个特征之间的冗余,因为在许多自然数据中,各个特征之间往往存在着一种关联,为了减少特征之间 ...

  9. MySQL 5.6.10 跨平台GTID复制实践

    根据业务需要,建立MySQL复制来实现数据冗余. 1:binlog_format   默认值是:statement 有效值: ROW,基于行的复制 STATEMENT 基于语句级别的复制 MASTER ...

  10. 善用backtrace解决大问题【转】

    转自:https://www.2cto.com/kf/201107/97270.html 一.用途: 主要用于程序异常退出时寻找错误原因 二.功能: 回溯堆栈,简单的说就是可以列出当前函数调用关系 三 ...