关于控制listview焦点问题。(50分)

  • 主题发起人 主题发起人 lxmzm
  • 开始时间 开始时间
L

lxmzm

Unregistered / Unconfirmed
GUEST, unregistred user!
我在listview中增加了几个item,同时写了个查询模块,在查询模块中输入需要查询的内容,
按OK按纽后,在listview中根据item的caption,利用StrPos,判断哪行满足需要,但如何将
焦点定位在满足条件的记录上?

利用listview.SetFocus;不行
。。。
if StrPos(pchar(items.caption), pchar(edit1.Text)) <> nil
 
在循环中选择,符合条件的 listview.Selected ,之后break;
for i := 0 to inf_Tree.Items.Count - 1 do
begin
if StrPos(pchar(items.caption), pchar(edit1.Text)) <> nil then
begin
inf_Tree.Selected.Selected:=true;
break;
end;
end;
 
listview不能定位在符合条件的记录上
 
設置滿足條行的selected=.T. 以及focus=.T.就可以了!
 
for i := 0 to inf_Tree.Items.Count - 1 do
begin
if inf_Tree.Items.Text=trim(edit1.Text) then //或者加入你的条件
begin
inf_Tree.Items.Selected := True
break;
end;
end;

现在试一下
 
修改上面的代碼:
for i := 0 to inf_Tree.Items.Count - 1 do
begin
if inf_Tree.Items.Text=trim(edit1.Text) then //或者加入你的条件
begin
inf_Tree.Items.Selected := True;
inf_Tree.Items.focused := True;
break;
end;
end;

 
如果记录很多,如何跳到该记录上呢?
以上需要进行翻页才能看到,而且出现多个被选中
 
for i := 0 to inf_Tree.Items.Count - 1 do
begin
if inf_Tree.Items.Text=trim(edit1.Text) then //或者加入你的条件
begin
inf_Tree.Items.Selected := True;
inf_Tree.Items.focused := True;
inf_Tree.Items.MakeVisible(True);
break;
end;
end;

 
还是没有达到预期的效果
 
ListView1.Items[10].Selected := true;
ListView1.SetFocus;
ListView1.Items[10].MakeVisible(true);
 
应该可以了。
 
多人接受答案了。
 
后退
顶部