NumEdit.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /********************************************************************************
  2. * File Name: NumEdit.c
  3. * Function Describe: NumEdit 控件
  4. * Relate Module: GUI.c
  5. * Writer: Shliangwen
  6. * Date: 2016-1-31
  7. *********************************************************************************/
  8. #include "Includes.h"
  9. void NumEditInit(SUT_NUM_EDIT *p,unsigned short x,unsigned char y,char *def)
  10. {
  11. //memset(p,0,sizeof(SUT_NUM_EDIT));//////////////
  12. p->x=x;
  13. p->y=y;
  14. strncpy(p->buffer,def,NUM_EDIT_BUFFER_LEN_MAX);
  15. p->len=strlen(p->buffer);
  16. p->xlen=p->len*8;
  17. p->ylen=16;
  18. p->item=0;
  19. }
  20. void NumEditShow(SUT_NUM_EDIT *p)
  21. {
  22. unsigned short x,w;
  23. GuiClearArea(p->x,p->y,p->x+p->xlen,p->y+p->ylen-16); //没有16 清的太多
  24. x=p->item*8;
  25. GuiShowStr(p->x,p->y,p->buffer,0x01);
  26. x+=p->x;
  27. GuiReverseRect(x,p->y,8,16);
  28. }
  29. void NumEditShowNORect(SUT_NUM_EDIT *p)
  30. {
  31. unsigned short x,w;
  32. GuiClearArea(p->x,p->y,p->x+p->xlen,p->y+p->ylen);
  33. x=p->item*8;
  34. GuiShowStr(p->x,p->y,p->buffer,0x01);
  35. x+=p->x;
  36. }
  37. unsigned char NumEditResponse(SUT_NUM_EDIT *p)
  38. {
  39. char v;
  40. v=p->buffer[p->item];
  41. switch(g_ulKeyValue)
  42. {
  43. case KEY_PANEL_UP:
  44. if(v=='-')v='/';//
  45. if(v<'9')v++;
  46. else v='0';
  47. p->buffer[p->item]=v;
  48. NumEditShow(p);
  49. break;
  50. case KEY_PANEL_DOWN:
  51. #if 1//原来下是减值的
  52. if(v>'0')v--;
  53. else v='9';
  54. p->buffer[p->item]=v;
  55. NumEditShow(p);
  56. #else //现在改成向右移动
  57. //if(v=='-')v='0';
  58. p->buffer[p->item]=v;
  59. if(p->item<(p->len-1)){
  60. p->item++;
  61. }else{
  62. p->item=0;
  63. }
  64. NumEditShow(p);
  65. #endif
  66. break;
  67. case KEY_PANEL_EXIT:
  68. if(p->item>0){
  69. p->item--;
  70. }else{
  71. p->item=p->len-1;
  72. }
  73. NumEditShow(p);
  74. break;
  75. case KEY_PANEL_MENU:
  76. if(p->item<(p->len-1)){
  77. p->item++;
  78. }else{
  79. p->item=0;
  80. }
  81. NumEditShow(p);
  82. break;
  83. // case KEY_PANEL_MENU:
  84. // return 1;
  85. // case KEY_PANEL_EXIT:
  86. // return 2;
  87. }
  88. return 0;
  89. }
  90. unsigned char Password_Response(SUT_NUM_EDIT *p,char type)
  91. {
  92. static char counct=0;
  93. char v;
  94. v=p->buffer[p->item];
  95. switch(g_ulKeyValue)
  96. {
  97. case KEY_PANEL_UP:
  98. if(v=='-')v='/';//
  99. if(v<'9')v++;
  100. else v='0';
  101. p->buffer[p->item]=v;
  102. NumEditShow(p);
  103. break;
  104. case KEY_PANEL_DOWN:
  105. if(v>'0')v--;
  106. else v='9';
  107. p->buffer[p->item]=v;
  108. NumEditShow(p);
  109. break;
  110. case KEY_PANEL_EXIT:
  111. if(p->item>0){
  112. p->item--;
  113. }else{
  114. p->item=p->len-1;
  115. }
  116. NumEditShow(p);
  117. break;
  118. case KEY_PANEL_MENU:
  119. if(p->item<(p->len-1)){
  120. p->item++;
  121. }else{
  122. p->item=0;
  123. }
  124. NumEditShow(p);
  125. break;
  126. }
  127. return 0;
  128. }