实现ListView控件的行间隔颜色的优化代码

emWin三大交互控件实战:LISTVIEW、LISTWHEEL与MENU深度解析与应用 在嵌入式GUI开发中,交互控件是连接用户与设备功能的核心桥梁,其设计直接关系到系统的易用性与专业度。从原理上看,这些控件基于消息驱动架构,通过高效的内存管理与渲染机制,在资源受限的嵌入式环境中实现流畅的视觉反馈与操作响应。其技术价值在于将复杂的数据呈现和命令导航抽象为标准化组件,显著提升开发效率并保障界面一致性。常见的应用场景包括工业触摸屏的参数设置、车载中控的菜单导航以及医疗设备的列表选择等。本文聚焦于emWin库中的LISTVIEW、LISTWHEEL和MENU三大控件,深入探讨其核心API、设计哲学及 阅读详情

崔占民在其文章《用代码实现ListView控件的行间隔颜色》中给出了实现代码,经过笔者测试,发现有如下bug:

 

       首先,虽然可以看到背景色间隔,但是条块的高度等于原始picGreenBar的高度。应该在autoredraw属性设置为true之前,将height属性设置为一个最小值,比如1。

 

另外,listview的属性要修改一下:
    ...
    ListView1.View = lvwReport
    ListView1.FullRowSelect
= True
    ListView1.GridLines
= True
    picGreenbar.Height
= 1
    
    '
添加一些实验数据
   ....

 

 

为方便读者,将全部代码公布如下(关键代码来自《用代码实现ListView控件的行间隔颜色》):

 

--------------------------------

 

VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form Form1
   Caption        
=   "Form1"
   ClientHeight    =   5400
   ClientLeft     
=   60
   ClientTop      
=   345
   ClientWidth    
=   5940
   LinkTopic      
=   "Form1"
   ScaleHeight     =   5400
   ScaleWidth     
=   5940
   StartUpPosition
=   3 

   Begin VB.PictureBox picGreenbar
      Height         
=   1695
     
Left            =   120
      ScaleHeight    
=   1282.353
      ScaleMode      
=   0  'User
      ScaleWidth      =   4635
      TabIndex       
=   1
      Top            
=   3480
      Width          
=   4695
  
End
   Begin MSComctlLib.ListView ListView1
      Height         
=   3255
     
Left            =   120
      TabIndex       
=   0
      Top            
=   120
      Width          
=   4695
      _ExtentX       
=   8281
      _ExtentY       
=   5741
      View           
=   3
      Sorted         
=   -1  'True
      LabelWrap       =   -1  'True
      HideSelection   =   -1  'True
      FlatScrollBar   =   -1  'True
      FullRowSelect   =   -1  'True
      GridLines       =   -1  'True
      _Version        =   393217
      ForeColor      
=   -2147483640
      BackColor      
=   -2147483643
      BorderStyle    
=   1
      Appearance     
=   1
      NumItems       
=   0
  
End
End
Attribute VB_Name
= "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable
= False
Attribute VB_PredeclaredId
= True
Attribute VB_Exposed
= False
Option Explicit


Private Sub Form_Load()

   
Dim j As Integer
   
Dim itmX As ListItem
   
    ListView1.ColumnHeaders.Add , ,
"This is Just a Simple Example"
    ListView1.ColumnHeaders(1).Width = 3000
   
    ListView1.View
= lvwReport
    ListView1.FullRowSelect
= True
    ListView1.GridLines
= True
    picGreenbar.Height
= 1
   
   
'添加一些实验数据
    For j = 1 To 33
       
Set itmX = ListView1.ListItems.Add()
        itmX.Text
= "This is item number " & CStr(j)
   
Next j
   
   
Call ColorListView(Me.ListView1, Me.picGreenbar)

End Sub

Private Sub Form_Resize()
    ListView1.Width
= Me.ScaleWidth
End Sub
Private Sub ColorListView(ListView1 As ListView, picGreenbar As PictureBox)
   
Dim i As Integer
   
Dim iFontHeight As Long
   
Dim iBarHeight As Integer
   
Dim ColHead As ColumnHeader
    Me.ScaleMode
= vbTwips
    picGreenbar.ScaleMode
= vbTwips
    picGreenbar.BorderStyle
= vbBSNone
    picGreenbar.AutoRedraw
= True
    picGreenbar.Visible
= False
    picGreenbar.Font
