数据集列表控件

属性:

属性名 描述 默认值 备注
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();

备注: