TListBox TListView TTreeView 可以直接存对象 和指针
TListBox TListView 都是可以通过通过.AddItem(Item: string; AObject: TObject); 来存储对象
listview 类似 gridview , 表现很丰富, 可以显示图标,有多列
LISTBOX 很简单, 就一列,就是简易的 COMBOBOX
《TTreeNode添加数根,子树根,任何一个TTreeNode可以存指针,查找》
而TTreeView 可以通过
function TTreeNodes.AddChild(Parent: TTreeNode; const S: string): TTreeNode;
function TTreeNodes..Add(Sibling: TTreeNode; const S: string): TTreeNode;
function TTreeNodes..AddObject(Sibling: TTreeNode; const S: string;Ptr: TCustomData): TTreeNode; //TCustomData就是指针
.Items.Add( ).Data :=存的指针
总结:它们都可以存放对象,这样做左边的导航条
TListView 存窗体,取窗体方法:
frmReleateGQAccount := TfrmReleateGQAccount.Create(nil); self.lvNavBar.AddItem('账户设置',frmReleateGQAccount); //存进去 for name in SysSetingFormManager.SysSetingForms.Keys do begin self.lvNavBar.AddItem(name,SysSetingFormManager.SysSetingForms[name]); end; lvNavBar.Items[0].Selected := True; //指定第一个 procedure TfrmSystemSetting.lvNavBarSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); var frm:TForm; begin if(not Selected) then exit; frm:=TForm(item.Data); //是通过这样取值的 if(not Assigned(frm)) then exit; ShowForm(frm); end; procedure TfrmSystemSetting.ShowForm(frm:TForm); begin frm.Parent := Self.scrlbx1; //将窗体放在 TScrollBox 上面 frm.Align := alClient; frm.show; Self.scrlbx1.VertScrollBar.Position:=0; end;