这是一个FD曲线展示DEMO页面;其中核心使用FD_curve 控件,其中可以通过控件的方法控制数据的移动以及收缩、扩张;详细制作参见下图和代码:

控件布局图:

其中按钮对应的控制代码如下:

class app=loadcom(appbase);
class page=loadcom(page);
class f1=loadcom(fd_curve);
class x1=loadcom(xk_button);
class x2=loadcom(xk_button);
class x3=loadcom(xk_button);
class x4=loadcom(xk_button);
class x5=loadcom(xk_button);
class x6=loadcom(xk_button);
class x7=loadcom(xk_button);
class x8=loadcom(xk_button);
class x9=loadcom(xk_button);
class x10=loadcom(xk_button);
class t1=loadcom(table);
class R2=loadcom(xk_switch);
class Q1=loadcom(xk_switch);
class Q2=loadcom(xk_switch);
class C1=loadcom(xk_switch);
class C2=loadcom(xk_switch);
class R1=loadcom(xk_switch);

int fdn;
if (fd_info(0,0)==0){ //当前fd分区数量=0表示分区没有被初始化
    fdn=fd_alloc(16,4); //分配一个16*4096=65536 64K的存储区,每条记录4字节
    //----此时如果申请正常,fdn应该为0(0~3分别对应4个分区);
    echo (fdn);echo("\r\n");
}

void x9.onclick()
{    int bs;
    int i;
    int d1;
    int d2;
    d1=rand(16384);d2=rand(16000);
    bs=newbin(4);   //建立一个bin数组
    fd_clear(0);  

    for (i=0;i<4096;i++){
        d1=d1+rand(800)-400;
        d2=d2+rand(500)-250;
        range(d1,0,65535);range(d2,0,65535);
        setv(bs,0,2,d1);setv(bs,2,2,d2);
        fd_add(0,bs);
    }
    freestr(bs);
    f1.c1=f1.c1;
}
void x3.onclick(){f1.xdnchg(1);}
void x4.onclick(){f1.xdnchg(0);}
void x1.onclick(){f1.pxchg(1);}
void x2.onclick(){f1.pxchg(0);}
void x7.onclick(){f1.ydnchg(1);}
void x8.onclick(){f1.ydnchg(0);}
void x5.onclick(){f1.pychg(1);}
void x6.onclick(){f1.pychg(0);}
void x10.onclick(){f1.autosize();}
void R1.onchange()
{    if ((R2.val==0)&(R1.val==0))     { f1.showR=0;}
    if (R1.val==1)f1.showR=1;
    R2.val=0;
}
void R2.onchange()
{    if ((R2.val==0)&(R1.val==0))     { f1.showR=0;}
    if (R2.val==1)f1.showR=2;
    R1.val=0;
}
void Q1.onchange(){f1.showCurve=Q1.val+Q2.val*2;}
void Q2.onchange(){f1.showCurve=Q1.val+Q2.val*2;}
void C1.onchange(){f1.ctrlR=C1.val+C2.val*2;}
void C2.onchange(){f1.ctrlR=C1.val+C2.val*2;}

start();