横に並べる&縦に並べるについてNo.20898
ぐちまる さん 06/02/15 12:00
 
いつもお世話になります。

秀丸の「ウインドウ」メニューにあります
・横に並べる
・縦に並べる
を実行した時の画面の並び順を変更することはできませんか?

使ってみた感じでは、横に並べるなら左側から
縦に並べるなら上側から画面の起動順に並んでいるかと思います。

例えば、実行した画面を横に並べるなら左側
縦に並べるなら上側とすることができないでしょうか?

横に並べるだったら、右側を参照用、左側をコーディング用。
縦に並べるだったら、上側を参照用、下側をコーディング用。

といった感じに、個人的な流儀ではありますが。

私の場合、最大2つまでしか画面を開きませんので、こんな事を
考えてしまうのですが、3つ以上の画面を利用されている方々は
どうなんでしょう?

よろしくお願いします。

[ ]
RE:20898 横に並べる&縦に並べるについてNo.20900
白雲斎 さん 06/02/15 14:06
 
こんにちは、白雲斎です。

>使ってみた感じでは、横に並べるなら左側から
>縦に並べるなら上側から画面の起動順に並んでいるかと思います。
>
>例えば、実行した画面を横に並べるなら左側
>縦に並べるなら上側とすることができないでしょうか?

私のところでは、画面の順序に関係なくコマンドを実行した画面が、左端、上側
に配置されますが、これとは意図が違うのでしょうか!?

>横に並べるだったら、右側を参照用、左側をコーディング用。
>縦に並べるだったら、上側を参照用、下側をコーディング用。
>
>といった感じに、個人的な流儀ではありますが。
>
>私の場合、最大2つまでしか画面を開きませんので、こんな事を
>考えてしまうのですが、3つ以上の画面を利用されている方々は
>どうなんでしょう?

ウインドウの数を2つと限定して、実行画面を上下左右の好きな方に配置できる
マクロを作成しました。役に立つでしょうか!?

---- 以下マクロ ----

if( hidemarucount != 2 ) endmacro;
#crHandle = hidemaruhandle(0);

menu "ウインドウを 横に並べる", "ウインドウを 縦に並べる";
#res = result;
if( #res == 0 ) endmacro;
if( #res == 2 ) goto VerticalOrder;

menu "実行画面を 左", "実行画面を 右";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) setactivehidemaru 1;

#wide = cxworkarea / hidemarucount;
if( windowstate == 3 ) showwindow 1;
setwindowpos 0, 0, #wide, cyworkarea;
nexthidemaru;
if( windowstate == 3 ) showwindow 1;
setwindowpos #wide, 0, #wide, cyworkarea;
setactivehidemaru #crHandle;
endmacro;

VerticalOrder:
menu "実行画面を 上", "実行画面を 下";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) setactivehidemaru 1;

#hight = cyworkarea / hidemarucount;
if( windowstate == 3 ) showwindow 1;
setwindowpos 0, 0, cxworkarea, #hight;
nexthidemaru;
if( windowstate == 3 ) showwindow 1;
setwindowpos 0, #hight, cxworkarea, #hight;
setactivehidemaru #crHandle;
endmacro;

[ ]
RE:20898 横に並べる&縦に並べるについてNo.20901
白雲斎 さん 06/02/15 14:23
 
こんにちは、白雲斎です。

ほんとに毎度、毎度そそっかしいです。
前回投稿のマクロは、最小化されたウインドウで問題がありました。
以下、訂正したマクロ全文を改めて掲載します。

---- 以下マクロ ----

if( hidemarucount != 2 ) endmacro;
#crHandle = hidemaruhandle(0);

menu "ウインドウを 横に並べる", "ウインドウを 縦に並べる";
#res = result;
if( #res == 0 ) endmacro;
if( #res == 2 ) goto VerticalOrder;

menu "実行画面を 左", "実行画面を 右";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) setactivehidemaru 1;

#wide = cxworkarea / hidemarucount;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, 0, #wide, cyworkarea;
nexthidemaru;
if( windowstate != 1 ) showwindow 1;
setwindowpos #wide, 0, #wide, cyworkarea;
setactivehidemaru #crHandle;
endmacro;

VerticalOrder:
menu "実行画面を 上", "実行画面を 下";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) setactivehidemaru 1;

#hight = cyworkarea / hidemarucount;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, 0, cxworkarea, #hight;
nexthidemaru;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, #hight, cxworkarea, #hight;
setactivehidemaru #crHandle;
endmacro;

[ ]
RE:20900 横に並べる&縦に並べるについてNo.20902
ぐちまる さん 06/02/15 14:27
 
こんにちは、白雲斎様。
コメント&マクロ作成ありがとうございます。

>私のところでは、画面の順序に関係なくコマンドを実行した画面が、左端、上側
>に配置されますが、これとは意図が違うのでしょうか!?

説明が足りませんでした。
私は通常タブモードを利用しています。
タブモードでなければ、仰るとおりの動作します。
ちなみに秀丸のバージョンは5.13です。

>ウインドウの数を2つと限定して、実行画面を上下左右の好きな方に配置できる
>マクロを作成しました。役に立つでしょうか!?

マクロ作成ありがとうございます。
残念ながら、タブモードの説明をしていなかったせいか、期待している動作にはなり
ませんでした。
せっかく作成していただいたのに申し訳ありません。

