📄 qtsy31p.txt
字号:
case 3: strcpy(value,_lpSP->jldw); // 单位
AlignMent=1;
break;
case 4: GetDec(value,_lpSP->sl,-1,0);
AlignMent=2;
break;
case 5: sprintf(value,"%.2f",_lpSP->sj); // 售价
AlignMent=2;
break;
case 6: sprintf(value,"%.2f",_lpSP->sjsj); // 优惠价
AlignMent=2;
break;
case 7: if(Param.Dyssje[0]=='1')
sprintf(value,"%.2f",_lpSP->ssje); //实收金额
else
sprintf(value,"%.2f",_lpSP->je);
AlignMent=2;
break;
}
}
DrawTextEx(Rect.sx+2,Rect.sy+2,value,DBGrid.Columns[x].Width,Co,AlignMent);
}
else
{
DrawBar(Rect.sx+1,Rect.sy+1,Rect.ex-1,Rect.ey-1,
DBGrid.Columns[x].TColor,0xff);
DrawTextEx(Rect.sx+1,Rect.sy+2,value,DBGrid.Columns[x].Width,Co,
DBGrid.Columns[x].TAlignMent);
}
}
//显示标题
void DrawTitle(void)
{
int i;
for(i=0;i<DBGrid.ColCount;i++)
DrawCell(i,0,DBGrid.Columns[i].TCaption,DBGrid.Columns[i].TFontColor,0);
}
//显示合计行
void DrawSum(int Att)
{
char value[21];
double r;
if(!Att)
{
DrawBar(2,286,24,304,DBGrid.Columns[0].Color,0xff);
DrawTextEx(25,287,"合计笔数",72,clWhite,1);
DrawBar(360,286,434,304,DBGrid.Columns[3].Color,0xff);
//DrawTextEx(360,287,"优惠额",84,clWhite,1);
//DrawTextEx(502,287,"应收额",68,clWhite,1);
}
//显示记录数
sprintf(value,"%d",SPLists->RecordCount);
DrawBar(100,286,320,300,DBGrid.Columns[1].Color,0xff);
DrawTextEx(102,287,value,120,clWhite,0);
if(Att<2)
{
//显示顾客要付的金额
sprintf(value,"%.2f",SPLists->ysje);
DrawBar(416,309,633,377,clNavy,0xff);
DrawTextEx(416,314,value,216,clYellow,-2);
}
//数量合计
GetDec(value,SPLists->sl,-1,0);
DrawBar(380,286,444,304,DBGrid.Columns[2].Color,0xff);
DrawTextEx(380,287,value,68,clWhite,2);
//显示优惠额 //优惠价
r = SPLists->spje-SPLists->ysje;
if(r<0.01&&r>-0.01) r=0;
DrawBar(506,286,565,304,DBGrid.Columns[2].Color,0xff);
sprintf(value,"%.2f",r);
DrawTextEx(508,287,value,60,clWhite,2);
//应付金额 //金额
sprintf(value,"%.2f",SPLists->spje);
DrawBar(580,286,637,304,DBGrid.Columns[2].Color,0xff);
DrawTextEx(582,287,value,58,clWhite,2);
//清空找零区域
//DrawBar(416,382,633,452,clNavy,0xff);
}
//显示一列
void DrawCol(int x)
{
int i;
for(i=1;i<DBGrid.RowCount-1;i++)
DrawCell(x,i,"OK",DBGrid.Columns[i].FontColor,0);
}
//显示一行
void DrawRow(int y)
{
int i;
//通常情况下,y相当于记录号
//滚屏判断
for(i=0;i<DBGrid.ColCount;i++)
DrawCell(i,y,"",DBGrid.Columns[i].FontColor,0);
}
//显示数据
void DrawFixed(void)
{
int i;
for(i=1;i<DBGrid.RowCount-1;i++)
DrawRow(i);
DrawSum(0);
}
//
void DrawFixedEx(void)
{
int i;
for(i=1;i<DBGrid.RowCount-1;i++)
DrawRow(i);
DrawSum(2);
}
void PaintDBGrid(void)
{
int i,x;
int sx,sy,ex,ey;
sx=DBGrid.Left;
sy=DBGrid.Top;
ex=sx+DBGrid.Width-1;
ey=sy+DBGrid.Height-1;
DrawBar(sx,sy,ex,ey,DBGrid.Color,0xff);
//显示竖线
x=sx;
for(i=0;i<DBGrid.ColCount;i++)
{
Line(x,sy,x,ey,clSilver,1,COPY_PUT,0xff);
x+=DBGrid.Columns[i].Width;
}
//显示横线
x=DBGrid.Top;
for(i=0;i<DBGrid.RowCount;i++)
{
Line(sx,x,ex,x,clSilver,1,COPY_PUT,0xff);
x+=DBGrid.RowHeight;
}
if(DBGrid.BorderStyle) //显示边界
Rectangle(sx,sy,ex,ey,clSilver,clSilver);
DrawTitle(); //显示台头
DrawFixed(); //显示数据
}
//
int __MoveScreen(int *y)
{
int m,l,i,n;
n=*y;
//减去列头行和合计行
l=DBGrid.RowCount-2; //数据行数
if(n>DBGrid.TopRows&&n<=l+DBGrid.TopRows)
{
*y=*y-DBGrid.TopRows;
return 1; //可见行
}
if(n<=DBGrid.TopRows) //向下滚动
{
m=DBGrid.TopRows-n+1; //向下滚动的行数
DBGrid.TopRows-=m; //顶部不可见行减少
if(m>=l) //滚动行数大于等于整屏
DrawFixed(); //重新显示所有数据
else
{
MoveScreen(0,87,639,86+(l-m)*DBGrid.RowHeight,
0,87+m*DBGrid.RowHeight);
for(i=1;i<=m;i++) //重庆显示被滚动的行
DrawRow(i); //显示某行
}
}
else
{
m=n-l-DBGrid.TopRows; //滚动的行数
DBGrid.TopRows+=m; //顶部不可见行增加
if(m>=l)
DrawFixed(); //重新显示所有数据
else
{
MoveScreen(0,87+m*DBGrid.RowHeight,639,85+l*DBGrid.RowHeight,0,87);
for(i=l-m;i<=l;i++) //重庆显示被滚动的行
DrawRow(i); //显示某行
}
}
return 0;
}
//显示表格数据
void DrawDBGrid(int DrawAtt,int n)
{
switch(DrawAtt)
{
case 0: PaintDBGrid();//显示全部
break;
case 1: DrawFixed(); //显示数据
break;
case 2: DrawSum(1); //显示合计行
break;
case 3: if(__MoveScreen(&n)) DrawRow(n); //显示某行
DrawSum(1);
break;
case 4: DrawCol(n); //显示某列
break;
case 5: if(__MoveScreen(&n)) DrawRow(n); //显示某行
break;
case 6: DrawFixedEx();
}
}
//显示标题
void ShowTitle(void) //
{
}
//显示收银员等
void ShowSyj_Name(void)
{
DrawText(364,10,"收银机:",clBlack,1);
DrawText(420,10,Param.SyjNo,clNavy,1);
}
void ShowSyy_Name(void)
{
DrawText(364,36,"收银员:",clBlack,1);
DrawText(420,36,Syy_Name,clNavy,1);
}
void ShowBc_Name(void)
{
char value[3];
DrawText(484,10,"班 次:",clBlack,1);
DrawText(540,10,g_bc,clNavy,1);
switch(__syfs)
{
case 0:strcpy(value,"单");
break;
case 1:strcpy(value,"半");
break;
default:strcpy(value,"联");
}
RRectangle(591,8,630,30,clBlack,clBlack);
DrawBar(601,11,627,27,clSilver,0xaa);
DrawText(603,11,value,clBlack,1);
DrawText(602,11,value,clYellow,1);
RRectangle(591,33,630,55,clBlack,clBlack);
DrawText(595,37,g_gz_modeex,clBlack,1);
DrawText(594,36,g_gz_modeex,clYellow,1);
}
void ShowLsh_No(void)
{
char value[5];
DrawText(484,36,"流水号:",clBlack,1);
sprintf(value,"%d",SPLists->lsh);
DrawBar(540,36,590,52,clSilver,0xff);
DrawText(540,36,value,clNavy,1);
}
void ShowSyInf(void)
{
RRectangle(358,5,633,58,clBlack,clBlack);
ShowSyj_Name();
ShowSyy_Name();
ShowBc_Name();
ShowLsh_No();
}
//登录函数
//显示按钮
void ShowButton(TButton *Button,int Att)
{
int sx,sy,ex,ey,off;
unsigned char color;
sx=Button->Left;
sy=Button->Top;
ex=sx+Button->Width;
ey=sy+Button->Height;
if(Button->Ctl3D)
{
RectangleFill(sx,sy,ex,ey,clSilver,clBlack,clSilver,0xff);
Rectangle(sx+1,sy+1,ex-1,ey-1,clWhite,clAqua);
}
else
{
sx++;
sy++;
ex--;
ey--;
if(Button->State&&Att) //选中
RRectangle(sx,sy,ex,ey,clWhite,clBlack);
else
RRectangle(sx,sy,ex,ey,clNavy,clNavy);
}
off=(Button->Height-16)/2;
color=Button->FontColor;
if(Button->State&&Att)
color=clYellow;
DrawTextEx(sx,sy+off,Button->Caption,Button->Width,color,1);
}
//
void Window(int sx,int sy,int ex,int ey,unsigned char color,
char *caption,int Att)
{
//定义两个按钮
TButton OkButton={2001,3,0,0,68,21,clSilver,clBlack,"确定",1,0};
TButton CancelButton={2001,4,0,0,68,21,clSilver,clBlack,"取消",1,0};
int k;
if(!Att)
k=(ex-sx-144)/3;
else
k=(ex-sx-72)/2;
OkButton.Left=sx+k;
OkButton.Top=ey-38;
CancelButton.Left=ex-k-72;
CancelButton.Top=ey-38;
GetImage(sx,sy,ex,ey);
DrawBar3d(sx,sy,ex-3,ey-3,color,0xff,clBlack,0xff,3,clGreen,clGreen);
RectangleFill(sx+3,sy+3,ex-6,sy+23,clBlack,clWhite,clNavy,0xff);
DrawText(sx+5,sy+5,caption,clWhite,1);
switch(Att)
{
case 0:ShowButton(&CancelButton,0);
case 1:ShowButton(&OkButton,0); //显示按钮
break;
case 2:ShowButton(&CancelButton,0);
break;
case 3:ShowButton(&CancelButton,0);
default:break;
}
}
//消息框
int MsgBox(int sx,int sy,int ex,int ey,unsigned char color,
char *caption,int Att)
{
int k;
Msg *Message;
Window(sx,sy,ex,ey,color,"提示",Att);
k=sy+(ey-sy)/2-12;
DrawText(sx+32,k,caption,clBlack,1);
k=2;
ClearKey();
while(k==2)
{
Message = Getkey();
if(Message->type==-1)
switch(Message->h.RetKey)
{
case ESCKEY:k=0;
break;
case CRKEY: if(Att<3) k=1;
break;
}
}
PutImage(sx,sy);
return k;
}
//信息框
int MsgBoxEx(char *caption,int Att)
{
int l,w;
w=strlen(caption)*8+96-Att*16;
l=(640-w)/2;
w+=l;
return MsgBox(l,120,w,240,clSilver,caption,Att);
}
//密码输入窗口(PW-密码),成功时返回1,否则返回0
int InPutPassWord(char *PW)
{
int sx=200,sy=120,ex=439,ey=240;
Msg *Message;
int bLoop=2;
TEdit PWEdit={2002,1,sx+96,sy+48,120,22,clWhite,clBlack,"",0,0,0,0,1};
Window(sx,sy,ex,ey,clSilver,"密码输入",0);
DrawText(sx+16,sy+50,"请输入密码",clBlack,1);
InBuffer(-1,EDITPASSW,0,0);
while(bLoop==2)
{
Message=Getkey();
switch(Message->h.RetKey)
{
case EDITPASSW:TextEdit(&PWEdit,10,1,1);
break;
case CRKEY: if(!strcmp(PW,PWEdit.Text)) //密码正确
bLoop=1;
else MsgBoxEx("密码错误!",1);
break;
case ESCKEY: bLoop=0;
}
if(bLoop==2&&!BiosKey()) InBuffer(-1,EDITPASSW,0,0);
}
PutImage(sx,sy);
return bLoop;
}
//系统锁定
void SysLock(void)
{
Msg *Message;
char value[11];
int j=0;
if(Param.SyjLx[0]=='7') system("shutdown>null");
Window(200,120,439,240,clSilver,"系统锁定",1);
DrawText(216,166,"你可以直接关闭计算机电源.",clBlack,1);
ClearKey();
while(1)
{
Message=Getkey();
if(Message->h.RetKey==BSKEY&&j>0)
{
j--;
value[j]='\0';
}
else
if(j<10)
{
value[j++]=(char)Message->h.LKey;
value[j]='\0';
if(!strcmp(value,"fortuna")) break;
}
}
PutImage(200,120);
}
//收银员登录
short Login(void)
{
int bLoop=2,lCount=10; //登录计数
char value[31];
//定义两个标签
TLabel SyfsLabel={2003,0,176,148,50,22,clSilver,clBlack,clYellow,0,"收银方式※",0};
TLabel UserLabel={2003,0,176,176,50,22,clSilver,clBlack,clYellow,0,"收银员代码",0};
TLabel PassWLabel={2003,0,176,204,50,22,clSilver,clBlack,clYellow,0,"收银员密码",0};
TLabel LoginLabel={2003,0,260,232,120,22,clSilver,clMaroon,clYellow,0,"",0};
//定义两个编辑框
TEdit SyfsEdit={2002,0,260,146,96,22,clWhite,clBlack,"2",0,0,0,0,1};
TEdit UserEdit={2002,1,260,174,96,22,clWhite,clBlack,"",0,0,0,0,1};
TEdit PassWEdit={2002,2,260,202,96,22,clWhite,clBlack,"",0,0,0,0,1};
//定义两个按钮
TButton OkButton={2001,3,224,256,72,21,clSilver,clBlack,"确定",1,0};
TButton CancelButton={2001,4,344,256,72,21,clSilver,clBlack,"取消",1,0};
//定义消息指针
Msg *Message;
//保存屏幕区域
DrawBar(0,0,639,487,clNavy,0xff); //清屏幕
DrawBar3d(159,112,476,290,clSilver,0xff,
clBlack,0xff,3,clBlack,clBlack);
RectangleFill(162,115,474,135,clBlack,clWhite,clNavy,0xff);
DrawText(164,117,"登录...",clWhite,1);
//显示标签
ShowLabel(&SyfsLabel,NULL);
RRectangle(362,145,466,224,clNavy,clNavy);
DrawText(366,148,"0-单机收银",clFuchsia,1);
DrawText(366,176,"1-半单机收银",clFuchsia,1);
DrawText(366,204,"2-联机收银",clFuchsia,1);
ShowLabel(&UserLabel,NULL);
ShowLabel(&PassWLabel,NULL);
//显示输入框
TextEdit(&SyfsEdit,1,0,0);
TextEdit(&UserEdit,10,0,0);
TextEdit(&PassWEdit,10,0,1);
//显示按钮
ShowButton(&OkButton,0);
ShowButton(&CancelButton,0);
//
InBuffer(-2,EDITSYFS,0,0);
//消息循环
while(bLoop>1)
{
Message=Getkey();
switch(Message->type)
{
case -2: switch(Message->h.RetKey) //是功能键
{
case EDITSYFS:
TextEdit(&SyfsEdit,1,1,0);
break;
case EDITUSER:
TextEdit(&UserEdit,10,1,0);
break;
case EDITPASSW:
TextEdit(&PassWEdit,10,1,1);
break;
case WM_LOGIN: //收银员登录
if(!__sqlok||!strcmp("0",SyfsEdit.Text)) //单计收银
__syfs=0;
else if(!strcmp("1",SyfsEdit.Text)) //半单机收银
__syfs=1;
else
__syfs=2;
strcpy(Syy_No,UserEdit.Text);
strcpy(Syy_mm,PassWEdit.Text);
bLoop=sql_login();
lCount--;
if(!bLoop&&lCount) //登录失败
{
sprintf(value,"你还有%d次登录机会!",lCount);
ShowLabel(&LoginLabel,value);
bLoop=2;
InBuffer(-2,EDITUSER,0,0);
}
break;
case ALT_C:
InBuffer(-1,ESCKEY,0,0);
break;
case ALT_O:
InBuffer(-1,CRKEY,PassWEdit.Handle,0);
break;
default:InBuffer(-2,EDITSYFS,0,0);
}
break;
case -1: switch(Message->h.RetKey) //是控制键
{
case CRKEY: //登录
switch(Message->x)
{
case 0:
InBuffer(-2,EDITUSER,0,0);
break;
case 1: //是UserEdit
InBuffer(-2,EDITPASSW,0,0);
break; //焦点移动到密码编辑框
case 2: //是PassWEdit
case 3: //是确定按钮
InBuffer(-2,WM_LOGIN,0,0); //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -