'自由に字詰め変更 / Ver. 0.83 / by Kabuneko 2000/02/12 proc main if @hwnd = 0 then exit proc dim i, j, k, l, m, n, o, p, r, f$, s$, jizume$[15] '一時的にIMEをオフ・あとでもどす i = imestatus if i <> 2 then imemode 2 '現在のカーソル位置を保存 dim pos, line, top pos = @BytePosCr line = @ScrLineToCrLine(@Line) top = @Line - @TopLine 'ここからダイアログの設定 ============== '次行でダイアログの文字などのサイズを指定。フォント名のあとの数字で。 '100 は10ポイント、-10 なら10ドット、など。 dialog "字詰め・表示設定", 150, 100, 120, 120, 0, "MS Pゴシック", 100 control "◆ 全角文字数 × 頁行数", -1, "STATIC", SS_LEFT, 10, 6, 95, 8 control "×", -1, "STATIC", SS_LEFT, 55, 23, 20, 14 control "",100,"EDIT",ES_LEFT|ES_AUTOHSCROLL|ES_NUMBER|WS_BORDER|WS_TABSTOP, 20, 20, 30, 14 control "",101,"EDIT",ES_LEFT|ES_AUTOHSCROLL|ES_NUMBER|WS_BORDER|WS_TABSTOP, 70, 20, 30, 14 control "行番号を表示", 102, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 15, 40, 95, 14 control "ページ区切りあり", 103, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 15, 52, 95, 14 control "履歴", -1, "STATIC", SS_LEFT, 10, 75, 86, 8 control "", 104, "COMBOBOX", CBS_DROPDOWNLIST | WS_TABSTOP | WS_VSCROLL, 35, 72, 70, 70 control "OK",IDOK,"BUTTON",BS_DEFPUSHBUTTON|WS_TABSTOP,15,95,40,14 control "キャンセル",IDCANCEL,"BUTTON",BS_PUSHBUTTON|WS_TABSTOP,65,95,40,14 '現在の設定を取込んで表示 ============== m = @Width / 2 + (@Width mod 2) l = @PageLine n = @PrintNumber p = @PrintPage dlgtext$ 100, cformat$("%d", m) dlgtext$ 101, cformat$("%d", l) dlgvalue 102, n dlgvalue 103, p '履歴ファイルの読込み ================== '履歴は15まで保存し、古くなったものから捨てます。 f$ = @@QxDirectory$ + "\" + "l_jizume.txt" if dir$(f$) <> "" then j = 1 open f$ for input as #1 do until eof(1) lineinput #1, s$ jizume$[j++] = s$ if j > 15 then exit do loop close #1 dlglistboxarray 104, jizume$ end if 'ダイアログを表示 ====================== do while 1 r = dialog(1 | DLGN_SELCHANGE) 'OKボタンを押したときの動作 if r = IDOK then '数値が適当なときだけ実行 if val(dlgtext$(100)) > 9 and val(dlgtext$(100)) < 127 then if val(dlgtext$(101)) > 0 and val(dlgtext$(101)) < 999 then '設定を反映させる @Width = val(dlgtext$(100)) * 2 @PageLine = val(dlgtext$(101)) @PrintNumber = dlgvalue(102) @PrintPage = dlgvalue(103) 'OKしたときの設定を保存 s$ = dlgtext$(100) + "," + dlgtext$(101) + "," + \ ltrim$(str$(dlgvalue(102))) + "," + ltrim$(str$(dlgvalue(103))) jizume$[0] = s$ for j = 1 to 15 if s$ = jizume$[j] then jizume$[j] = "" next open f$ for output as #1 for j = 0 to 15 s$ = jizume$[j] if s$ <> "" then print #1, s$ next close #1 exit do else call msgbox("1ページは999行までです。") end if else call msgbox("1行は全角10文字から127文字までです。") end if 'キャンセルボタンを押したときの動作 elseif r = IDCANCEL then exit do '履歴を選択したときの動作 else s$ = dlgtext$(r) j = 1 k = instr(j, s$, ",") dlgtext$ 100, mid$(s$, j, k-j) j = k+1: k = instr(j, s$, ",") dlgtext$ 101, mid$(s$, j, k-j) j = k+1: k = instr(j, s$, ",") dlgvalue 102, val(mid$(s$, j, k-j)) j = k+1: k = len(s$)+1 dlgvalue 103, val(mid$(s$, j, k-j)) end if loop call dialog(0) 'ダイアログ表示を終了 'カーソル位置と IME 状態の復元 @Line = @CrLineToScrLine(line) @ByteposCr = pos @TopLine = @Line - top imemode i end proc