常用傳票摘要(設定)
原始程式
原始檔-起始 /*---------( FSACP002.C )-------傳票摘要建檔-------*/ #include "W_FSAC.H" #define SX 3 /*左內框 */ #define SY 4 /*上內框 */ #define SC 76 /*內框寬, 多少行 */ void Read1Page(); void Write1Page(); void Show1Page(); void Del1Page(); /*================================================================*/ FSACF002_T ACF002; char *Table ="\ ┌───────────┬────────────────────────┐\ │摘要編號:--- │摘要:--------------------------------- │\ └───────────┴────────────────────────┘"; /*===========================================================================*/ void main() { USetBXYN(Table,SX,SY,SC); UShowTable(3,4,78,6,Table,V_TABLE); NamS=GET_NAME; Ugd_Open("Esc:目錄 F10:刪除摘要 PgUp,Dn:存入,前後頁"); OPEN_ACF002; UDrawBox(1,3,80,24,V_BLUE,NO,NO,2); Ufk_ReadLast(ACF002K,ACF002.KEY); Read1Page(); while(1) { if(Field==1) if(UReadS(BXN(1),ACF002.KEY,"NL",V_SHOW,V_READ)) Read1Page(); if(Field==2) UReadS( BXN(2),ACF002.RM,"C",V_SHOW,V_READ); switch(RetKey) { case F10 : Del1Page(); break; case LEFT : case UP : if(--Field < 1) Field=2; break; case RIGHT : case DOWN : if(++Field > 2) Field=1; break; case PGUP : case PGDN: case C_PGUP: case C_PGDN: L=atol(ACF002.KEY)+1; Write1Page(); if(RetKey==ENTER) break; if(Ufk_PgUD(ACF002K,ACF002.KEY)==OFF) sprintf(ACF002.KEY,"%0*ld",3,L); Read1Page(); Field=2; break; case ESC : Write1Page(); Ufk_WriteLast(ACF002K); if(RetKey==ENTER) break; else exit(0); break; } if(Modify==ON) USetColor(SX,SY-1,6,V_MODIFY); } } /*===========================================================================*/ void Read1Page() { if(Ufk_Read(ACF002K,&ACF002,NULL)==OFF) { memset(&ACF002.KEY[0]+sizeof(ACF002.KEY),NULL,sizeof(ACF002)-sizeof(ACF002.KEY)); UShowS(SX,SY-1,"(新增)",V_CREATE); } else UShowS(SX,SY-1,"(修改)",V_EDIT); Modify=OFF; OffSet=0; Show1Page(); /*讀入時一定要Modify=OFF*/ } /*===========================================================================*/ void Write1Page() { if(Modify==OFF) return; if(ACF002.KEY[0]==NULL){ UWait(ON,"無摘要編號 .Enter 修改"); Field=1; return; } Ufk_Write(ACF002K,&ACF002); } /*===========================================================================*/ void Show1Page() { UShowSL(BXN(1),ACF002.KEY,V_SHOW); UShowSL(BXN(2),ACF002.RM,V_SHOW); } /*===========================================================================*/ void Del1Page() { UWait(ON,"若 確 定 要 刪 除 本 筆 資 料 .請 再 按 F10"); if(RetKey!=F10) return; Ufk_Del(ACF002K,&ACF002); if(Ufk_PgUD(ACF002K,ACF002.KEY)==OFF) memset(&ACF002,NULL,sizeof(ACF002)); Read1Page(); } 原始檔-結束
Byron Wey Oct.21.1998