⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphfun.c

📁 dos下pos机程序 连接sybase数据库 使用Microsoft c7 编译
💻 C
📖 第 1 页 / 共 3 页
字号:
		   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 + -