Chapter4. 拡張関数


4.2 システム関数

関数名
S@IMEGETEDITSTATE
機能
日本語エディトで入力中の文字列の属性を取得する。
書式
int S@IMEGETEDITSTATE(num)
《パラメーター》
num int。属性を調べたい日本語入力で変換中の文字列の番号を指定する。
 
戻り値 説明
int
変換中の文字列の番号を戻す。
0:指定の番号に文字列はない。
1:指定の番号に単語を決定した文字列。
2:指定の番号は編集中の単語。
3:指定の番号は編集中であり単語の選択中。
解説
S@IMEGETEDITSTR(0)で取得した文字列の指定した単語の属性を取得する。S@IMEGETEDITSTRと一緒に利用する。
入力中の文字列は単語単位に分け編集を行う。この編集中の文字列を取得するには、S@IMEGETEDITSTRでその時点で入力中の文字列を全て取得した後、取得した文字列から単語単位に文字列を取得する。
S@IMEGETEDITSTRの第一引数に0を設定し実行するとその時点で入力中の文字列を全て取得する。
その後S@IMEGETEDITSTRの第一引数に1以上を設定することで先頭から指定した番号の単語を取得する。また、S@IMEGETEDITSTATEの第一引数に同じ値を指定をすることで単語の属性を取得する。「aaabbb」と入力し、その間に「きょうはいいてんきです」を変換すると「aaa」「きょうは」「いい」「てんきです」「bbb」の5つに分割される。「てんきです」の単語を選択中であれば、S@IMEGETEDITSTATEの第一引数に1〜5を指定することで、「aaa」と「bbb」は1、「きょうは」と「いい」は2、「てんきです」は3を取得する。6以上を指定した場合は0を取得する。
用例
日本語エディト機能のサンプル
CH=G@SETUP(400,100,16,1)
S@IMESETMODE(1)
S@IMESETEDITMODE(1)
LOOP
  G@CHRCLEAR(CH)
  S@IMEGETEDITSTR(0)
  MX = 0
  I = 1
  LOOP
    MOJI$ = S@IMEGETEDITSTR( I )
    IF MOJI$ == "" THEN
      BREAK
    ENDIF
    ST=S@IMEGETEDITSTATE( I )
    SWITCH(ST)
    CASE 1:
      G@FONT( 24 , 0 , 0 , 3 , "MS 明朝" )
      BREAK;
    CASE 2:
      G@FONT( 24 , 0 , 1 , 3 , "MS 明朝" )
      BREAK;
    CASE 3:
      G@FONT( 24 , 0 , 2 , 3 , "MS 明朝" )
      BREAK;
    ENDSWITCH
    G@PRINT(CH,MX,0,MOJI$)
    MX = MX + LENG(MOJI$)*12
    I = I + 1
  ENDLOOP
  WKEKKA$ = S@IMEGETEDITRESULT()
  IF WKEKKA$ <> "" THEN
    KEKKA$ = WKEKKA$
  ENDIF
  G@FONT( 24 , 0 , 0 , 3 , "MS 明朝" )
  G@PRINT(CH,0,64,KEKKA$)
  CUR=S@IMEGETEDITCOLUMN()
  G@PRINT(CH,12*CUR,32,"^")
  G@FLIP()
ENDLOOP