📄 dongyi.c.bak
字号:
}
}
iReCode=SFX_RUN_CANCEL;
IsRun = 0 ;
break ;
case KEY_RIGHT:
// 下一个字符
form_driver( Form, REQ_NEXT_CHAR);
break;
case KEY_LEFT:
// 上一个字符
form_driver( Form, REQ_PREV_CHAR );
break;
case KEY_DOWN:
// 下一个域
form_driver( Form, REQ_VALIDATION );
break;
case KEY_UP:
// 上一域
form_driver( Form, REQ_VALIDATION );
break;
case _KEY_BS: // LK9000 clr键
case KEY_BACKSPACE: // PC 退格键
// 删除光标前一个字符
form_driver( Form, REQ_DEL_PREV );
break;
default:
// 向当前的域输出字符
form_driver( Form, key );
}
}
}
exit:
unpost_form( Form ); // 清除屏幕上的表单
free_form( Form); // 释放表单资源
for( i = 0 ; i < 1; i++ )
free_field( Field[i]); // 释放域所占的资源
sys_close_laser();
return iReCode;
}
void Sfx_FormDelete(void)
{
int iRunState=SFX_CYC_START;
int iResult=SFX_RUN_START;
while(iRunState)
{
switch(iResult)
{
case SFX_RUN_START:
{
//调用主功能函数
iResult=sfxFormDelete();
iRunState=SFX_CYC_START;
break;
}
case SFX_RUN_CANCEL:
{
//退出循环,返回上层菜单
iResult=SFX_RUN_START;
iRunState=SFX_CYC_STOP;
break;
}
case SFX_RUN_ERROR:
{
//调用错误处理界面
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
default: //扩展功能处理
{
//switch(iResult)
//{
//}
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
}
}
}
int sfxFormDelete(void)
{
//创建表单
// 域指针数组
FIELD *Field[5 + 1 ];
FORM *Form; // 表单指针
int i,IsRun,key;
int k,iErrCode;
char sBuff[50]={0};
char sCurValue[30];
char sBillNo[30]={0},sCount[30]={0};
char sKey[50]={0};
int iReCode=SFX_RUN_START;
DB_HANDLE hRec, hInfo;
clear(); // 清屏
//打开数据库
//盘点
sfxDetailOpen(&hRec);
//库存
sfxWorkIdOpen(&hInfo);
keypad(stdscr, TRUE);
// 创建域
// new_field( 行数 , 列数 , 行位置 , 列位置 , 可显示行数(一般为0) , 缓冲区编号(一般为0) )
Field[0] = new_field( 1 , FIELD_LEN_FIELD, 2, 1, 0 , 0);
Field[1] = new_field( 1 , FIELD_LEN_FIELD, 3, 1, 0 , 0);
Field[2] = new_field( 1 , FIELD_LEN_FIELD, 4, 1, 0 , 0);
Field[3] = new_field( 1 , FIELD_LEN_FIELD, 5, 1, 0 , 0);
Field[4] = new_field( 1 , FIELD_LEN_FIELD, 6, 1, 0 , 0);
Field[5] = 0 ; // 域数组最后一个成员指针以0结束
for( i = 0 ; i < 5; i++ ){
if( Field[i] == 0 ){ // 域创建失败
// 显示消息框
// ONLY_OK 表示按任意键继续
MessageBox( "域创建失败" , ONLY_OK ) ;
goto exit ;
}
// 取消 当域输入满之后自动跳到下一个域的选项
field_opts_off( Field[i], O_AUTOSKIP);
// 设置域的背景为下划线
//set_field_back(Field[i], A_UNDERLINE );
// 设置域填充字符为0x81
set_field_pad(Field[i], 0x81);
}
// 根据域指针数组,生成表单
Form = new_form( Field );
// 显示表单
post_form( Form);
//sprintf(sMsg,"单号[%s]",sCurBillNo);
//sfxTrim(sMsg);
mvprintw(0,0,"查询及删除");
mvprintw(1,0,"──────────");
mvprintw(8,0,"──────────");
//mvprintw(8,0,"按F3键删除此单记录");
mvprintw(9,0,"返回 确定");
// 将输入位置定于第一个字段
form_driver( Form, REQ_FIRST_FIELD );
// 设置商品名称的背景为反白
//set_field_back(Field[field_index(current_field(Form))], A_STANDOUT );
set_field_back(Field[field_index(current_field(Form))], A_REVERSE );
refresh();
IsRun = 1 ;
//设置初值
iErrCode=DB_Go_Top(hRec);
for(k=0;k<5;k++)
{
if(iErrCode!=DB_NO_ERROR) break;
iErrCode=sfxDetailGetValue(hRec,sBillNo,sCount);
if(iErrCode==DB_NO_ERROR)
{
if(DB_Is_Deleted(hRec)==DB_RECORD_NOT_DELETE)
{
sprintf(sBuff,"%s %s",sBillNo,sCount);
set_field_buffer(Field[k],0,sBuff);
}
else
{
k--;
}
}
else
{
break;
}
iErrCode=DB_Go_Next(hRec);
}
//sys_open_laser();
while( IsRun )
{
// 刷新屏幕 并 读入用户按键
switch( key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
form_driver( Form, REQ_VALIDATION ); // 校验
break ;
case _KEY_ENTER: // LK9000 '确认'键
case _KEY_G: // LK9000 'G'键
case KEY_ENTER: // PC键盘的回车键
form_driver( Form, REQ_VALIDATION );
set_field_back(Field[field_index(current_field(Form))], A_NORMAL );
sprintf(sCurValue,"%s",FIELD_VAL(field_index(current_field(Form))));
sfxTrim(sCurValue);
sprintf(sBuff,"确定删除[%s]",sCurValue);
if(MessageBox(sBuff, OK_CANCEL )!=KEY_F(12))
{
DB_Close(hRec);
DB_Close(hInfo);
sfxDeleteFile(sCurValue);
sfxDetailOpen(&hRec);
sfxWorkIdOpen(&hInfo);
iReCode=SFX_RUN_CANCEL;
IsRun=0;
}
break;
case KEY_F(12):
iReCode=SFX_RUN_CANCEL;
IsRun = 0 ;
break ;
case KEY_RIGHT:
// 下一个字符
form_driver( Form, REQ_NEXT_CHAR);
break;
case KEY_LEFT:
// 上一个字符
form_driver( Form, REQ_PREV_CHAR );
break;
case KEY_DOWN:
// 下一个域
form_driver( Form, REQ_VALIDATION );
strcpy(sKey,FIELD_VAL(field_index(current_field(Form))));
sfxTrim(sKey);
set_field_back(Field[field_index(current_field(Form))], A_NORMAL );
sfxScrollDBEx(Form,Field,hRec,"BILLNO",sKey,1);
set_field_back(Field[field_index(current_field(Form))], A_REVERSE );
break;
case KEY_UP:
// 上一域
form_driver( Form, REQ_VALIDATION );
strcpy(sKey,FIELD_VAL(field_index(current_field(Form))));
sfxTrim(sKey);
set_field_back(Field[field_index(current_field(Form))], A_NORMAL );
sfxScrollDBEx(Form,Field,hRec,"BILLNO",sKey,0);
set_field_back(Field[field_index(current_field(Form))], A_REVERSE );
break;
case _KEY_BS: // LK9000 clr键
case KEY_BACKSPACE: // PC 退格键
// 删除光标前一个字符
form_driver( Form, REQ_DEL_PREV );
break;
default:
// 向当前的域输出字符
//form_driver( Form, key );
break;
}
}
exit:
unpost_form( Form ); // 清除屏幕上的表单
free_form( Form); // 释放表单资源
for( i = 0 ; i < 5; i++ )
free_field( Field[i]); // 释放域所占的资源
//sys_close_laser();
dbExit:
DB_Close(hRec);
DB_Close(hInfo);
return iReCode;
}
void Sfx_FormCodeId(void)
{
int iRunState=SFX_CYC_START;
int iResult=SFX_RUN_START;
while(iRunState)
{
switch(iResult)
{
case SFX_RUN_START:
{
//调用主功能函数
iResult=sfxFormCodeId();
iRunState=SFX_CYC_START;
break;
}
case SFX_RUN_CANCEL:
{
//退出循环,返回上层菜单
iResult=SFX_RUN_START;
iRunState=SFX_CYC_STOP;
break;
}
case SFX_RUN_ERROR:
{
//调用错误处理界面
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
default: //扩展功能处理
{
//switch(iResult)
//{
//}
iResult=SFX_RUN_START;
iRunState=SFX_CYC_START;
break;
}
}
}
}
int sfxFormCodeId(void)
{
//创建表单
// 域指针数组
FIELD *Field[1 + 1 ];
FORM *Form; // 表单指针
int i,IsRun,key;
char sMsg[50];
int iReCode=SFX_RUN_START;
clear(); // 清屏
keypad(stdscr, TRUE);
// 创建域
// new_field( 行数 , 列数 , 行位置 , 列位置 , 可显示行数(一般为0) , 缓冲区编号(一般为0) )
Field[0] = new_field( 1 , FIELD_LEN_FIELD, 4, FIELD_LEN_START, 0 , 0);
Field[1] = 0 ; // 域数组最后一个成员指针以0结束
for( i = 0 ; i < 1; i++ ){
if( Field[i] == 0 ){ // 域创建失败
// 显示消息框
// ONLY_OK 表示按任意键继续
MessageBox( "域创建失败" , ONLY_OK ) ;
goto exit ;
}
// 取消 当域输入满之后自动跳到下一个域的选项
field_opts_off( Field[i], O_AUTOSKIP);
// 设置域的背景为下划线
set_field_back(Field[i], A_UNDERLINE );
// 设置域填充字符为0x81
set_field_pad(Field[i], 0x81);
}
// 根据域指针数组,生成表单
Form = new_form( Field );
// 显示表单
post_form( Form);
mvprintw(0,0,"操作员代码");
mvprintw(1,0,"──────────");
mvprintw(4,0,"代码");
mvprintw(8,0,"──────────");
mvprintw(9,0,"返回 确定");
// 将输入位置定于第一个字段
form_driver( Form, REQ_FIRST_FIELD );
refresh();
IsRun = 1 ;
//sys_open_laser();
while( IsRun )
{
// 刷新屏幕 并 读入用户按键
switch( key = getch() )
{
case _KEY_LASER_BEGIN:
form_driver( Form, REQ_CLR_FIELD );
break ;
case _KEY_LASER_END:
form_driver( Form, REQ_VALIDATION ); // 校验
break ;
case _KEY_ENTER: // LK9000 '确认'键
case _KEY_G: // LK9000 'G'键
case KEY_ENTER: // PC键盘的回车键
form_driver( Form, REQ_VALIDATION );
//校验位长
if(sfxCheckBillLen(FIELD_VAL(0)))
{
if(sfxSetWorkId(FIELD_VAL(0))==0)
{
sprintf(sMsg,"%s","新建代码成功!");
}
else
{
sprintf(sMsg,"%s","切换代码成功!");
}
MessageBox( sMsg , ONLY_OK ) ;
iReCode=SFX_RUN_CANCEL;
IsRun=0;
}
else
{
MessageBox( "位长不符!", ONLY_OK ) ;
}
break;
case KEY_F(12):
iReCode=SFX_RUN_CANCEL;
IsRun = 0 ;
break ;
case KEY_RIGHT:
// 下一个字符
form_driver( Form, REQ_NEXT_CHAR);
break;
case KEY_LEFT:
// 上一个字符
form_driver( Form, REQ_PREV_CHAR );
break;
case KEY_DOWN:
// 下一个域
form_driver( Form, REQ_VALIDATION );
break;
case KEY_UP:
// 上一域
form_driver( Form, REQ_VALIDATION );
break;
case _KEY_BS: // LK9000 clr键
case KEY_BACKSPACE: // PC 退格键
// 删除光标前一个字符
form_driver( Form, REQ_DEL_PREV );
break;
default:
// 向当前的域输出字符
form_driver( Form, key );
}
}
exit:
unpost_form( Form ); // 清除屏幕上的表单
free_form( Form); // 释放表单资源
for( i = 0 ; i < 1; i++ )
free_field( Field[i]); // 释放域所占的资源
//sys_close_laser();
dbExit:
return iReCode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -