TListbox中的item根据内容显示不同颜色的方法
2015-12-20 16:34
459 查看
ListBox1 的 Style 属性改为 lbOwnerDrawVariable
在ListBox的OnDrawItem事件裡,根据item的值,改变Canvas属性
或者,
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin //字体用原来默认的颜色
if Odd(index) then //当items的index为奇数时的颜色
begin
listbox1.Canvas.Brush.Color:=clwindow;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end
else //当items的index为偶数时的颜色
begin
listbox1.Canvas.Brush.Color:=clinactivecaptiontext;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end;
if odSelected in state then //当选定时的颜色
begin
listbox1.Canvas.Brush.Color:=clhighlight;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end;
end;
在ListBox的OnDrawItem事件裡,根据item的值,改变Canvas属性
procedure TForm2.ListBox1DrawItem(Control: TWinControl; Index: integer; Rect: TRect; State: TOwnerDrawState); var R: TRect; begin with ListBox1.Canvas do begin // 背景色 if State * [odSelected, odFocused] <> [] then Brush.Color := clRed else Brush.Color := ListBox1.Color; FillRect(Rect); // 文字 if State * [odSelected, odFocused] <> [] then Brush.Color := clHighlightText else Brush.Color := ListBox1.Font.Color; R := Rect; InflateRect(R, -4, 0); SetBkMode(Handle, TRANSPARENT); DrawText(Handle, ListBox1.Items[Index], -1, R, DT_SINGLELINE or DT_VCENTER); // 如果有焦点,则再绘制一次焦点框,达到擦除的目的 if odFocused in State then DrawFocusRect(Rect); end; end;
或者,
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin //字体用原来默认的颜色
if Odd(index) then //当items的index为奇数时的颜色
begin
listbox1.Canvas.Brush.Color:=clwindow;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end
else //当items的index为偶数时的颜色
begin
listbox1.Canvas.Brush.Color:=clinactivecaptiontext;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end;
if odSelected in state then //当选定时的颜色
begin
listbox1.Canvas.Brush.Color:=clhighlight;
ListBox1.Canvas.TextRect(Rect,rect.Left,Rect.Top,ListBox1.Items[index]);
end;
end;
相关文章推荐
- POJ 题目3009 Curling 2.0(DFS)
- 总结C++中三种关于"new"的使用方法
- 计算机书单
- 实现拖放的步骤,有关的事件,方法
- HTML5新标签的用法和HTML4的区别
- React用JS 模拟动画介绍
- WordPress禁止版本修订历史、自动保存和自动草稿最新方法汇总
- 重构代码
- javascript 绑定事件 阻止冒泡和默认事件
- JAVA里面的 静态绑定与动态绑定 杂谈
- mysql5.6二进制安装
- 【android】Cursor记录集游标、ListView和SimpleCursorAdapter、ListView数据动态更新
- MAC OS 常用快捷键
- html5新增的语义化标签
- 一个简单的安卓小应用,开发步骤以及遇到的各种问题总结
- linux给一些常用的指令起别名
- Android api23中删除HttpClient的相关类的解决方法
- HTML 排版与标签(二)
- ajax传递多个参数
- 读书笔记之ado.net entity framework