📄 graphfun.c
字号:
DeleteChar(Text,Edit->CurX);
InBuffer(-4,WM_UPDATE,0,0); //更新显示
}
break;
}
break;
case -2:switch(Buffer->h.RetKey) //是功能键
{
case LEFTKEY: //
if(Edit->CurX>0) Edit->CurX--;
break;
case RIGHTKEY:
if(Edit->CurX<Edit->CountX) Edit->CurX++;
break;
case DELETE:
if(Edit->CurX<Edit->CountX)
{
Edit->CountX--;
DeleteChar(Text,Edit->CurX);
InBuffer(-4,WM_UPDATE,0,0); //更新显示
}
break;
default:
strcpy(Edit->Text,Text);
InBuffer(-4,WM_PAINT,0,0);
InBuffer(-4,WM_EXIT,0,0);
InBuffer(-2,Buffer->h.RetKey,0,0);
break;
}
break;
case 0:if(Edit->CountX<Total) //是正常字符
{
InsertChar(Text,(char)(Buffer->h.RetKey&0xff),Edit->CurX);
Edit->CountX++;
Edit->CurX++;
InBuffer(-4,WM_UPDATE,0,0); //更新显示
}
break;
}
}
return Result;
}
/*TDBGrid,显示数据的表格,由多个列组成TColumn
初始化DBGrid控件 */
//定义一个TDBGrid控件
TDBGrid DBGrid;
unsigned char Colors[8]={clSilver,clNavy,clNavy,clNavy,
clNavy,clNavy,clNavy,clNavy};
void InitDBGrid(int x,int y,int w,int h)
{
int i;
DBGrid.Style=1001;
DBGrid.Handle=0;
DBGrid.Left=x;
DBGrid.Top=y;
DBGrid.Width=w;
DBGrid.Height=h;
DBGrid.ColCount=8;
DBGrid.RowCount=12;
DBGrid.Col=1,DBGrid.Row=1;
DBGrid.RowHeight=20;
DBGrid.Color=clNavy;
DBGrid.BorderStyle=1;
for(i=0;i<DBGrid.ColCount;i++)
{
DBGrid.Columns[i].Style=1002;
DBGrid.Columns[i].Handle=0;
DBGrid.Columns[i].Width=SPTWidth[i];
DBGrid.Columns[i].TColor=clGreen;
DBGrid.Columns[i].TFontColor=clWhite;
strcpy(DBGrid.Columns[i].TCaption,SPTList[i]);
DBGrid.Columns[i].TAlignMent=1;
DBGrid.Columns[i].Color=Colors[i];
DBGrid.Columns[i].FontColor=clWhite;
DBGrid.Columns[i].AlignMent=0;
}
}
//显示表格
//获取单元格的坐标
void GetCellCoor(int x,int y,TRect *Rect)
{
int i;
Rect->sx=DBGrid.Left;
for(i=0;i<x;i++)
Rect->sx+=DBGrid.Columns[i].Width;
Rect->sy=DBGrid.Top;
for(i=0;i<y;i++)
Rect->sy+=DBGrid.RowHeight;
Rect->ex=Rect->sx+DBGrid.Columns[x].Width;
Rect->ey=Rect->sy+DBGrid.RowHeight;
}
//显示单元格
void DrawCell(int x,int y,char far *Value,unsigned char Co)
{
TRect Rect;
GetCellCoor(x,y,&Rect); // 获取单元格的坐标,放入Rect中
//显示背景
if(y)
{
DrawBar(Rect.sx+1,Rect.sy+1,Rect.ex-1,Rect.ey-1,
DBGrid.Columns[x].Color,0xff);
DrawTextEx(Rect.sx+1,Rect.sy+2,Value,DBGrid.Columns[x].Width,Co,
DBGrid.Columns[x].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);
}
//显示一列
void DrawCol(int x)
{
int i;
for(i=1;i<DBGrid.RowCount;i++)
DrawCell(x,i,"OK",DBGrid.Columns[i].FontColor);
}
//显示一行
void DrawRow(int y)
{
int i;
for(i=1;i<DBGrid.ColCount;i++)
DrawCell(i,y,"",DBGrid.Columns[i].FontColor);
}
//显示数据
void DrawFixed(void)
{
int i;
for(i=0;i<DBGrid.ColCount;i++)
DrawCol(i);
}
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(); //显示数据
}
//显示标题
void ShowTitle(void) //
{
}
//显示收银员等
void ShowSyj_Name(void)
{
DrawText(368,10,"收银机:",clBlack,1);
DrawText(424,10,Syj_Name,clBlue,1);
}
void ShowSyy_Name(void)
{
DrawText(368,36,"收银员:",clBlack,1);
DrawText(424,36,Syy_Name,clBlue,1);
}
void ShowBc_Name(void)
{
DrawText(504,10,"班 次:",clBlack,1);
DrawText(560,10,Bc_Name,clBlue,1);
}
void ShowLsh_No(void)
{
DrawText(504,36,"流水号:",clBlack,1);
DrawText(560,36,Lsh_No,clBlue,1);
}
void ShowSyInf(void)
{
ShowSyj_Name();
ShowSyy_Name();
ShowBc_Name();
ShowLsh_No();
}
//登录函数
//显示按钮
void ShowButton(TButton *Button)
{
int sx,sy,ex,ey,off;
sx=Button->Left;
sy=Button->Top;
ex=sx+Button->Width;
ey=sy+Button->Height;
RectangleFill(sx,sy,ex,ey,clSilver,clBlack,clSilver,0xff);
Rectangle(sx+1,sy+1,ex-1,ey-1,clLAqua,clMaroon);
off=(Button->Height-16)/2;
DrawTextEx(sx,sy+off+1,Button->Caption,Button->Width,Button->FontColor,1);
}
short Login(void)
{
int bLoop=2;
//定义两个标签
TLabel UserLabel={2003,0,224,160,50,22,clSilver,clBlack,clYellow,0,"收银员代码",0};
TLabel PassWLabel={2003,0,224,194,50,22,clSilver,clBlack,clYellow,0,"收银员密码",0};
//定义两个编辑框
TEdit UserEdit={2002,0,308,158,100,22,clWhite,clBlack,"",0,0,0,0,1};
TEdit PassWEdit={2002,0,308,192,100,22,clWhite,clBlack,"",0,0,0,0,1};
//定义两个按钮
TButton OkButton={2001,0,224,245,72,23,clSilver,clBlack,"确定(&O)",0};
TButton CancelButton={2001,1,344,245,72,23,clSilver,clBlack,"取消(&C)",0};
//定义消息指针
Msg *Message;
//保存屏幕区域
GetImage(176,120,463,288);
DrawBar3d(179,120,460,283,clSilver,0xff,
clNavy,0xff,3,clBlack,clBlack);
RectangleFill(182,123,457,143,clBlack,clWhite,clNavy,0xff);
DrawText(184,125,"登录...",clWhite,1);
//显示标签
ShowLabel(&UserLabel,NULL);
ShowLabel(&PassWLabel,NULL);
//显示输入框
TextEdit(&UserEdit,10,0);
TextEdit(&PassWEdit,10,0);
//显示按钮
ShowButton(&OkButton);
ShowButton(&CancelButton);
//
InBuffer(-2,EDITUSER,0,0);
//消息循环
while(bLoop>1)
{
Message=Getkey();
switch(Message->type)
{
case -2: switch(Message->h.RetKey) //是功能键
{
case EDITUSER:
switch(TextEdit(&UserEdit,10,1))
{
case CRKEY:
case TABKEY:
InBuffer(-2,EDITPASSW,0,0);
break;
case ESCKEY:
InBuffer(-1,ESCKEY,0,0);
break;
}
break;
case EDITPASSW:
switch(TextEdit(&PassWEdit,10,1))
{
case TABKEY:
InBuffer(-2,EDITUSER,0,0);
break;
case CRKEY:
InBuffer(-1,CRKEY,0,0);
break;
case ESCKEY:
InBuffer(-1,ESCKEY,0,0);
break;
}
break;
case ALT_C: InBuffer(-1,ESCKEY,0,0);
break;
case ALT_O: InBuffer(-1,CRKEY,0,0);
break;
default:InBuffer(-2,EDITUSER,0,0);
}
break;
case -1: switch(Message->h.RetKey) //是控制键
{
case ESCKEY:
bLoop=0; //退出
break;
case CRKEY: //登录
strcpy(Syy_No,UserEdit.Text);
strcpy(Syy_mm,PassWEdit.Text);
bLoop=sql_login();
// ShowSyInf(); //显示收银员信息
break;
default:InBuffer(-2,EDITUSER,0,0);
}
break;
default:InBuffer(-2,EDITUSER,0,0);
}
}
PutImage(176,120);
return bLoop;
}
//功能列表
//CallAtt为调用方式
int CallFun(int CallAtt,unsigned char Color)
{
TButton TJButton={2001,1,66,390,56,21,clSilver,Color,"统计",0};
TButton JBButton={2001,1,124,390,56,21,clSilver,Color,"交班",0};
TButton ZTButton={2001,1,182,390,56,21,clSilver,Color,"暂停",0};
TButton DZButton={2001,1,240,390,56,21,clSilver,Color,"打折",0};
TButton GQButton={2001,1,298,390,56,21,clSilver,Color,"挂起",0};
TButton GJButton={2001,1,66,412,56,21,clSilver,Color,"解挂",0};
TButton XBButton={2001,1,124,412,56,21,clSilver,Color,"下班",0};
TButton TMButton={2001,1,182,412,85,21,clSilver,Color,"条码检查",0};
TButton CXButton={2001,1,269,412,85,21,clSilver,Color,"销售查询",0};
TButton JSButton={2001,1,66,434,56,21,clSilver,Color,"计算器",0};
TButton PZButton={2001,1,124,434,143,21,clSilver,Color,"打印销售凭证",0};
TButton QXButton={2001,1,269,434,85,21,clSilver,Color,"打开钱箱",0};
//显示
Rectangle(1,388,357,457,clBlack,clWhite);//功能列表框
ShowButton(&TJButton);
ShowButton(&JBButton);
ShowButton(&ZTButton);
ShowButton(&DZButton);
ShowButton(&GQButton);
ShowButton(&GJButton);
ShowButton(&XBButton);
ShowButton(&TMButton);
ShowButton(&CXButton);
ShowButton(&JSButton);
ShowButton(&QXButton);
ShowButton(&PZButton);
return 0;
}
// 主函数
int main(void)
{
short bLoop=0;
//定义消息结构指针
Msg *Message;
//定义台头Panel
TPanel HeadPanel={10,1,1,1,638,62,clSilver,1,1,0};
//商品编码编辑框
TEdit SPBMEdit={2002,1,74,310,150,22,clWhite,clBlack,"",0,0,0,0,1};
//数量编辑框
TEdit SLEdit={2002,2,266,310,89,22,clWhite,clBlack,"1000.23",0,0,0,0,1};
//售价编辑框
TEdit SJEdit={2002,3,266,333,89,22,clWhite,clBlack,"98.23",0,0,0,0,1};
//定义金额输入框
TEdit JEEdit={2002,4,266,362,89,22,clWhite,clBlack,"12343.89",0,0,0,0,1};
InitFont(); //初始化字库
InitGraph(0x12); //进入图形模式
Rectangle(0,0,639,479,clGreen,clGreen); //用深蓝色清屏幕
//联接数据库,返回1时表示联接成功
DrawText(8,8,"正在连接SQL服务器...",clYellow,1);
if(sql_connectdb("sa","","server",0))
{
DrawBar(1,1,638,478,clNavy,0xff);
bLoop=Login(); //登录,bLoop!=0时成功
if(bLoop)
{
InitDBGrid(1,65,638,260); //初始化表格
InBuffer(-1,SHOWMAIN,0,0); //发送显示主画面的消息
}
}
else
{
DrawText(8,27,"连接SQL服务器失败!",clYellow,1);
Message=Getkey();
}
//消息循环
while(bLoop)
{
Message=Getkey();
switch(Message->type)
{
case -1:
switch(Message->h.RetKey) //是控制键
{
case SHOWMAIN: //显示主画面
//显示台头
ShowPanel(&HeadPanel);
ShowSyInf(); //显示收银机信息
PaintDBGrid(); //显示表格
DrawBar(0,306,639,479,clSilver,0xff);//显示底部
/*显示信息输入区域*/
Rectangle(1,307,357,357,clNavy,clNavy);//显示信息输入框
DrawText(8,313,"商品编码",clBlack,1);
TextEdit(&SPBMEdit,13,0);
DrawText(232,313,"数量",clBlack,1);
TextEdit(&SLEdit,8,0);
DrawText(232,336,"售价",clBlack,1);
TextEdit(&SJEdit,8,0);
/**/
/*付款方式输入框*/
Rectangle(1,359,357,386,clNavy,clNavy);
DrawText(232,365,"付款",clBlack,1);
TextEdit(&JEEdit,8,0);
/**/
/*功能列表按钮*/
CallFun(0,clGreen);
/****/
Rectangle(359,307,638,457,clNavy,clNavy); //金额显示框
DrawBar3d(416,309,633,377,clNavy,0xaa, //金额
clBlack,0xaa,3,clBlack,clBlack);
DrawBar3d(416,382,633,452,clNavy,0xaa, //找零
clBlack,0xaa,3,clBlack,clBlack);
//显示状态拦
Rectangle(1,459,638,478,clBlack,clWhite); //
DrawTextEx(2,461,"重庆运通资讯科技有限公司",634,clNavy,1);
InBuffer(-2,SPBMEDIT,0,0);
break;
case ESCKEY:
bLoop=0; //退出
break;
}
break;
case -2:
switch(Message->h.RetKey) //是控制键
{
case SPBMEDIT:
TextEdit(&SPBMEdit,13,1);
break;
}
break;
}
}
InitGraph(0x3);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -