虚表 —— 单元格绘制完毕事件

光庆 7月前 807

以下事件后期版本已做调整,仅供参考。

关于绘制过程中可触发的事件,参考如下(以实际版本中的智能提示为准):

Code AardioLine:46复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
    • onDrawCellBg(row,col,hdc,rect,bkcolor,text) = @.onDrawCellBg = function(row,col,hdc,rect,bkcolor,text){
    • /*绘制单元格背景前,触发该事件。rect为单元格全部区域(含CellRect和padding),
    • 返回ture则忽略原背景,否则继续绘制原背景。CellRect部分会被有效区域背景遮盖*/
    • __
    • return true;
    • }
    • afterDrawCellBg(row,col,hdc,rect,bkcolor,text) = @.afterDrawCellBg = function(row,col,hdc,rect,bkcolor,text){
    • /*绘制单元格背景后,绘制有效区域前,触发该事件。
    • rect为单元格全部区域(含CellRect和padding),CellRect部分会被有效区域背景遮盖*/
    • __
    • }
    • onDrawCellRect(row,col,hdc,rect,bkcolor,text,font,colalign) = @.onDrawCellRect = function(row,col,hdc,rect,bkcolor,text,font,colalign){
    • /*绘制单元格有效区域(背景、内容)前,触发该事件。
    • 返回ture则忽略原背景和内容,且其后的 onDrawCellRectBg() 和 afterDrawCellRectBg() 事件也不会再触发*/
    • __
    • return true;
    • }
    • onDrawCellRectBg(row,col,hdc,rect,bkcolor,text) = @.onDrawCellRectBg = function(row,col,hdc,rect,bkcolor,text){
    • /*绘制单元格有效区域背景前,触发该事件。rect为有效区域,不包含padding。
    • 返回ture则忽略原有效区域背景(不影响内容绘制),否则继续绘制有效区域原背景。
    • 如果其前的 onDrawCellRect() 事件返回true,则本事件不会触发。*/
    • __
    • return true;
    • }
    • afterDrawCellRectBg(row,col,hdc,rect,bkcolor,text) = @.afterDrawCellRectBg = function(row,col,hdc,rect,bkcolor,text){
    • /*绘制单元格有效区域背景后,绘制内容前,触发该事件。rect为有效区域,不包含padding。
    • 如果其前的 onDrawCellRect() 事件返回true,则本事件不会触发。*/
    • __
    • }
    • afterDrawCell(row,col,hdc,rect,bkcolor,text,font,colalign) = @.afterDrawCell = function(row,col,hdc,rect,bkcolor,text,font,colalign){
    • /*绘制单元格全部内容后,绘制边框前,触发该事件。rect为单元格全部区域(含CellRect和padding)*/
    • __
    • }
    • afterDrawCellBorder(row,col,hdc,rect,bkcolor,text,font,colalign) = @.afterDrawCellBorder = function(row,col,hdc,rect,bkcolor,text,font,colalign){
    • /*绘制单元格全部内容和边框后,触发该事件。此事件未单元格绘制的最终事件。rect为单元格全部区域(含CellRect和padding)*/
    • __
    • }
    • onStartPaint(hdc,rect) = @.onStartPaint = function(hdc,rect){
    • /*绘制周期开始之前,触发该事件,进行预绘制虚表内容。此时未开始单元格绘制。*/
    • __
    • }


    实例效果:

    示例代码:

    Code AardioLine:29复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
    • import win.ui;
    • import godking.vlistEx;
    • /*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}
    • )
    • /*}}*/
    • mainForm.show();
    • var t = { fields={"序号","姓名","年龄","地址","身份证"} };
    • for(i=1;10000;1){
    • var tt={};
    • tt["序号"]="[@rowindex]"; // 行序号标记是不允许编辑修改的
    • tt["姓名"]="["+string.random(math.random(1,10))+"]";
    • tt["年龄"]="["+string.random(math.random(1,20))+"]";
    • tt["地址"]="["+string.random(math.random(1,30))+"]";
    • tt["身份证"]="["+string.random(math.random(1,40))+"]";
    • ..table.push(t,tt);
    • }
    • mainForm.vlist.afterDrawCellBorder = function(row,col,hdc,rect,bkcolor,text){
    • if row===6 {
    • rect.top = rect.bottom-6;
    • ..gdi.fillRect(hdc,0xFF0000,rect);
    • }
    • }
    • mainForm.vlist.setTable(t);
    • mainForm.vlist.setColWidthFit();
    • win.loopMessage();


    最新回复 (0)
    返回