这是一个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();