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

📄 roll_bar_test.c

📁 LINUX下POS收银系统,可以对货物及工作人员进行管理.近本实现增删改查的功能
💻 C
字号:
#include "roll_bar.h"

int GetInputString(ROLL_BAR *r)
{
	int sign=0;
	sign=(*(r->input))->input_char(*(r->input),1,1,1);
	return sign;
}

int (*fp1)(ROLL_BAR *r)=GetInputString;

void print_one_node(ROLL_BAR *r,int choise)
{
	NODE *temp=NULL;
	temp=(*(r->link))->get_node_by_index((*(r->link)),r->current_suffix);
	if(choise)
	{
		(*(r->frame+1))->color=*(r->colors+1);
	}
	else
	{
		(*(r->frame+1))->color=*(r->colors);
	}
	mvwprintw((*(r->frame+1))->win,0,0,"%-7d%",*((int *)(temp->data)));
/*	mvwprintw(r->f->win,0,0,"%-7d%-12s%-28s%-6s%-6s%-8.2f%-6d%-8.2f",((UNS*)(temp->data))->num,
		((UNS*)(temp->data))->bar_code,((UNS*)(temp->data))->commodity_name,((UNS*)(temp->data))->spec,
		((UNS*)(temp->data))->unti,((UNS*)(temp->data))->sell_price,((UNS*)(temp->data))->total_count,
		((UNS*)(temp->data))->total_pay);*/
	(*(r->frame+1))->draw(*(r->frame+1));
}

//void fp2(ROLL_BAR *r,int ch)=print_one_node;

void print_one_page(ROLL_BAR *r)
{
	int i=0;
	if((*(r->link))->count < r->height_and_length[0])
	{
		r->current_suffix++;
		for (i=1;i<(*(r->link))->count;i++)
		{
			mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
			print_one_node(r,0);
			r->current_suffix++;
		}
	}
	else
	{
		r->current_suffix++;
		for (i=1;i< r->height_and_length[0];i++)
		{
			mvwin((*(r->frame+1))->win,r->startXY[0]+i,r->startXY[1]);
			print_one_node(r,0);
			r->current_suffix++;
		}
	}
	r->current_suffix=1;
	mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
	print_one_node(r,1);

}
/*
typedef struct roll_bar
{
	LINK **link;
	FRAME **frame;
	INPUT **input;
	int **colors;
	int startXY[2];
	int height_and_length[2];
	int current_place;
	int current_suffix;

	int (*get_input_string)(struct roll_bar *,void (*get_s)(struct roll_bar *));
	void (*print_one_page)(struct roll_bar *,void (*print_p)(struct roll_bar *));
	void (*print_one)(struct roll_bar *,int choise,void (*print_p)(struct roll_bar *,int choise));
	void (*free)(struct roll_bar **);
	void (*action)(struct roll_bar *,void (*action)(struct roll_bar *));
	
}ROLL_BAR;
*/
void action_roll(ROLL_BAR *r)
{
	int result=0;
	int sign=1;
	int i=0;
	do
	{
		result=r->get_input_string(r,fp1);
		switch (result)
		{
		case 1:
			if(0 == (*(r->link))->count)
			{
				continue;
			}
			if (r->current_place>1)
			{
				mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
				print_one_node(r,0);
				r->current_place--;
				r->current_suffix--;
				mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
				print_one_node(r,1);
			} 
			else
			{
				if (r->current_suffix>1)
				{
					r->current_suffix--;
					mvwin((*(r->frame+1))->win,r->startXY[0],r->startXY[1]);
					print_one_node(r,1);
					for (i=1;i<r->height_and_length[0];i++)
					{
						r->current_suffix++;
						mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place+i-1,r->startXY[1]);
						print_one_node(r,0);
					}
					r->current_suffix-=r->height_and_length[0]-1;
					
				} 
				else
				{
					continue;
				}
			}
			break;
		case 2:
			if(0 == (*(r->link))->count)
			{
				continue;
			}
			if(r->current_suffix<(*(r->link))->count)
			{
				if (r->current_place<r->height_and_length[0])
				{
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,0);
					r->current_place++;
					r->current_suffix++;
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,1);
				} 
				else
				{
					r->current_suffix++;
					mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1,r->startXY[1]);
					print_one_node(r,1);
					for (i=1;i<r->height_and_length[0];i++)
					{
						r->current_suffix--;
						mvwin((*(r->frame+1))->win,r->startXY[0]+r->current_place-1-i,r->startXY[1]);
						print_one_node(r,0);
					}
					r->current_suffix+=r->height_and_length[0]-1;
				}
			}
			else
			{
				continue;
			}
			break;
		case 10:
			sign=0;
			break;
		}

	}
	while (sign);
}

int main()
{
	initscr();
	refresh();
	if(has_colors==FALSE)
	{
		endwin();
		exit(0);
	}
	start_color();
	init_pair(1,COLOR_BLACK,COLOR_WHITE);
	init_pair(2,COLOR_WHITE,COLOR_RED);
	int j=0;
	LINK *link=new_link();
	
	for (j=0;j<10 ;j++ )
	{
		link->insert_front(link, &j, sizeof(int));
	}

	FRAME *f[2];

	INPUT *i[1];
	int c[2]={1,2};
	f[0]=creat_frame(5,19,18,40,2);
	f[1]=creat_frame(9,31,1,4,1);

	i[0]=create_input(f[1],0,1,2,0);

	ROLL_BAR *r=create_roll_bar(&link,f,i,0,0,5,8,c);
	print_one_page(r);
	action_roll(r);

	f[0]->free(&f[0]);
	f[0]->free(&f[1]);
	i[0]->free(&i[0]);
	link->del_all(&link);
	attroff(COLOR_PAIR(1));
	attroff(COLOR_PAIR(2));
	endwin();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -