如果设置listview的item的checkbox为只读? onclick事件中,强制true,如何? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to TIYILON(太乙郎):但有的item是check的,有些不是,强制true或false都好象不行。在VB中好象是有oncheck事件的,但在delphi中没有。我想改写ComCtrls.pas中的事件或属性,找到了tlistitem的setchecked过程,但该过程只在用代码设置item.checked:=true时会触发,用键盘或mouse选择时不会触发。我对vcl、api或消息等不熟悉,不过我想应该可以通过改写ComCtrls.pas来拦截的。请各位赐教! 老兄,有没搞错啊! 没必要这么复杂吧!!我是这样做的:就是给Listview的Onclick 和ondbclick 中将要只读的设为相应的值,不就可以了?? 如: listview1.Items[0].Checked:=true; ListView1.Items[5].Checked:=False;这样只要你知道第几个是只读的就可以了。这个方法比较笨但也是没办法的办法了!呵呵:~) to yiyu(议余):除了Onclick 和ondbclick ,还要设置onkeydown事件吧,因为按空格键也是可以选择的。而且如果item数多的话这样的速度可能会比较慢。我并不是把问题复杂化,只是我记得VB中的listview有oncheck事件,在事件中cancel就可以禁止选择,所以我觉得通过修改vcl或api可以较好的实现这个功能。 那你就自己写个能接收这个事件的控件吧!可以通过修改Delphi的原码!呵呵:) 有Changing事件。把AllowChange设置为False:procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean);begin AllowChange := False;end; 一个语法转换的问题 消息可以注册吗? 请教动态合并单元格的问题 sql语句保存stringgrid表数据 cxGrid有查找的功能吗 用webbrowser怎样显示bmp图象 送我一个dbgrideh,我给他30分~ 如何使一个数据表在增加记录时某个字段值以A、B、C、D... 的顺序递增? 谁有:数据库的表数据 与 XML 的相互转换 的源码和控件...??? 请教一个问题,在线加分200,比较简单,但我不懂 怎样控制lzh压缩比? DELPHI初学者的书
但有的item是check的,有些不是,强制true或false都好象不行。在VB中好象是有oncheck事件的,但在delphi中没有。
我想改写ComCtrls.pas中的事件或属性,找到了tlistitem的setchecked过程,但该过程只在用代码设置item.checked:=true时会触发,用键盘或mouse选择时不会触发。
我对vcl、api或消息等不熟悉,不过我想应该可以通过改写ComCtrls.pas来拦截的。
请各位赐教!
如: listview1.Items[0].Checked:=true;
ListView1.Items[5].Checked:=False;这样只要你知道第几个是只读的就可以了。这个方法比较笨但也是没办法的办法了!呵呵:~)
除了Onclick 和ondbclick ,还要设置onkeydown事件吧,因为按空格键也是可以选择的。
而且如果item数多的话这样的速度可能会比较慢。我并不是把问题复杂化,只是我记得VB中的listview有oncheck事件,在事件中cancel就可以禁止选择,所以我觉得通过修改vcl或api可以较好的实现这个功能。
procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
AllowChange := False;
end;