📄 control.c.svn-base
字号:
DrawTab(p_ctrl->firstlable_x, y, 3, &labelno[0]);
BcdToAsc(p_ctrl->ppzhm[i].text,&dsppzhm[0],4);
YJHStringDisplay(p_ctrl->firsttext_x, y+1, 0x45, p_ctrl->dispmode, &dsppzhm[0], 8);
if(p_ctrl->mode==6) //批量记录图标显示
{
if(p_ctrl->ppzhm[i].sign==0x00) //记录删除
{
p_bmp=(ucharx *)p_ctrl->bmp_no; //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_no);
}
else if(p_ctrl->ppzhm[i].sign==0x55) //有历史纪录
{
p_bmp=(ucharx *)p_ctrl->bmp_ok; //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_ok);
}
else if(p_ctrl->ppzhm[i].sign==0x57) //批审待授
{
p_bmp=(ucharx *)p_ctrl->bmp_blank; //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_blank);
}
else if(p_ctrl->ppzhm[i].sign==0x5f) //批签待审
{
p_bmp=(ucharx *)p_ctrl->bmp_doubt; //BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_doubt);
}
BMPDisplay(p_ctrl->box_right-30,y,(uchar *)p_ctrl->bmp_doubt);
}
if((i+1)==(p_ctrl->currline))
{
YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
}
y=y+p_ctrl->lineinter;
}
if((p_ctrl->records)>(p_ctrl->maxdspline))
{
nums=(uint)(p_ctrl->ppzhm[0].label);
DrawRollbar(p_ctrl->box_right-7,p_ctrl->box_top+2,p_ctrl->box_bottom-2,nums,p_ctrl->maxdspline,(unsigned int)p_ctrl->records);
}
}
}
else
{
if(f_cursor==1)
{
if(p_ctrl->kind==0) //如果不带选择框
{
f_headref=0;
}
y=p_ctrl->first_y+(oldcurr-1)*(p_ctrl->lineinter);
YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
y=p_ctrl->first_y+(p_ctrl->currline-1)*(p_ctrl->lineinter);
YJHReverseRectangle(p_ctrl->box_left+1,y-1,p_ctrl->box_right-7,y+15);
}
}
/*
if(f_headref==1)
{
if(p_ctrl->kind!=0) //如果带选择框
{
draw_selbox(p_ctrl->sel_left,p_ctrl->sel_top,p_ctrl->sel_right,p_ctrl->sel_bottom);
BcdToAsc(p_ctrl->ppzhm[p_ctrl->currline-1].text,&dsppzhm[0],4);
YJHStringDisplay(p_ctrl->sel_left+3, p_ctrl->sel_top+2, 0x45, p_ctrl->dispmode, &dsppzhm[0], 8);
}
}
*/
if(f_headrev==1)
{
YJHReverseRectangle(p_ctrl->sel_left+1,p_ctrl->sel_top+1,p_ctrl->sel_right-1,p_ctrl->sel_bottom-1);
}
return NOKEY;
}
//*********************************************
//函数说明: 画选择框外边框带小三角. 但右下角坐标为
// 不含小三角的矩型右下角坐标,边框类型及颜
// 色均固定
//*********************************************
void draw_selbox(uchar x1,uchar y1,uchar x2,uchar y2)
{
//显示选择框部分
YJHDrawRectangle(x1,y1,x2,y2,0x42);
YJHDrawRectangle(x2,y1,x2+8,y2,0x42);
DrawTrigonDn(x2+2,y1+6,0x3);
}
void rollbar_ctrl(rollbarx *p_ctrl,uchar key)
{
if((key == KEYREFRSH)||(key == KEYSINGLEREFRSH)) {
DrawRollbar(p_ctrl->bar_left,p_ctrl->bar_top,p_ctrl->bar_bottom,p_ctrl->firstline,p_ctrl->windowline,p_ctrl->allline);
}
}
//画标号函数
void ZDHDrawTab(uchar x, uchar y, uchar lablelen,uchar CharColor, ucharx *pstring)
{
uchar width;
width=lablelen*6+4;
YJHDrawRectangle( x, y, x+width,y+12,0x63);
DrawPixel(x, y, 0x0); //画白色点
DrawPixel(x+width, y, 0x0);
DrawPixel(x, y+12, 0x0);
DrawPixel(x+width, y+12, 0x2); //画灰II色
YJHDrawLine(x+2, y+13, x+width+1,y+13,0x2);
YJHDrawLine(x+width+1, y+2, x+width+1, y+13, 0x2);
YJHDisplayString5_7(x+3,y+3,CharColor,0x63,pstring,lablelen);
}
void YJHSaveWindow(uchar X1,uchar Y1,uchar X2,uchar Y2,ucharx *BufferPointer)
{
#ifdef WIN32
ReadWindow(X1,Y1,X2,Y2,BufferPointer);
#else
PublicVariable1=X2;
PublicVariable2=Y2;
SaveWindow(X1,Y1,BufferPointer);
#endif
}
void DrawPopDownBox(uchar Index,uchar TotalNum,AccountStrx *AccountPointer,ucharx *AccountBuf)
{
uchar TempByte1,TempByte2,TempByte3;
DrawDownBox(AccountPointer->PopDownX1,AccountPointer->PopDownY1,AccountPointer->PopDownX2,AccountPointer->PopDownY2,0x42,0x03,TotalNum);
if(TotalNum==0) return;
TempByte3=AccountLength*2; //账号默认显示32位
if(AccountPointer->AccountDispMode==0x00) //0x00 精简显示,0x01正常显示
{
TempByte3=(AccountPointer->AccountTab[Index].AcctDispLength); //账号精简显示长度
}
TempByte2=0; //账号开始显示位置
TempByte1=((AccountPointer->PopDownX2-9)-(AccountPointer->PopDownX1))/6;//计算当前行可以显示的字符个数
//if(TempByte1>AccountLength) TempByte1=AccountLength;
if(TempByte3>TempByte1)
{ //两行显示
TempByte2=AccountLength*2-TempByte3;
if(TempByte3>(TempByte1*2))
{
AccountBuf[TempByte1*2+TempByte2-1]='.';
AccountBuf[TempByte1*2+TempByte2-2]='.';
AccountBuf[TempByte1*2+TempByte2-3]='.';
TempByte3=TempByte1;
}
else TempByte3-=TempByte1;
/*
YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+2,0x03,0x03, //显示账号
&AccountBuf[TempByte2],TempByte1);
YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+10,0x03,0x03, //显示账号
&AccountBuf[TempByte1+TempByte2],TempByte3);
*/
YJHDisplayString5_7(AccountPointer->PopDownX1+2+(TempByte1-TempByte3)*6,AccountPointer->PopDownY1+2,0x03,0x03, //显示账号
&AccountBuf[TempByte2],TempByte3);
YJHDisplayString5_7(AccountPointer->PopDownX1+2,AccountPointer->PopDownY1+10,0x03,0x03, //显示账号
&AccountBuf[TempByte3+TempByte2],TempByte1);
}
else //单行显示
{
TempByte2=AccountLength*2-TempByte3; //显示字符在表中位置
TempByte1=AccountPointer->PopDownX1+(TempByte1-TempByte3)*6+3; //X
YJHDisplayString5_7(TempByte1,AccountPointer->PopDownY1+7,0x03,0x03,//显示账号
&AccountBuf[TempByte2],TempByte3);
}
}
void DrawRollbar(uchar x1,uchar y1,uchar y2,uint firstnum,uchar dispnum,uint allnum)
{
uint blockhigh; //定义滚动条中黑块的高度
uint TempInt;
uchar y;
if (allnum > dispnum) {
DrawTrigonUp(x1,y1,0x3);
DrawTrigonDn(x1,y2-3,0x3);
YJHDrawRectangle(x1+1,y1+4,x1+3,y2-5,0x51);
blockhigh = (y2-y1-8)*dispnum;
blockhigh = (uchar)(blockhigh/allnum); //y2-y1-8 为滚动条的全长
TempInt = (y2-y1-8)*(firstnum-1);
y = y1+4+TempInt/allnum;
if ((firstnum+dispnum) > allnum) {
y = y2-5-blockhigh;
}
YJHDrawRectangle(x1+1,y,x1+3,y+blockhigh,0x73);
}
}
void YJHReadFlashToExterMem(uchar Page,uint Length,ucharx *SourcePointer,ucharx *DestPointer)
{
#ifdef WIN32
YJSReadFlashToExterMem(Page,Length,(uint)SourcePointer,DestPointer);
#else
if(Length!=0)
{
PublicVariable2=(uchar)(((uint)(DestPointer))>>8);
PublicVariable3=(uchar)((uint)DestPointer);
ReadFlashToExterMem(Page,Length,SourcePointer);
}
#endif
}
void YJHClearWindow(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar Color)
{
PublicVariable1=Y2;
PublicVariable2=Color;
ClearWindow(X1,Y1,X2);
}
uchar get_charlen(ucharx *str,uchar len0) //字符字节数(不含空格)
{
uchar i;
uchar len1=0;
for(i=0;i<len0;i++)
{
if(str[i]>0x20)len1++;
}
return(len1);
}
void YJHDrawLine(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar DispMode)
{
PublicVariable1=Y2;
PublicVariable2=DispMode;
DrawLine(X1,Y1,X2);
}
//displaymode: bit7,6,5,4,3保留, bit2(正常=0,反白=1), bit1,0(颜色)
void YJHDrawRectangle(uchar X1,uchar Y1,uchar X2,uchar Y2,uchar DispMode)
{
PublicVariable1=Y2;
PublicVariable2=DispMode;
DrawRectangle(X1,Y1,X2);
}
//displaymode: bit7保留, bit6填充使能,bit5,4填充颜色,bit3保留,bit2(正常=0,反白=1), bit1,0(颜色)
void YJHReverseRectangle(uchar X1,uchar Y1,uchar X2,uchar Y2)
{
PublicVariable1=Y2;
ReverseRectangle(X1,Y1,X2);
}
//yjs20031221
/*
void YJHStringDisplay(uchar X,uchar Y,uchar LibSel,uchar DispMode,ucharx *Spointer,uchar StrLen)
{
uchar actlen=0;
uchar i=0;
uchar j=0;
ucharx k=0;
ucharx m=0;
ucharx n=0;
PublicVariable1=0;//保存是否有'_'
if((StrLen&0x80)==0x80) //如果传入的 StrLen 为字节个数
{
StrLen=StrLen&0x7f;
actlen=get_textlen(Spointer,StrLen); //扫描字符个数
for(i=0;i<StrLen;)
{
if((*(Spointer+i)>=0xa0)&&(*(Spointer+i)!=0xff))
{
i+=2;
}
else
{
if(*(Spointer+i)=='_')
{
PublicVariable1=1;
break;
}
i++;
}
}
}
else
{
actlen=StrLen;
k=0;
for(i=0;i<StrLen;)
{
if((*(Spointer+k)>=0xa0)&&(*(Spointer+k)!=0xff))
{
i++;
k+=2;
}
else
{
if(*(Spointer+k)=='_')
{
PublicVariable1=1;
break;
}
i++;
k++;
}
}
}
if(X==0xff)
{
i=get_hzlen(Spointer,actlen); //汉字字符个数4
m=actlen-i; //英文字符个数3
j=DispMode>>4;
j=j*(actlen-1);
i=m*6+i*12;
j=128-i-j;
j=j/2;
}
else j=X;
if(PublicVariable1==1)
{
i=0;
m=0;
k=0;
for(i=0;i<actlen;i++)
{
PublicVariable1=1;
PublicVariable2=DispMode; //BIT4-BIT7:显示字符间隔,BIT3:保留,bit2(正常=0,反白=1), bit1,0(颜色)
PublicVariable3=LibSel; //BIT7:保留,BIT6:背景颜色使用标志,0:叠加,1:覆盖,BIT4-BIT5:显示字符背景颜色,BIT3:保留,BIT2:内外字库选择(0:CPU内字库,1:FLASH内字库),BIT0-BIT1:字库选择(00:6*12,01:12*12,10:16*16)
if((*(Spointer+k)>=0xa0)&&(*(Spointer+k)!=0xff))
{
m=2;
n=Y;
}
else
{
m=1;
if((*(Spointer+k)=='_')&&(Y>0))
{
n=Y-1;
}
else n=Y;
}
StringDisplay(j,n,Spointer+k);
j=j+6+(DispMode>>4);
if(m==2)
{
j=j+6;
}
k=k+m;
}
}
else
{
PublicVariable1=actlen;
PublicVariable2=DispMode; //BIT4-BIT7:显示字符间隔,BIT3:保留,bit2(正常=0,反白=1), bit1,0(颜色)
PublicVariable3=LibSel; //BIT7:保留,BIT6:背景颜色使用标志,0:叠加,1:覆盖,BIT4-BIT5:显示字符背景颜色,BIT3:保留,BIT2:内外字库选择(0:CPU内字库,1:FLASH内字库),BIT0-BIT1:字库选择(00:6*12,01:12*12,10:16*16)
if(StrLen!=0) //长度不等于零才显示
{
StringDisplay(j,Y,Spointer);
}
}
}
*/
void YJHStringDisplay(uchar X,uchar Y,uchar LibSel,uchar DispMode,ucharx *Spointer,uchar StrLen)
{
uchar actlen=0;
uchar i;
uchar j;
if((StrLen&0x80)==0x80) //如果传入的 StrLen 为字节个数
{
StrLen=StrLen&0x7f;
actlen=get_textlen(Spointer,StrLen); //扫描字符个数
PublicVariable1=actlen; //7
}
else //如果传入的 StrLen 为字符个数
{
PublicVariable1=StrLen;
}
PublicVariable2=DispMode; //BIT4-BIT7:显示字符间隔,BIT3:保
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -