【虚表vlistEx和sqlite的例子】

本文通过代码展示了如何在Windows应用程序中利用vlistEx控件结合SQLite数据库,创建可交互的表格,包括数据获取、筛选、编辑和右键菜单操作。
摘要由CSDN通过智能技术生成

虚表vlistEx和sqlite的例子

代码如下

import win.ui;
import godking.vlistEx;
import sqlite;

/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=849;bottom=578)
mainForm.add(
vlist={cls="vlistEx";left=10;top=10;right=840;bottom=570;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/
var db = sqlite("D:\aardio\project\aardio工程24\db.db")
var t = { fields={"序号","姓名","电话","地址","身份证"} };



mainForm.vlist.setTable(db.getTable("SELECT * FROM filea"),{"序号","姓名","电话","地址","身份证"},{80,120,120,350,100},1,  )


mainForm.vlist.hideLineV = {2,3}
mainForm.vlist.onClick = function(row/*行*/,col/*列*/,x,y){
    /*鼠标左键点击项目事件。x、y为鼠标相对于虚表的坐标*/
    if col==2 or col==3 or col==4 {
        mainForm.vlist.setCellColor(row,2,,null);
        mainForm.vlist.setCellColor(row,3,,null);
        mainForm.vlist.setCellColor(row,4,,null);
        mainForm.vlist.setCellColor(row,col,,({0,0xAAAAFF,0xFFAAAA,0xAAFFAA})[col]);
        mainForm.vlist.redraw();
    }    
}



mainForm.vlist.onDrawCellBg = function(row,col,hdc,rc,bkcolor,text){
	/*绘制单元格背景,返回ture则忽略原背景,否则继续绘制原背景。注意:该背景包含padding部分,而padding以外的部分会被有效区域背景遮盖*/
	if col==2 or col==3{
		gdi.selectPen(
			function(hdc,pen){
				gdi.drawLine(hdc,rc.right,rc.top,rc.right,rc.bottom)
			},hdc,0xDDDDDD,0x000000)
	}
	return true; 
}
mainForm.vlist.checkBox.show = true;
mainForm.vlist.textColor = 0xFF0000;
mainForm.vlist.setHeaderHeight(50);
mainForm.vlist.headerAlign = 1;
mainForm.vlist.lineColorH = 0x008800;
mainForm.vlist.lineColorV = 0xBB9999;
mainForm.vlist.fillParent();
mainForm.vlist.onEditBegin = true; 
mainForm.vlist.onEditEnd = function(row/*行*/,col/*列*/,text/*内容*/){
	/*单元格编辑完毕,是否允许单元格内容改变。返回false不允许,返回true允许,返回文本则改为新文本*/
	/*不定义此事件,则默认允许改变。注意:只有onEditBegin事件返回true,此事件才会触发。*/
	// 确保第三列输入数值!
	if col==3 {
		var r = ..tostring((..tonumber(text)):0);
		if r!=text	{
			..win.msgbox(text++" 将转为:"++r);
			return r; 
		}
	}
	return true; 
}
mainForm.vlist.onSortColumn = function(col,desc){
	/*点击列标题进行排序。col:列号,从1开始。desc:是否倒序。*/
	owner.sort( col, desc, 0 /*数据转换:0默认 1时间 2数值 3文本*/ ,false /*使用微软api进行文本排序*/ );
}
//添加右键菜单,并且删除行
var listpopmenu = win.ui.popmenu(mainForm);
listpopmenu.add("删除",function(id){
	mainForm.vlist.delRow(mainForm.vlist.getSelected()); 
}); 
listpopmenu.add("新增",function(id){
	mainForm.vlist.addRow("[@rowindex]","1","2","3","等待中"); //使用行索引标识符
});
listpopmenu.add("清空",function(id){
	//mainForm.vlist.clear()
});
mainForm.vlist.onRClick = function(row/*行*/,col/*列*/){
	/*鼠标右键点击项目事件*/
    var x,y = win.getCursorPos();
    listpopmenu.popup(x,y,true);//弹出菜单	
}


                           
mainForm.show();
win.loopMessage();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值