不容易,终于将在ListBox中改变行的颜色搞清楚。附源代码!

hammer_shi hammer_shi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
由于业务需要,一个界面上需要摆放三个ListBox显示不同状态的号码
,由于界面上还需要摆放一些label和Combobox,因此界面很是难看,
出于下策,我想到在同一个ListBox中将不同号码分成不同的颜色,这样
就只需要一个Listbox了,这样界面就要整齐些。
呵呵,或许人笨,这个程序搞好花了一个上午。好了,把源代码贴上吧,哦,
特别申明贴源代码是为了高手帮我优化一下,新手吗就参考了。

首先在ListBox的OnDrawItem事件内写如下代码:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
//本过程可能执行的次数是你ListBox1行数。
begin
ListBox1.Canvas.FillRect(RECT); //清空一行
IF INDEX<MEMO1.LINES.COUNT-1 THEN
/*根据不同的条件将不同行显示为不同颜色,在我的代码上在界面上加了一个Memo调试,
其中 INDEX=STRTOINT(MEMO1.Lines[INDEX])可以根据意愿改变,系统默认行字体
为黑色,当然你最好是用到index参数,否则不好控制。*/
BEGIN
if INDEX=STRTOINT(MEMO1.Lines[INDEX]) THEN
ListBox1.Canvas.Font.Color:=ClRed;
if INDEX>STRTOINT(MEMO1.Lines[INDEX]) THEN
ListBox1.Canvas.Font.Color:=ClBLUE;
if INDEX<STRTOINT(MEMO1.Lines[INDEX]) THEN
ListBox1.Canvas.Font.Color:=ClGREEN;
END;
LISTBOX1.Canvas.textOut(Rect.Left, Rect.Top, LISTBOX1.Items[Index]);
//显示每行的字体
end;

/*当然要是你的ListBox中开始不存在的数据而需要实时改变怎么办?其实大家可以看到我
每行的颜色也是根据Memo中的参数控制,现在只要改变Memo中的数字就可以改变ListBox中的
颜色,在这里再加了一个Button调试按钮*/

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
ListBox1.Canvas.Refresh;//ListBox画布重画。
//不知道是怎么搞的,虽然我达到结果,但是我却想不出下面代码的缘由
//只是不用下面的代码时ListBox需要手工点击改变颜色的行才能改变颜色,
//呵呵,或许时刷新不及时吧,需要催化.
for i:=0 to Listbox1.Items.Count-1 do
begin
ListBox1.ItemIndex:=i;
end;
end;

哦,忘了,你的ListBox还需要改变Stylew为lbOwnerDrawVariable。

...全文

相关推荐

批处理命令详解之目录跳转:cd

本文给大家介绍的是我们在处理不同路径下文件的时候需要使用的目录跳转命令CD,非常的详细,希望大家看了本文之后可以熟练的使用这个命令。好了,下面我们就来详细介绍下吧。

weixin_38592847

ListBox控件自定义字体与颜色源代码分析

本文还有配套的精品资源,点击获取 简介:ListBox控件在IT行业用于实现用户界面与应用程序的交互,本文主要关注如何编程定制ListBox的字体和颜色。'log_listbox_src.zip'压缩包提供了自定义ListBox字体和颜色的实例源代码,通过学习这些代码,可以理解自定义控件的内部机制。文档中还可能涉及字体和颜色的设置方法,以及高级功能如动态更新列表和用户交互处...

周不宅

DOS批处理不支持将UNC 路径作为当前目录的解决方法

在有些时候,需要在批处理中操作UNC目录,但批处理并不能直接对UNC目录进行操作,怎么办,这里就为大家分享一下解决方法,需要的朋友可以参考下

weixin_38528888

Java零基础(JDK13) - 常用DOS命令 - cd回到上级以及回到根.md

本文档介绍了如何在Java中使用ProcessBuilder类执行常用的DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用cd命令回到上级目录以及回到根目录。 内容概要 本文档涵盖以下内容: 回到上级目录:使用Java代码执行cd..命令以回到上级目录。 回到根目录:使用Java代码执行cd\命令以回到根目录。 学到什么 通过阅读本文档,您将学会: 使用Java代码执行DOS命令 使用Java代码切换目录 使用Java代码回到上级目录和根目录 阅读建议 在阅读本文档之前,建议您具备以下基础知识: 对Java语言的基本理解 类、方法和变量的概念

html+css+js网页设计

Dos命令信息大全 DOS 命令 函数

DOS 命令集锦 学习DOS 语句命令 DOS中的关键语句一览无遗

cxs2199
评论 6
收藏 已收藏
分享
返回顶部
hammer_shi
Delphi 5,944 成员 262,941 内容