子窗口的数据可以传递到主窗口,但不知如何传递到主窗口的虚表中,请教光庆老师
import win.ui;
import godking.vlistEx;
import fonts.fontAwesome;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=681;bottom=449)
mainForm.add(
edit={cls="edit";text="Edit";left=577;top=46;right=674;bottom=72;edge=1;multiline=1;z=3};
listview={cls="vlistEx";left=8;top=8;right=184;bottom=438;acceptfiles=1;dl=1;hscroll=1;vscroll=1;z=1};
vlist={cls="vlistEx";left=193;top=9;right=553;bottom=438;ah=1;aw=1;dl=1;edge=1;z=2}
)
/*}}*/
var t = {
{' \uF0C5 基本操作',"[@treeLevel]"=0}
{' \uF0AE 数据录入',"[@treeLevel]"=1}
{' \uF0D0 数据编辑',"[@treeLevel]"=1}
{' \uF0CC 数据删除',"[@treeLevel]"=1}
{' \uF080 数据查询',"[@treeLevel]"=0}
{' \uF0AE 人员查询',"[@treeLevel]"=1}
{' \uF0D0 地址查询',"[@treeLevel]"=1}
{' \uF0CC 编码查询',"[@treeLevel]"=1}
{' \uF0CC 索引查询',"[@treeLevel]"=1}
{' \uF013 系统设置',"[@treeLevel]"=0}
{' \uF0AE 人员过滤',"[@treeLevel]"=1}
{' \uF0D0 数据管理',"[@treeLevel]"=1}
{' \uF0CC 账号登录',"[@treeLevel]"=1}
};
mainForm.listview.font = ::LOGFONT(name="fontAwesome";point=11;color=0x000000 )/*【属性】项目文本字体*/
mainForm.listview.setHeaderHeight(0);
mainForm.listview.setRowHeight(35);
mainForm.listview.lineColorV = null;
mainForm.listview.lineColorH = 0xEEEEEE;
mainForm.listview.padding = 0;
mainForm.listview.hideScroll(true/*隐藏横向滚动条*/,true/*隐藏纵向滚动条*/);
mainForm.listview.setTable(t);
mainForm.listview.onDrawCellRect = function(row,col,hdc,rect,bkcolor,text,font,colalign){
var rrow = mainForm.listview.getHideRowRealIndex(row /*虚表当前显示行号*/);
if ..table.find({1,5,10},rrow){
font.color = 0xFFFFFF;
return false,0x71B33C;
}
}
mainForm.addData = function(...){
import console;
//console.dump("添加新数据:",...);
//console.dump(data);
// 准备数据 - 使用 vlistEx 的正确方式
var data = {...}; // 获取传入的数据
console.dump(data);
mainForm.vlist.setRowHeight(25); // 设置行高
mainForm.vlist.setHeaderHeight(25); // 设置表头高度
mainForm.vlist.lineColorV = 0xEEEEEE; // 设置垂直网格线颜色
mainForm.vlist.lineColorH = 0xEEEEEE; // 设置水平网格线颜色
mainForm.vlist.padding = 5; // 设置单元格内边距
mainForm.vlist.hideScroll(true, true); // 隐藏滚动条
//将数据显示在vlist控件中
}
mainForm.listview.onClick = function(row,col,x,y,buttonIndex){
if row and col {
var cellText = mainForm.listview.getCellText(row,1);
if(string.find(cellText,"数据录入")){
var inputForm = mainForm.loadForm("\inputForm.aardio");
// 添加回调函数,用于接收inputForm的数据
inputForm.onSubmit = function(data){
// 将新数据添加到vlist中
var newRow = table.clone(data);
newRow["[@rowindex]"] = #mainForm.vlist.table + 1;
table.push(mainForm.vlist.table, newRow);
mainForm.vlist.redraw(); // 刷新显示
}
inputForm.show();
return;
}
inputForm.doModal();
return;
}
var rrow = mainForm.listview.getHideRowRealIndex(row /*虚表当前显示行号*/);
if ..table.find({1,5,10},rrow){
var ishide = mainForm.listview.isUnHideSubRow(rrow);
mainForm.listview.hideSubRow( rrow /*行号*/,ishide/*是否隐藏*/,true/*是否立即刷新*/);
return ;
}
win.msgbox("您点击了:第"++rrow++"行,第"++col++"列"++mainForm.listview.getCellText(row,1));
}
// 准备数据 - 使用 vlistEx 的正确方式
var t = { fields={"序号","姓名","年龄","地址","身份证"} };
for(i=1;10;1){
var tt={};
tt["序号"]="[@rowindex]"; // 行序号标记是不允许编辑修改的
tt["姓名"]=math.random(1000,9999)+"姓名";
tt["年龄"]=math.random(10,99);
tt["地址"]=math.random(1000,9999)+"地址";
tt["身份证"]=math.random(1000,9999)+"身份证";
..table.push(t,tt);
}
mainForm.vlist.setTable(t,,{80,100,100,100,-1},1);
//======================= 功能演示 =======================
mainForm.vlist.onEditBegin = true;
mainForm.vlist.onEditEnd = function(row/*行*/,col/*列*/,text/*内容*/,endType){
if endType = 2/*_vlistEx_endType_onEditOK*/ or endType==3/*_vlistEx_endType_onEditTab*/ {
if col==5 {
if row<owner.count return true,λ()mainForm.vlist.edit(row+1,2); //注意此处方法
} else {
return true,λ()mainForm.vlist.edit(row,col+1); //注意此处方法
}
}
return true;
}
mainForm.show();
win.loopMessage();