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

📄 dongyi.c.bak

📁 嵌入式开发
💻 BAK
📖 第 1 页 / 共 2 页
字号:
					}
				}
			
			
				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 + -