|
分享例程
界面截图: |
|
备注说明: |
- |
本帖最后由 神女软件定制 于 2024-9-8 17:44 编辑
这是一个用户可自由扩展的框架,图中左右两个列表,都是基于这个框架,这个图片效果,和框架本身没有直接关联,这只是在“使用示例.e”中用代码设计出来的
准备接个单子:https://bbs.125.la/dtask/23326.html,但是没有及时回复,导致痛失500块。
思路已经脑海里了,就写出来了
概念:
单个数据项上显示的每个内容,都是一个元素,
每个元素可以有3种状态:普通态,悬停态,按下态,同一时刻,只能是某一个状态
每个元素的某个状态,可能是3种类型之一:矩形,文字,图片
有一个列表框框架
你告诉它有多少个数据项,以及每个数据项应该显示成多高,那么它就知道你这个逻辑界面的尺寸,以及每个数据项所在的位置
但是它不知道每个数据项应该显示什么东西,所以需要用代码来描述,给他指定具体的显示规则
这是一个数据项里可以显示多个元素的列表框,所以告诉它每个条目相对位置中,哪个部分应该显示什么元素
定义3种元素,1矩形,2文字,3图片
你可以告诉它,在相对条目的(0,0)位置处,显示1个(20*20)的图片,在(20,0)位置处,显示(20*200)固定的文本内容“这是文本内容”,像这样
自绘列表框框架. 初始化控件 (cs_句柄, 50, )jb_图片 = 辅助加载图片_路径 (“res/选.bmp”)jb_元素. 新元素 (0, 0, 20, 20 ) jb_元素. 置图片 (1, jb_图片 )自绘列表框框架. 添加元素 (jb_元素 )cx_字体 = 辅助创建字体 (“宋体”, 16 )jb_固定文本 = “这是文本内容”jb_元素. 新元素 (20, 0, 200, 20 ) jb_元素. 置文本 (1, cx_字体, 真, #红色, #浅灰, 位或 ( #DT_CENTER, #DT_VCENTER, #DT_SINGLELINE ), 取变量数据地址 (jb_固定文本 )) 自绘列表框框架. 添加元素 (jb_元素 )
那么它就会显示成这个样子
这样每个条目都会显示相同的内容,很明显,这个不是我们需要的列表框
每个条目显示的内容,一般和每个条目的数据是相关的,框架也是设计成了这样,在需要显示某个条目的时候,他会来请求对应条目的指针(派生类重写基类函数),然后我们设置元素的时候不要传具体的指针,传具体数据,相对条目指针的“偏移”,有效范围1-1024(win32有效指针不可能在这个范围),像这样:
窗口程序集名 | 保 留 | 保 留 | 备 注 | 自绘列表框_入门例子类, 自绘列表框框架 | | | | 变量名 | 类 型 | 数组 | 备 注 | cx_字体 | 整数型 | | cx_数组 | 数据类型1 | 0 |
变量名 | 类 型 | 静态 | 数组 | 备 注 | jb_元素 | 元素信息类 | | | jb_固定文本 | 文本型 | | | jb_图片 | 整数型 | | | i | 整数型 | | |
cx_字体 = 辅助创建字体 (“宋体”, 16 )jb_固定文本 = “条目内容”自绘列表框框架. 初始化控件 (cs_句柄, 50, )重定义数组 (cx_数组, 假, 10 )计次循环首 (取数组成员数 (cx_数组 ), i )cx_数组 [i ].第一个成员 = 到文本 (“这是第 ” + 到文本 (i ) + “ 个”)计次循环尾 ()自绘列表框框架. 置条目数量 (取数组成员数 (cx_数组 )) jb_图片 = 辅助加载图片_路径 (“res/选.bmp”)jb_元素. 新元素 (0, 0, 20, 20 ) jb_元素. 置图片 (1, jb_图片 )自绘列表框框架. 添加元素 (jb_元素 )cx_字体 = 辅助创建字体 (“宋体”, 16 )jb_元素. 新元素 (20, 0, 200, 20 ) jb_元素. 置文本 (1, cx_字体, 真, #红色, #浅灰, 位或 ( #DT_CENTER, #DT_VCENTER, #DT_SINGLELINE ), 1 )自绘列表框框架. 添加元素 (jb_元素 )返回 (取变量地址 (cx_数组 [索引 ]))
其他元素也是同理,如果每个条目一样的元素,用固定指针,如果不一样,用偏移,需要维护条目对应的数据类型,并在需要时提供指针
这个是没有交互效果的,漂亮一点的列表,鼠标移动上去,包括鼠标按下,都可以用一定的视觉效果反馈给用户,特别是图片元素
所以定义3 种状态,普通态,悬停态,按下态
cx_字体 = 辅助创建字体 (“宋体”, 16 )jb_固定文本 = “固定省事”jb_元素. 新元素 (0, 0, 200, 20, 真) jb_元素. 置文本 (1, cx_字体, 真, #黑色, , 位或 ( #DT_CENTER, #DT_VCENTER, #DT_SINGLELINE ), 取变量数据地址 (jb_固定文本 )) jb_元素. 置文本 (2, cx_字体, 真, #黑色, #嫩绿, 位或 ( #DT_CENTER, #DT_VCENTER, #DT_SINGLELINE ), 取变量数据地址 (jb_固定文本 )) jb_元素. 置文本 (3, cx_字体, 真, #红色, #绿色, 位或 ( #DT_CENTER, #DT_VCENTER, #DT_SINGLELINE ), 取变量数据地址 (jb_固定文本 )) 自绘列表框框架. 添加元素 (jb_元素 )
框架自动根据指定的元素矩形区域维护元素的状态,以及回调元素的悬停和点击(接受鼠标参数为真的元素,按下态和回调点击才生效)
文档有点乱,写一半不想写了,总之很牛逼
其他:
gdi实现
元素均占矩形区域,无异形,图片不支持透明,仅bmp
最小单元绘制,无双缓冲
免费版模块加了限制,第10项不显示
模块和使用例程:
自绘列表框.zip
(91 KB, 下载次数: 68)
|
评分
-
查看全部评分
|