enabledraw文(Ver9.35対応版)
目次−
enabledraw文
enabledraw文は、
disabledrawで禁止されていた画面の書き換えを許可します。
- パラメータ1(数値型、省略可能)
-
縦スクロール位置を指定します。
- パラメータ2(数値型、省略可能)
-
横スクロール位置を指定します。
- 結果コード
-
resultは使用しません。
enabledrawが実行された時、カーソルが画面のどの位置に表示されるかは秀丸エディタ側が適当に決めてしまいます。
これをマクロ側で制御するには、enabledraw文のパラメータで画面の一番上の行番号(ワープロ的に計算した行番号)を指定してください。
disabledraw2に対するenabledrawでも、y位置の指定が有効です。(V9.19以降)
enabledrawのパラメータで指定されるスクロール位置は、現在のカーソル位置(y)が収まる範囲に自動的に調整されます。
画面は、カーソル上下キーで自動的にスクロールする範囲も除外されます。
例えば、現在のカーソル位置(y)が1000で、画面が50行で、カーソル上下でスクロールする領域が画面上3行、画面下3行の場合、enabledrawで指定できる範囲は、1000-3=997から、1000-50+3=953の範囲になります。
この範囲から外れる場合は自動調整されます。
例:(検索で見つけた文字列をウィンドウの中央に表示する場合) |
disabledraw;
searchdown "abc";
enabledraw y - windowheight / 2;
|
enabledrawの第2パラメータで、横スクロール位置のx座標を指定できます。(V8.89以降)
disabledrawする前の、現在のスクロール位置は
screentopy,
screenleftxで取得できます。
例: |
#screentopy = screentopy;
#screenleftx = screenleftx;
disabledraw;
//〜何らかの処理
enabledraw #screentopy, #screenleftx;
|
disabledraw中は、内部的にはウィンドウサイズをゼロとして高速に処理しています。enabledraw後にスクロール位置がずれるのもそのためです。rollup,rolldown等も正しいスクロール量でスクロールしません。
disabledrawをすると、検索後のカーソル状態の情報は失われ、searchdown2などの連続した検索の動作に違いが出てきます。
この問題を解消するには、
setcompatiblemodeで0x00800000を指定すると、disabledrawの有無に関わらず、検索後のカーソル状態は維持されます。(V8.66β6以降)
参照:
影響の及ぶ範囲(execmacro)
影響の及ぶ範囲(アクティブ切り替え)
disabledraw2