/* #TITLE# メッセージアリア操作サンプルマクロ */ /* * 3X3 のメッセージエリアの操作サンプル * * 使用関数 * array * echo * getany * int * mecho * pos * sprint * vtype * */ msg33 = array(3,3); msg33[0][0] = "入力1:"; msg33[0][1] = "入力2:"; msg33[0][2] = "入力3:"; msg33[1][0] = "入力4:"; msg33[1][1] = "入力5:"; msg33[1][2] = "入力6:"; msg33[2][0] = "入力7:"; msg33[2][1] = "入力8:"; msg33[2][2] = "入力9:"; vals = array(9); for(i=0;i<9;i=i+1) { vals[i] = " "; } inp = 9; disp: merase(pos(0,0,6)); for(i=0;i<9;i=i+1) { x = int(i / 3); y = int(i % 3); if( i == inp ) { mecho(pos(x+1,y+1,6),"* " + msg33[x][y] + vals[i]); } else { mecho(pos(x+1,y+1,6)," " + msg33[x][y] + vals[i]); } } echo "入力番号を選択:座標、数値、テキスト、 で終了"; p = getany(1,1); type = vtype(p); switch(type) { case 2: /* 座標型 */ case 6: /* デジタイズ型 */ if( inp >= 0 && inp < 9 ) { vals[inp] = sprint("x=%.1f,y=%.1f",p[0],p[1]); } else { echo "\a 入力位置を決めてから入力してください。"; } break; case 3: /* 数値型 */ if( inp >= 0 && inp < 3 ) { vals[inp] = sprint("%.1f",p); } else if( inp >= 3 && inp < 6 ) { vals[inp] = sprint("%.2f",p); } else if( inp >= 6 && inp < 9 ) { vals[inp] = sprint("%.3f",p); } else { echo "\a 入力位置を決めてから入力してください。"; } break; case 4: /* 文字列型 */ if( inp >= 0 && inp < 9 ) { vals[inp] = p; } else { echo "\a 入力位置を決めてから入力してください。"; } break; case 5: /* コマンドエンド型 */ MAIN return; break; case 7: /* バックスペース型 */ inp = inp - 1; if( inp < 0 ) { inp = 8; } break; case 11: /* スペース型 */ inp = inp + 1; if( inp >= 9 ) { inp = 0; } break; case 12: /* カーソル位置型(メッセージアリア) */ if( p[2] != 6 ) { goto disp; } if( p[0] == 1 && p[1] == 1 ) { inp = 0; } else if( p[0] == 1 && p[1] == 2 ) { inp = 1; } else if( p[0] == 1 && p[1] == 3 ) { inp = 2; } else if( p[0] == 2 && p[1] == 1 ) { inp = 3; } else if( p[0] == 2 && p[1] == 2 ) { inp = 4; } else if( p[0] == 2 && p[1] == 3 ) { inp = 5; } else if( p[0] == 3 && p[1] == 1 ) { inp = 6; } else if( p[0] == 3 && p[1] == 2 ) { inp = 7; } else if( p[0] == 3 && p[1] == 3 ) { inp = 8; } break; } goto disp;