カーソル位置行の任意の画面表方法No.04631
マボカル さん 05/04/15 23:00
 
サポートフォーラム会議室のみなさん。こんにちは。マボカルと申し
ます。久しぶりに投稿いたします。

テキストファイルの内容を見ていくとき、マウスを使わず、カーソルを
下に移動させると、次々にファイルの下のほうにある初めは画面から
隠れていた内容が出てきますが、このときカーソル位置の行は画面の
中心ではなく、画面の下のほうになっていますよね。

今回質問したいことは、このようにカーソルを上下に移動しながらも
カーソル位置の行が常に画面の中心に来るような表示の仕方をマクロで
実現できないかということです。

マクロで可能であるのかどうか、もし可能であれば、どなたかいい
アイディアをご教授して頂けませんでしょうか。

[ ]
RE:04631 カーソル位置行の任意の画面表方No.04634
山紫水明 さん 05/04/16 09:04
 
 マボカルさん,こんにちは。

>今回質問したいことは、このようにカーソルを上下に移動しながらも
>カーソル位置の行が常に画面の中心に来るような表示の仕方をマクロで
>実現できないかということです。

(1)「動作環境」→「表示/操作」→「カーソル移動」で
「スクロールしてもカーソル位置は固定」に設定します。
(2)マクロでは rolldown2, rollup2 が使えます。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04634 カーソル位置行の任意の画面表方No.04641
マボカル さん 05/04/16 11:05
 
山紫水明さん

いつもお世話になっております。早速のお答えありがとうございます。

>(1)「動作環境」→「表示/操作」→「カーソル移動」で
>「スクロールしてもカーソル位置は固定」に設定します。
>(2)マクロでは rolldown2, rollup2 が使えます。

上のお答えでは私の意図していることとはちょっと違います。カーソル
行の固定というより、キーボードでカーソルを下に移動させたときでも
その行がまた画面の中心にくるようにするものです。これはマクロ内で
実行しようとしているので、マウスを使った動作ではダメです。

例えば以下のような一画面では表示できないテキスト(勿論秀丸の
フォントの大きさの設定などで変わりますが)があるとします。
ファイルを開いたときのカーソル位置が一行目にあるとして、そこから
キーボードで一つずつ下に移動していくとき、移動したカーソル行が
常に画面になるようにしたいのです。

01|(ここからスタート)
02|
03|↓(カーソル移動)
04|
05|
06|(この辺りはカーソルだけ動いて画面スクロールはされません
07| よね)
08|
09|
10|
11|↓(カーソル移動)
12|
13|
14|
15|
16|↓(カーソル移動)
17|
18|
19|
20|(設定にもよりますが、この辺りから大体カーソル行が画面の
21| 中心になったとします。この行だけが画面の中心になるのでは
22| なく、以下カーソルを移動させた行も同じように画面の中心に
23| なるようにしたいのです。)
24|
25|↓(カーソル移動)
26|
27|(カーソルが下に移動するたびに、画面の中心になるように
28| あわせるために表示画面が一行分繰り上がる。)
29|
30|↓(カーソル移動)
31|
32|
33|
34|
35|↓(カーソル移動)
36|
37|
38|
39|
40|↓(カーソル移動)
41|
42|
43|
44|(この辺りから画面に最終行が見えてくる。でもカーソル行は
45| 画面の中心にきている。)
46|
47|
48|↓(カーソル移動)
49|
50|
51|
52|
53|
54|↓(カーソル移動)
55|
56|
57|
58|
59|
60|(ここで終わり)
[EOF]

カーソル行が画面の見た目の中心に来るという設定もあいまいで、機械
的な処理が可能かどうかも怪しいですが、そもそもカーソルが動く
一行分だけのスクロールというのもマクロで可能なのでしょうか。

[ ]
RE:04641 カーソル位置行の任意の画面表方No.04642
山紫水明 さん 05/04/16 11:59
 
 マボカルさん,こんにちは。

>行の固定というより、キーボードでカーソルを下に移動させたときでも
>その行がまた画面の中心にくるようにするものです。

 カーソルがすでに画面の中心に来ている場合は,
rollup2;
という1行のマクロで,
そうではないときにも,画面の中央にカーソルを移して,スクロールさせたいと
きは次のマクロでできませんか?

//-------------------------------------------------------
goscreentop;
#by = y;
goscreenend;
#ey = y;
moveto 0, (#by + #ey) / 2;
rollup2;
endmacro;
//-------------------------------------------------------

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:04642 カーソル位置行の任意の画面表方No.04643
マボカル さん 05/04/16 12:41
 
山紫水明さん

どうもありがとうございました。マクロを実行したところ思い通り
の動作を確認することができました。実際に私が作ろうとしている
マクロはもう少し複雑な条件がありますが、山紫水明のマクロを
改造すれば、その動きも実現できそうです。

>goscreentop;
>#by = y;
>goscreenend;
>#ey = y;
>moveto 0, (#by + #ey) / 2;

こういうふうに任意の画面の中心を計算できるんですね。勉強に
なりました。どうもありがとうございました。

[ ]