delphi中listview单行颜色问题.

yangzl0123 2008-04-25 10:03:10
我设置了listview中的checkbox属性为TRUE.
在onclick事件中加入:
procedure TMainForm.lvRecClick(Sender: TObject);
var
li: TListItem;
begin
li := lvRec.Selected;
if li = nil then Exit;
if li.Checked then
li.Checked := False
else
li.Checked := True;
end;
设计思路:
listiew左侧的checkbox和点击某一行时,都把那行的颜色换一下
找了些质料没有解决.
请高手看看,这事应该怎么做....
...全文
840 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhaogang82 2008-04-30
  • 打赏
  • 举报
回复
不好意思,有几天没上CSDN了
确认文件替换,这个其实我也不知道的,我的方法只是自己做FORM,然后根据选择的按钮来处理
按你现在的代码,我试了一下没什么问题,
究竟你在onchange事件里写了什么呢?
还有你的
if li.Checked then
li.Checked := False
else
li.Checked := True;
可以替换成
li.checked := Not li.checked;
这样代码可以精简,而且容易理解
yangzl0123 2008-04-25
  • 打赏
  • 举报
回复
呵呵,果然高手.
现在还有一个问题,listview么有onCheck事件.
我用了onChange事件,就产生问题:
假如我现在第三行,然后我选择了第五行.
procedure TMainForm.lvRecClick(Sender: TObject);
var
li: TListItem;
begin
li := lvRec.Selected;
if li = nil then Exit;
if li.Checked then
li.Checked := False
else
li.Checked := True;
end;
受这个代码的影响,第三和第五行都会改变checked的状态,这么解决这个问题.

虽然CSND上高手很多.但是我从来都没有碰到一个,很兴奋....
谢谢你 liuhaogang82 ....

如果知道,delphi中如何弹出类似windows的确认文件替换,那就更好了..

再谢一次....(^_^)
liuhaogang82 2008-04-25
  • 打赏
  • 举报
回复

procedure MainForm.lvRecCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if (Item.Checked) or (Item.Selected) then
Sender.Canvas.Brush.Color := clgray
else
Sender.Canvas.Brush.Color := clWindow;
end;

说漏了应该是
liuhaogang82 2008-04-25
  • 打赏
  • 举报
回复
listiew左侧的checkbox和点击某一行时
----------------------------------
对这句不是很理解
主要是不理解什么叫做listview左侧的checkbox时这句
意思是不是checkbox被勾选时?
如果是这样的话


procedure MainForm.lvRecCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if (Item.Checked) or (Item.Selected) then
Sender.Brush.Color := clgray
else
Sender.Brush.Color := clWindow;
end;

5,392

社区成员

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

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