= ListView1.Font
    iFontHeight
= picGreenbar.TextHeight("b") + Screen.TwipsPerPixelY
    iBarHeight
= (iFontHeight * 1)
    picGreenbar.Width
= ListView1.Width
   
'======
    picGreenbar.Height = iBarHeight * 2
    picGreenbar.ScaleMode
= vbUser
    picGreenbar.ScaleHeight
= 2
    picGreenbar.ScaleWidth
= 1
   
'draw the actual bars
    picGreenbar.Line (0, 0)-(1, 1), &HE7E8FC, BF
    picGreenbar.Line (
0, 1)-(1, 2), RGB(0, 255, 0), BF
   
'======
    ListView1.PictureAlignment = lvwTile
    ListView1.Picture
= picGreenbar.Image
End Sub

 

 

 

 

 

 

 

 

STM32实战——七段数码管动态扫描技术详解 本文详细解析了STM32控制七段数码管的动态扫描技术,包括硬件连接、CubeMX配置及编程实现。通过分时复用原理和优化代码逻辑,实现稳定显示效果,并解决亮度不均、闪烁等常见问题。适合嵌入式开发者快速掌握STM32数码管驱动技术。 阅读详情

相关推荐

yolov5 onnx推理时报错[ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Unexpected input data type.

yolov5 onnxruntime 推理报错

zjulkw的博客 1221

C# ListView控件的间隔色和自动适应宽度

自动适应宽度只须设置列宽的值等于-1即可,另外,如果要调整每列的宽度为标题的宽度的话设置列宽的值等于-2即可,要注意一定要在ListView加载了数据之后再设置,要不然就没效果了,而且每次刷新数据后必须设置。至于间隔色就很简单了,在每行要加载数据的时候设置每行的背景色就搞定了,下面我写一个很很简单的例子: using System;using System.Collections....

lianxiangbus 278

建议收藏:模拟版图高频面试题,直通面试,Offer抢先拿!

直击模拟版图面试

nuoweishizi的博客 6334

嵌入式GUI开发实战:emWin LISTVIEW与LISTWHEEL控件深度解析与应用

在嵌入式系统开发中,图形用户界面(GUI)是连接用户与设备的关键桥梁,其核心在于高效的数据展示与交互控件。LISTVIEW(列表视图)和LISTWHEEL(列表滚轮)作为嵌入式GUI库中的高级控件,通过封装底层绘图、消息处理和状态管理,为开发者提供了简洁的API接口。其技术价值在于将复杂的视觉呈现与用户交互逻辑抽象化,使开发者能专注于业务逻辑,而非底层图形细节,从而在资源受限的MCU平台上实现流畅的实时响应与可控的内存使用。这些控件广泛应用于工业HMI面板、医疗设备操作界面及智能家居中控屏等场景,用于构建如

442

Xilinx System Generator多速率系统(Multi-Rate Systems)的使用

在本实验练习中,您将学习在System Generator中如何使用多个时钟域有效地实现具有多个数据速率的设计。

白码王子小张的博客 1092

LabVIEW面向对象编程:操作者框架入门实战

本文是LabVIEW面向对象编程中操作者框架的入门实战指南。针对传统“面条式代码”在复杂项目中的维护难题,文章通过创建操作者、定义消息与处理函数、在主VI中调用等步骤,详细演示了如何利用操作者框架构建模块化、易扩展的应用程序架构,有效管理并行任务。

f0g1h2的博客 589

ListView实现自动滚动

首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false android:stackFromBottom="true" 第二是 transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将

u012035086的专栏 1248

智能问数系统的完整技术栈与实现逻辑

提取并增强数据库 Schema(含业务语义)选择 LLM(开源 qwen2 / 商业 GPT-4o)构建 RAG 向量库(存储历史问法)实现 SQL 安全校验与权限控制添加结果自然语言解释 + 可视化部署到只读数据库环境🔑核心原则“先保证安全,再追求智能”—— 一个能生成错误 SQL 的智能问数系统,比没有更危险。

我们的征途是星辰大海 1617

Android Listview控件一些重要的属性

引用自:http://www.cnblogs.com/bluestorm/p/3699258.html   Android ListView 几个重要属性 Android ListView 几个重要属性 http://blog.youkuaiyun.com/avenleft/article/details/7334060   android:transcriptMode="alway

小金子的博客 733

yolov11使用记录(训练自己的数据集)

本文介绍了如何安装和使用Ultralytics YOLOv11进行目标检测。首先,通过Anaconda创建并激活虚拟环境,安装必要的依赖库如PyTorch和Ultralytics。接着,从GitHub下载YOLOv11源码,并在PyCharm中配置环境。下载预训练的YOLOv11模型后,通过编写简单的Python脚本进行图片检测,验证环境配置的正确性。最后,文章提到可以基于此环境训练自定义模型。整个过程涵盖了从环境搭建到模型应用的完整流程,适合初学者快速上手YOLOv11。

IT菜鸟 7547

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

ListView 无所不包

1介绍 Listview节约内存的几种写法 2技巧一:解决ListView的ItemView中带有Button时,OnItemClick无效的问题 3技巧二Listview滚动条的属性 4技巧三有关美化 android ListView的美化涉及到的一些属性 5精品代码:android开发之横向滚动/竖向滚动的ListView(固定列头) 6代码2 android ListView和GridView拖拽移位实现代码

kan1kan5的专栏 2290

B3640 T3 句子反转

要求将这些单词倒序输出。而且对于每个单词,如果是小写词,应当转为大写;如果是大写词,应当转为小写;如果是自然数,应该倒转输出。给定一行句子,每个词之间用空格隔开,要么是全小写英文单词,要么是全大写英文单词,要么是自然数。第一次做的时候0分,两个小时没做出来。仅一行,表示程序对句子的处理结果。仅一行,即需要反转的句子。

小前日记 366

对ListView进行美化,细节处理

在Android开发中,ListView是经常用到的一个控件,现在总结一下一些美化的小细节:一.listview拖动时背景图片变成黑色 解决方法:在布局文件中加入android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″二.listview的上边和下边有黑色的阴影 解决: android:fadingEdge=”none

Small_Lee的博客 1318

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android中设置控件获得焦点

ndroid中,要使控件获得焦点,需要先setFocus,再requestFocus。 以Button为例:                 btn.setFocusable(true);                 btn.setFocusableInTouchMode(true);                 btn.requestFocus();            

xiaoxiandroid的专栏 1435

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ListView优化_已在填坑

挖坑。

chencehnggq的专栏 965

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

A020-列表容器之ListView,项目实践

我最近从朋友那里收集到了2020-2021BAT 面试真题解析Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识。这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~点击直达GitHub。

m0_60607371的博客 902

ListView属性

1. 背景色: listView设置背景色android:background="@drawable/bg",拖动或者点击list空白位置的时候发现ListItem都变成黑色。 因为默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用...

dibe49481448的博客 392

ListView设背景

在别的地方看到的,转过来作为记录!! 在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现Li

想了解甘道夫吗添加微信ID号:ganpucha 5714

ListView常用属性

ListView常用属性 第一首先是stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false android:stackFromBottom="true" 第二是transciptMode属性,需要...

andi4009的博客 214

Android基础学习笔记之-ListView进阶用法(item圆角效果实现)

今天简单用缓存优化方式实现了listview的功能,下面让我们实现一下上篇文章留下来的改进方案:     1).实现item布局的圆角效果     2).对listview的item进行监听 首先,我们考虑一下该如何实现listview中item的圆角效果呢?  1. 想法一:通过最普遍的方式-- shape属性定义来实现 这种方式需要在drawable目录下创建sh

沐风的博客 4403

android中listview的一些样式设置

在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果

Geek Nero 693

Android UI 之ListView

stackFromBottom属性 ListView是否从底部开始显示,并不会将数据倒序,值为true和false android:stackFromBottom="true" transciptMode属性 需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通...

ajr0716的博客 103

android测试 掘金,仿掘金框架之listview全解(一)

文章首发:Android程序员日记作者:贤榆的鱼测试阅读时间:8min前言有有很长一段时间没有更新了,这次给大家带来了一个框架Demo——仿掘金App,希望可以通过这个Demo和大家分享一些控件的实际使用!这次呢先给大家带来了自动隐藏布局且带下拉加载更多的listView!大家可以先看看掘金app的效果图,后面我们把自己的放上来比较一下。今天先放静态的,明天放一张动的!正文通过仿掘金框架的这个li...

weixin_33635110的博客 318
下一篇: 简单的生物信息开发平台-Bioperl+Visual Basic+Html
bsmagic
博客等级 码龄22年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值