如果设置listview的item的checkbox为只读?

liuchcn 2001-02-01 08:38:00
listview的checkboxs设置了为true,viewstyle设置为vsreport;
如果用户只可以看,但不可以选择某item的check,这样应如何设置?
...全文
313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuchcn 2001-02-03
  • 打赏
  • 举报
回复
谢谢ether(void)!
liuchcn 2001-02-02
  • 打赏
  • 举报
回复
to TIYILON(太乙郎):
但有的item是check的,有些不是,强制true或false都好象不行。

在VB中好象是有oncheck事件的,但在delphi中没有。
我想改写ComCtrls.pas中的事件或属性,找到了tlistitem的setchecked过程,但该过程只在用代码设置item.checked:=true时会触发,用键盘或mouse选择时不会触发。
我对vcl、api或消息等不熟悉,不过我想应该可以通过改写ComCtrls.pas来拦截的。
请各位赐教!
TIYILON 2001-02-02
  • 打赏
  • 举报
回复
onclick事件中,强制true,如何?
ether 2001-02-02
  • 打赏
  • 举报
回复
有Changing事件。把AllowChange设置为False:
procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
AllowChange := False;
end;
yiyu 2001-02-02
  • 打赏
  • 举报
回复
那你就自己写个能接收这个事件的控件吧!可以通过修改Delphi的原码!呵呵:)
liuchcn 2001-02-02
  • 打赏
  • 举报
回复
to yiyu(议余):
除了Onclick 和ondbclick ,还要设置onkeydown事件吧,因为按空格键也是可以选择的。
而且如果item数多的话这样的速度可能会比较慢。

我并不是把问题复杂化,只是我记得VB中的listview有oncheck事件,在事件中cancel就可以禁止选择,所以我觉得通过修改vcl或api可以较好的实现这个功能。
yiyu 2001-02-02
  • 打赏
  • 举报
回复
老兄,有没搞错啊! 没必要这么复杂吧!!

我是这样做的:就是给Listview的Onclick 和ondbclick 中将要只读的设为相应的值,不就可以了??
如: listview1.Items[0].Checked:=true;
ListView1.Items[5].Checked:=False;

这样只要你知道第几个是只读的就可以了。

这个方法比较笨但也是没办法的办法了!

呵呵:~)
liuchcn 2001-02-01
  • 打赏
  • 举报
回复
可是这样的话,滚动条也不能动了,如果有多条记录就不能查看了。
enlightenment 2001-02-01
  • 打赏
  • 举报
回复
ListView1.Enabled:=False;

5,386

社区成员

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

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