disabledraw,enabledraw文(Ver8.79対応版)
目次− disabledraw,enabledraw文
 disabledrawは画面の書き換えを禁止します。enabledrawは逆に画面書き換えを許可します。マクロ起動時は許可状態になっています。

 長い編集作業を短時間で終わらせたい場合に、まずdisabledrawして作業を開始し、編集が終わったらenabledrawすると効果的です。 ただし、enabledrawを実行するときに画面をすべて書き直すことになるので、短時間で終わる処理をdisabledraw/enabledrawで囲むとかえって処理速度が低下することに注意してください。

 disabledrawの状態は、ウィンドウごとに状態を覚えています。disabledrawしてから、setactivehidemaruなどをして他の秀丸エディタに移すとdisabledrawの状態は解除されるので注意が必要です。
disabledraw;
gofiletop;
beginsel;
gofileend;
cut;
enabledraw;
 disabledrawしたのにenabledrawを忘れたままマクロの実行が終了すると、自動的に画面をすべて書き換えます。

 enabledrawが実行された時、カーソルが画面のどの位置に表示されるかは秀丸エディタ側が適当に決めてしまいます。これをマクロ側で制御するには、enabledraw文のパラメータで画面の一番上の行番号(ワープロ的に計算した行番号)を指定してください。
 enabledrawのパラメータで指定されるスクロール位置は、現在のカーソル位置(y)が収まる範囲に自動的に調整されます。
 画面は、カーソル上下キーで自動的にスクロールする範囲も除外されます。
 例えば、現在のカーソル位置(y)が1000で、画面が50行で、カーソル上下でスクロールする領域が画面上3行、画面下3行の場合、enabledrawで指定できる範囲は、1000-3=997から、1000-50+3=953の範囲になります。
 この範囲から外れる場合は自動調整されます。
例:(検索で見つけた文字列をウィンドウの中央に表示する場合)
disabledraw;
searchdown "abc";
enabledraw y - windowheight / 2;
 disabledraw中は、内部的にはウィンドウサイズをゼロとして高速に処理しています。enabledraw後にスクロール位置がずれるのもそのためです。rollup,rolldown等も正しいスクロール量でスクロールしません。

 disabledrawをすると、検索後のカーソル状態の情報は失われ、searchdown2などの連続した検索の動作に違いが出てきます。
 この問題を解消するには、setcompatiblemodeで0x00800000を指定すると、disabledrawの有無に関わらず、検索後のカーソル状態は維持されます。(V8.66β6以降)


戻る