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

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

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

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

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


戻る