数据集列表控件
- 针对db数据集制作的列表控件
- 支持列表、翻页、行单选、操作按钮
- 最下面一行为状态条,显示总条数、选中条数、分页按钮
属性:
属性名 | 描述 | 默认值 | 备注 | |
---|---|---|---|---|
x1 | 左上角x1坐标 | 0 | ||
y1 | 左上角y1坐标 | 0 | ||
x2 | 右下角x2坐标 | 134 | ||
y2 | 右下角y2坐标 | 134 | ||
status | 状态寄存器 | 0 | ||
apiurl | 服务器API的URL | http://a-diy.cn/pp/db/api.php? | 暂不提供 | |
dotm | 显示汉字的点阵大小 | 12点阵 | ||
cc | 显示汉字的颜色 | 15 | ||
bc | 背景颜色 | 63 | ||
isohk | 是否允许有chkbox | 1 | 0:无chkbox;1:有chkbox;暂不提供 | |
pn | 每页显示的条数 | 8 | ||
seln | 选中的数据序号,65535(-1)表示未选中 | 65535 | ||
pg | 当前选择的第几页 | 0 | 0是第一页 | |
hh | 每格的高度,表格实际Y方向格数为pn+2 | 16 | ||
tcol | 列定义;显示条目:字段:显示格宽度;使用“\ | ”分隔 | 显示条目1:字段1:80 | 显示条目2:字段2:80 |
dbaddrpg | dblist对应的地址页数,即dbaddrpg=addr/4096 | 0 |
事件:
事件名 | 描述 | 备注 |
---|---|---|
auto_tcol | 根据数据集的字段结构,自动构建列表控件的标题栏 | |
reload_db | 重新加载数据集 | 数据变化后需要调用此方法 |
rowselect | 用户点击dblist 选中一行数据事件 | 页面继承事件 |
使用方法:
数据集创建:
int b;
//使用dbaddrpg对应的地址页数
//从PSRAM扩展数据区读取一个数值
b = psram_gv(d1.dbaddrpg*4096,4);
//创建数据集,详细参考“数据集的基本操作”
//根据数据集的字段结构,自动构建列表控件的标题栏
d1.auto_tcol();
数据添加:
//使用db_sf添加数据,详细参考“数据集的基本操作”
//刷新dblist数据
d1.reload_db();
选中一条数据:
void d1.rowselect()
{ //用户点击dblist 一行数据后起的事件
int pid; //这个是物理id,即数据物理存储位置的编号
echo("seln="+d1.seln+"\r\n");
pid=dblist_get(b,d1.seln); //seln是排序后的列表编号,通过本语句转换成物理编号
echo("pid="+pid+"\r\n");
if (pid==65535){
m1.text="";
}
else{
db_get(b,pid);
m1.text="pid:"+pid+" 姓名:"+db_gf(b,"姓名")+" 学分:"+db_gf(b,"学分");
}
}
数据修改:
int pid;
pid=dblist_get(b,d1.seln);//获取选中数据的物理存储位置编号
db_get(b,pid); //修改数据前先获取
db_sf(b,"name","李四"); //修改字段内容
db_ok(b); //完成,并入数据集
d1.reload_db();
数据删除:
pid=dblist_get(b,d1.seln);//获取选中数据的物理存储位置编号
db_del(b,pid); //删除数据
d1.reload_db();
数据清空:
db_clear(b);
d1.reload_db();
备注:
- 数据的增删改等功能由数据集语句实现,dblist主要负责显示和选中一行数据
- 有关服务器通信部分暂不提供
- 详细请参见:构建在扩展内存中的数据集