首页 > 其他分享 >(10)Lazarus下ListBox自画

(10)Lazarus下ListBox自画

时间:2024-02-04 10:05:48浏览次数:20  
标签:10 ImageList1 Color Top aRect Lazarus Brush ListBox Left

参考:VCL下ListBox自画,Lazarus也一样

uses LCLType;

 

(10)Lazarus下ListBox自画_sed

(10)Lazarus下ListBox自画_VCL_02

 ListBox的两个设置:

(10)Lazarus下ListBox自画_sed_03

自画事件:ListBox1DrawItem

(10)Lazarus下ListBox自画_圆角矩形_04

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  ARect: TRect; State: TOwnerDrawState);
begin
    With ListBox1.Canvas Do
    Begin
      Brush.Color := $00FF9184; //设置背景颜色并填充背景
      FillRect(aRect);

      Brush.Color := clBlack; //设置圆角矩形颜色并画出圆角矩形
      Pen.Color := $00131315;
      RoundRect(aRect.Left + 3, aRect.Top + 3, aRect.Right - 3, aRect.Bottom - 3, 5, 5);

      Brush.Color := $00A2F9F0;
      Pen.Color := clInfoBk;
      RoundRect(aRect.Left + 3, aRect.Top + 3, aRect.Right - 6, aRect.Bottom - 6, 5, 5); //以不同的宽度和高度再画一次,实现立体效果

      If (odSelected In State) Then {//如果是当前选中项}
      Begin
        Brush.Color := $00BBBBFF; //以不同的背景色画出选中项的圆角矩形
        RoundRect(aRect.Left + 3, aRect.Top + 3, aRect.Right - 3, aRect.Bottom - 3, 5, 5); //选中项的文字颜色
      End;
      ImageList1.Draw(ListBox1.Canvas, aRect.Left + 6, //画出图标
        aRect.Top ,
        index, true);

      Font.Color := clRed; //分别绘出各行文字
      TextOut(aRect.Left + ImageList1.Width + 10, aRect.Top + 4,ListBox1.Items[index]);
      Font.Color := $0F01630E;


      TextOut(aRect.Left + ImageList1.Width + 10, aRect.Top+20, '文章总数: a' );

      If (odFocused In State) Then ListBox1.Canvas.DrawFocusRect(aRect);
    End;
End;

 先要设置 ImageList1的宽和高,再导入图片,否则,图片会被清空。

(10)Lazarus下ListBox自画_sed_05

测试图标下载:

链接:https://pan.baidu.com/s/1eCLTHlpc06CwH1WL9AgHkw提取码:83rn 

 

标签:10,ImageList1,Color,Top,aRect,Lazarus,Brush,ListBox,Left
From: https://blog.51cto.com/u_15216366/9576614

相关文章

  • 【数据库】SQL 错误 [42P10] ERROR SELECT DISTINCT ON expressions must match ini
    SQL错误[42P10],表示在使用SELECTDISTINCTON语句时,表达式必须与初始的ORDERBY表达式匹配。这个错误通常发生在你尝试对不同的列进行去重操作时,而这些列并没有在ORDERBY子句中明确指定。为什么会出现这个错误?当你使用SELECTDISTINCTON语句时,你需要提供一个或多个......
  • (10/60)用栈实现队列、用队列实现栈
    用栈实现队列实现思路用两个栈实现。入队用输入栈stIn,出队用输出栈stOut。实现pop()时,要注意pop只删除,不返回值。复杂度分析略注意点stack的pop只能弹出,不返回值;弹出并获取值分成:用top()记录栈顶值、用pop()弹出(删除)栈顶值。class方法调用要用->。代码实现classMyQu......
  • CheckListbox 勾选操作随笔
    记录代码备用, 增加CheckListbox勾选全选项代码//------------------获取全选项值-----------------------------if(checkedListBox1.SelectedIndex==0){for(inti=1;i<checkedListBox1.Items.Count;i++){ch......
  • 初中英语优秀范文100篇-078Better habits, better life-更好的习惯,更好的生活
    PDF格式公众号回复关键字:SHCZFW078记忆树1Itisknowntoallthatnobodyisperfect.翻译众所周知,没有人是完美的简化记忆完美句子结构It(主语)+isknown(谓语),使用了被动语态的一般现在时,表示“这是众所周知的”toall是介词短语作状语,表示“对所有人来说”thatn......
  • Windows 10任务管理器的CPU ,内存
    内存使用中(已压缩):这个数值显示的是当前内存页正在被使用的数量,并且已经被操作系统进行了压缩。压缩内存是一种将不常用的内存页面转移到磁盘上,以释放可用内存的方法。可用:这个数字显示的是当前内存页未被使用的数量,可以用于新的应用程序和操作系统使用。已提交:这个数字显示......
  • 代码随想录算法训练营第十一天| 20. 有效的括号 1047. 删除字符串中的所有相邻重复
    20.有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。题目链接:20.有效的括号-力扣(LeetCode)思路:只......
  • 10秒搞定!隔壁奶奶都能搞定的幻兽帕鲁、雾锁王国开服指南
    最近《幻兽帕鲁》和《雾锁王国》非常火热,玩过的小伙伴们都说非常上头!有跟朋友对战需求的小伙伴们可以通过本文拥有一台高性价比的专用服务器,随时可以用来跟朋友一起玩游戏!敲重点!!!步骤非常简单,就算你不是程序员,也可以轻松完成!!目前很多云服务商和淘宝上都有类似的服务,但DD对比下......
  • AWR1243+DCA100——二维孔径
    利用AWR1243,通过二维滑轨的机械扫描实现二维平面孔径,可以获取目标场景的三维信息,实现3D成像(水平-垂直-深度)。概念图如下:参考:[1]Yanik.Simplified-2D-mmWave-Imaging](https://github.com/meminyanik/Simplified-2D-mmWave-Imaging)[2]YanikM,TorlakM.Millimeter-wave......
  • win10自带的linux系统是什么?怎么打开?
    Windows10自带的Linux系统称为适用于Linux的Windows子系统(WSL)。启用和打开这个系统,需要进行一系列的设置。首先,需要启用"适用于Linux的Windows子系统"的可选功能。这可以通过搜索PowerShell并以管理员身份运行,然后输入特定的命令来完成。接着,用户需要选择并安装自己喜欢的Linux发......
  • 【路由器】电信光猫中兴 F7010C 折腾记录
    目录问题描述解锁超管密码前言配置安卓抓包环境抓包获取超管密码IPv6配置光猫拨号改用SLAAC路由器配置wan6配置wan配置lan配置验证参考资料问题描述近期家里更新了千兆宽带,电信光猫换成了中兴F7010C,默认光猫拨号,安装人员不给改桥接,而且路由器还获取不到IPv6地址尝试过......