使用 IntraWeb (19) - 基本控件之 TIWTreeView

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


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

时间: 2025-01-25 05:51:28

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

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

TIWTemplateProcessorHTML //使用外部的 html 文件做模板 TIWLayoutMgrHTML //直接输入 Html 文本做模板 TIWLayoutMgrForm //这应该只是内部使用的东西, 对用户没有意义 {需要把它们关联到窗体的 LayoutMgr 属性; 主模板需要通过 IWServerController.MasterTemplate 指定} TIWTemplateProcessorHTML 所在单元及继承链: IWTemplateProcessorHTM

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

TIWMenu 的任务是让原来的 TMainMenu 呈现在网页上, 通过其 AttachedMenu 属性关联一个 TMainMenu 是必需的. TIWMenu 所在单元及继承链: IWCompMenu.TIWMenu 主要成员: property TextOffset: Integer //菜单文本偏移(只读) property AttachedMenu: TMainMenu //指定要包装的 TMainMenu property ItemSpacing: TIWSpaceItems //

使用 IntraWeb (13) - 基本控件之 TIWLabel、TIWLink、TIWURL、TIWURLWindow

TIWLabel    // TIWLink      //内部链接 TIWURL      //外部链接 TIWURLWindow //页内框架, 就是 <iframe></iframe> TIWLabel 所在单元及继承链:IWCompLabel.TIWLabel < TIWCustomLabel < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl < TIWVCLBaseControl

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

TIWList //列表; 它对应 Html 中的 OL.LI(某些选项下会用表格模拟); TIWListbox 和 TIWComboBox 则对应 Html 在的 Option TIWListbox //列表框 TIWComboBox //组合下拉框 TIWOrderedListbox //可手动调整顺序的列表; 好像是新增的, 还不成熟 TIWList 所在单元及继承链: IWHTMLControls.TIWList 主要成员: property Items: TStringList //

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

TIWCalendar: 日历控件, 继承于 TIWCustomGrid, 所以它和 TIWGrid 共同属性特多. 它的 Cell 是 TIWCalendarCell 对象, 直接从 TIWGridCell 继承. TIWCalendar 所在单元及继承链: IWCompCalendar.TIWCalendar 主要成员: property Cell[const ARow: Integer, const AColumn: Integer]: TIWCalendarCell // propert

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

TIWTimer //和 TTimer 没多大区别, 它的默认事件现在是异步的(OnAsyncTimer), 在网络上使用 OnTimer 肯定是非常糟糕的 TIWProgressBar //进度条 TIWProgressIndicator //进度提示器; 这是个新东西, 非常好; 当碰到时间较长的加载时(同步或异步)都可以用用; 使用前需要先关联到窗体的 ProgressIndicator 属性 TIWTimeEdit //个人认为这个东西一点用也没有; 只是给个分钟数按 8 小时换算成天.

使用 IntraWeb (17) - 基本控件之 TIWRadioButton、TIWRadioGroup、TIWCheckBox

TIWRadioButton //单选 TIWRadioGroup //单选组 TIWCheckBox //复选 TIWRadioButton 所在单元及继承链: IWCompRadioButton.TIWRadioButton 主要成员: property Editable: Boolean // property Checked: Boolean // property Group: string //分组名; 在统一母体中的单选按钮, 组名相同者互斥 property Value: str

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

这应该是 IW 中最重要的容器了, 和它同父的还有 TIWTabControl TIWRegion 所在单元及继承链: IWRegion.TIWRegion 主要成员: property Align: TAlign property Anchors: TAnchors property BorderOptions: TIWContainerBorderOptions //设置边框的宽度.颜色.样式 property Color: TIWColor property ClipRegion: Boo

使用 IntraWeb (21) - 基本控件之 TIWTabControl

TIWTabControl 包含的是 TIWTabPage; 设计时通过右键菜单 Add Page 添加(再给页面添加东西时一定要先选定页面); 下面例子是动态添加的. TIWTabControl 所在单元及继承链: IWCompTabControl.TIWTabControl 主要成员: property Pages: TList //TIWTabPage 对象的集合; 但它是 TList 类型, 使用前需转换下 property ActiveTabFont: TIWFont //当前 Tab