怎样才能保持listview的焦点

ibicf 2004-06-22 03:06:24
我想完成listview中的数据修改的功能,但当我选中了数据后再去点edit,这是listview已经失去焦点了,我该怎么控制点击edit的时候不让listview失去焦点?谢了先
...全文
330 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfanreal 2004-06-24
  • 打赏
  • 举报
回复
如果你只是想显示选择的项的话,就将选中的行变色就可以了。
cronuz 2004-06-23
  • 打赏
  • 举报
回复
hehe, 我試了你的:ListItem.DropTarget := true;

它并不是没有失去焦点、実際上”焦点”指的是光標(Cursor)。
焦点是失去了、只是留下选中状态的藍光条...
qinmaofan 2004-06-22
  • 打赏
  • 举报
回复
当你点击 edit 按钮的时候,edit获得了焦点。但是你可以在 edit 的单击事件 Listview1.SetFocus。

cronuz 2004-06-22
  • 打赏
  • 举报
回复
ListItem := ListViewzx.Selected;
ListView.Selected.MakeVisible(true); //用此行試試?
wenjianyao 2004-06-22
  • 打赏
  • 举报
回复
选中的时候记住listbox中的值,在edit的时候编码让这个值处于选中状态就可以了
绝对没有问题,我以前做过的,
ibicf 2004-06-22
  • 打赏
  • 举报
回复
我在edit的点击事件中加入了如下代码
var
ListItem: TListItem;
begin
if Listviewzx.selected <> nil then
begin
Listviewzx.ItemFocused;
ListItem := ListViewzx.Selected;
ListItem.DropTarget := true;
end;
end;
可以实现功能,但是有明显的刷新,嗬嗬,先凑活一下了
ibicf 2004-06-22
  • 打赏
  • 举报
回复
我现在这样做的,当数据上下移动的时候,我用的如下的方法
向上移
var
iIndex: Integer;
ListItem: TListItem;
i: Integer;
begin
if ListViewzx.Selected = nil then exit;
iIndex := ListViewzx.Selected.Index ;
if iIndex = 0 then exit;
ListViewzx.Items.BeginUpdate;
ListItem := ListViewzx.Items.Insert(iIndex-1);
ListItem.Caption := ListViewzx.Selected.Caption;
for i := 0 to ListViewzx.Selected.SubItems.Count-1 do
begin
ListItem.SubItems.Add(ListViewzx.Selected.SubItems.Strings[i]);
end;
ListViewzx.Selected := ListItem;
ListItem.DropTarget := true; //显示选中
ListViewzx.Items.Delete(iIndex+1);
ListViewzx.Items.EndUpdate;

它的效果可以看到你选中的数据当你点击上移的时候,数据可以上移,并且示成选中的状态。这样看起来很直观,但是我现在想修改其中的一项数据,也就是在点击edit的时候,让listview中的已经选中数据保持选中的状态,这样做效果比较直观,但我暂时不知道该怎么样控制,谢谢
江宁侯哥 2004-06-22
  • 打赏
  • 举报
回复
不可能做到的。
你可以
listview1.hideSelection :=false;这样你可以知道选中行在什么地方,当是不可能做到你要求那样。
xzhifei 2004-06-22
  • 打赏
  • 举报
回复
你如果可以在不暂停的吃东西时候说话,我就告诉你怎么处理这个问题!!:)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