あと、ウインドウの数は最大2つなんですが、1つのウインドウ内ではタブで複数の
ファイルを開いて使っています。

説明不足を反省します。

[ ]
RE:20902 横に並べる&縦に並べるについてNo.20904
白雲斎 さん 06/02/15 15:40
 
こんにちは、白雲斎です。

タブ・モードでも有効なマクロに訂正しました。
よろしかったら試してください。

---- 以下マクロ ----

// ウインドウ2個を縦横に配置(配置位置を指定可)
if( tabmode ) #windCount = tabgrouptotal;
else #windCount = hidemarucount;

if( #windCount != 2 ) endmacro;
#crHandle = hidemaruhandle(0);

menu "ウインドウを 横に並べる", "ウインドウを 縦に並べる";
#res = result;
if( #res == 0 ) endmacro;
if( #res == 2 ) goto VerticalOrder;

menu "実行画面を 左", "実行画面を 右";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) call ChgWind;

#wide = cxworkarea / #windCount;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, 0, #wide, cyworkarea;
call ChgWind;
if( windowstate != 1 ) showwindow 1;
setwindowpos #wide, 0, #wide, cyworkarea;
setactivehidemaru #crHandle;
endmacro;

VerticalOrder:
menu "実行画面を 上", "実行画面を 下";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) call ChgWind;

#hight = cyworkarea / #windCount;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, 0, cxworkarea, #hight;
call ChgWind;
if( windowstate != 1 ) showwindow 1;
setwindowpos 0, #hight, cxworkarea, #hight;
setactivehidemaru #crHandle;
endmacro;

ChgWind:
    if( tabmode ) setactivehidemaru getcurrenttab( true, 1 );
    else nexthidemaru;
return;

[ ]
RE:20904 横に並べる&縦に並べるについてNo.20906
白雲斎 さん 06/02/15 16:01
 
こんにちは、白雲斎です。

ほんとに毎度、毎度、毎度そそっかしいです。
またまた最小化されたウインドウで問題がありました。

>ChgWind:
>    if( tabmode ) setactivehidemaru getcurrenttab( true, 1 );
>    else nexthidemaru;
>return;

上記部分を下記に置き換えてください。

ChgWind:
    if( tabmode ) setactivehidemaru getcurrenttab( true, 1 );
    else nexthidemaruicon;
return;

[ ]
RE:20904 横に並べる&縦に並べるについてNo.20907
ぐちまる さん 06/02/15 16:08
 
白雲斎様こんにちは。

>タブ・モードでも有効なマクロに訂正しました。
>よろしかったら試してください。

ずばり希望通りの動作でした。
感謝感激です。
どうもありがとうございました。

[ ]
RE:20907 横に並べる&縦に並べるについてNo.20909
秀丸担当 さん 06/02/15 16:30
 

白雲斎さんにマクロを作っていただいてありがとうございます。

既に解決されているようですが、タブモードで分離しているときの「縦に並べ
る」などは、ウィンドウの重なりの順番ではなく、マクロで言うところのグルー
プID順になってしまっています。
タブモードのときはウィンドウ系コマンドの「ウィンドウ一覧」のダイアログを
出したときもこの順番に並んでいます。
現状ではマクロで対応するしかありませんでしたが、白雲斎さんありがとうござ
います。

[ ]
RE:20907 横に並べる&縦に並べるについてNo.20914
白雲斎 さん 06/02/15 19:10
 
こんにちは、白雲斎です。

もう見ていないかもしれませんが・・・。
コーディングを見直した版を置いときます。


// ウインドウ2個を縦横に配置(配置位置を指定可)
if( tabmode ) #windCount = tabgrouptotal;
else #windCount = hidemarucount;

if( #windCount != 2 ) endmacro;
#crHandle = hidemaruhandle(0);

menu "ウインドウを 横に並べる", "ウインドウを 縦に並べる";
#res = result;
if( #res == 0 ) endmacro;
if( #res == 2 ) goto VerticalOrder;

menu "実行画面を 左", "実行画面を 右";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) call ChgWind;

#wide = cxworkarea / #windCount;
setwindowpos 0, 0, #wide, cyworkarea;
call ChgWind;
setwindowpos #wide, 0, #wide, cyworkarea;
setactivehidemaru #crHandle;
endmacro;

VerticalOrder:
menu "実行画面を 上", "実行画面を 下";
#res = result;
if( #res == 0 ) endmacro;
else if( #res == 2 ) call ChgWind;

#hight = cyworkarea / #windCount;
setwindowpos 0, 0, cxworkarea, #hight;
call ChgWind;
setwindowpos 0, #hight, cxworkarea, #hight;
setactivehidemaru #crHandle;
endmacro;

ChgWind:
    if( tabmode ) setactivehidemaru getcurrenttab( true, 1 );
    else nexthidemaruicon;
    if( windowstate != 1 ) showwindow 1;
return;

[ ]
RE:20914 横に並べる&縦に並べるについてNo.20920
ぐちまる さん 06/02/16 10:55
 
白雲斎様、どうもありがとうございます。

改善版マクロありがたくいただきました。

よろしければ、再インストールなどの時に備えて
マクロライブラリに登録しておいていただければ
ありがたいです。

>こんにちは、白雲斎です。
>
>もう見ていないかもしれませんが・・・。
>コーディングを見直した版を置いときます。

[ ]