在ListView的OnSelectItem事件里填写代码: procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); begin if selected then Memo1.Lines.Add(Item.Caption); end;
//树里面的节点就是你的ListView所选择的行 type PMapNode = ^TMapNode; TMapNode = record fCode:String; fName:String;//名称 fPay :String; end;type TForm1 = class(TForm) ListView1: TListView; TreeView1: TTreeView; procedure FormCreate(Sender: TObject); procedure ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); private { Private declarations } function FindTreeNodeOnCode(Tree:TTreeNodes;SearchString:String):Integer; procedure AddChildNode(RootNode:TTreeNode;fName,fPay,fCode:String); public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}{*************************************************************** * 方 法 名 : FindTreeNodeOnCode * 编写目的 : * 作 者 : 黄仁光 * 参 数 : Tree:TTreeNodes;SearchString:String * 结 果 : Integer * 编写日期 :2002年12月28日 ****************************************************************} function TForm1.FindTreeNodeOnCode(Tree:TTreeNodes;SearchString:String):Integer; var CurItem:TTreeNode; Title:String; begin Result := -1; CurItem := Tree.GetFirstNode; while CurItem <> nil do begin Title := CurItem.Text; if AnsiCompareStr(Title,SearchString) = 0 then begin Result := CurItem.AbsoluteIndex; break; end; CurItem := CurItem.GetNext; end; end;procedure TForm1.AddChildNode(RootNode:TTreeNode;fName,fPay,fCode:String); var ChildNode:TTreeNode; pMapChild:PMapNode; begin new(pMapChild); pMapChild^.fName := fName; pMapChild^.fPay := fPay; pMapChild^.fCode := fCode; ChildNode := TreeView1.Items.AddChildObject(RootNode,fCode,pMapChild); end;procedure TForm1.FormCreate(Sender: TObject); begin //向树中添根节点 TreeView1.Items.AddChild(nil,'根节点'); end;procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); var NodeIndex:Integer; begin NodeIndex := FindTreeNodeOnCode(TreeView1.Items,Item.Caption); if NodeIndex = -1 then//如果没有找到 begin AddChildNode(TreeView1.Items[0],Item.SubItems[0],Item.SubItems.Strings[1],Item.Caption); TreeView1.Items[0].Expand(true); end else//如果找到 begin TreeView1.Items.Delete(TreeView1.Items[NodeIndex]); end; end;end.
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if selected then Memo1.Lines.Add(Item.Caption);
end;
type
PMapNode = ^TMapNode;
TMapNode = record
fCode:String;
fName:String;//名称
fPay :String;
end;type
TForm1 = class(TForm)
ListView1: TListView;
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
private
{ Private declarations }
function FindTreeNodeOnCode(Tree:TTreeNodes;SearchString:String):Integer;
procedure AddChildNode(RootNode:TTreeNode;fName,fPay,fCode:String);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}{***************************************************************
* 方 法 名 : FindTreeNodeOnCode
* 编写目的 :
* 作 者 : 黄仁光
* 参 数 : Tree:TTreeNodes;SearchString:String
* 结 果 : Integer
* 编写日期 :2002年12月28日
****************************************************************}
function TForm1.FindTreeNodeOnCode(Tree:TTreeNodes;SearchString:String):Integer;
var
CurItem:TTreeNode;
Title:String;
begin
Result := -1;
CurItem := Tree.GetFirstNode;
while CurItem <> nil do
begin
Title := CurItem.Text;
if AnsiCompareStr(Title,SearchString) = 0 then
begin
Result := CurItem.AbsoluteIndex;
break;
end;
CurItem := CurItem.GetNext;
end;
end;procedure TForm1.AddChildNode(RootNode:TTreeNode;fName,fPay,fCode:String);
var
ChildNode:TTreeNode;
pMapChild:PMapNode;
begin
new(pMapChild);
pMapChild^.fName := fName;
pMapChild^.fPay := fPay;
pMapChild^.fCode := fCode;
ChildNode := TreeView1.Items.AddChildObject(RootNode,fCode,pMapChild);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
//向树中添根节点
TreeView1.Items.AddChild(nil,'根节点');
end;procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
var
NodeIndex:Integer;
begin
NodeIndex := FindTreeNodeOnCode(TreeView1.Items,Item.Caption);
if NodeIndex = -1 then//如果没有找到
begin
AddChildNode(TreeView1.Items[0],Item.SubItems[0],Item.SubItems.Strings[1],Item.Caption);
TreeView1.Items[0].Expand(true);
end
else//如果找到
begin
TreeView1.Items.Delete(TreeView1.Items[NodeIndex]);
end;
end;end.