关于TListView的一个小问题(100分)

  • 主题发起人 主题发起人 foger
  • 开始时间 开始时间
F

foger

Unregistered / Unconfirmed
GUEST, unregistred user!
TListView的一行已经checked过了,
然后由某个事件置为false,
并且让这行不能再被check。
请问该如何实现?
或者请问在小方框中打钩的是触发哪个事件?
我的问题关键不是如何发现checked,
而是如何禁止一个ietm不能再被选择,
而且让它的checked永远为false,
也就是哪个事件是发生在我点中那个小方框时的?
 
在ListView 的SelectItem事件里根据情况把哪个Selected为false应该就可以了
 
代码如下:如果你想使第一个节点不能被选中
if Item.Index=0 then
Item.Selected:=false;
 
还是不行,
问题的关键是我找不到一个相应点击小方框的事件,
slectitem事件只相应点击到那行时,但点中小方框时并没有相应。
 
没人可以解答吗?帮帮忙啊
 
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
with CheckListBox1 do begin
if checked[ItemIndex] then checked[ItemIndex]:=False;
end;
end;

CheckListBox的OnClick事件发生在CheckBox被点击变化状态以后,可以处理
 
同意puyd,
但如果要判定该项是否是第一次被选择,可能要用到一个动态数组(与List的Item对应,来记录是否
是第一次点击)或者用Item的Object存储这一状态。
 
//可以实现你说的功能
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Item.Index <> 0 then //你要限制的节点
Exit;
if ctState in [Change] then
Item.Checked := False;
end;
 
svw0506的答案正是我想要的,多谢了!
也同时感谢其他几位的热心帮助。
 
后退
顶部