DoGrepAppend() についてNo.01816
hirn さん 17/08/06 21:32
 

 Version 6.73(32bit) です。
質問と、以下の現象が発生しているので確認をお願いします。

(1) SetQuietMode ON の DoGrepAppend 時、
ソート順を指定する方法はありますか?

(2) パラメータ3=5にして「Subjectによるグループ化」をすると、
スレッドが常に折りたたまれます。折りたたまないようにできますか?
設定は、
 スレッドの自動折りたたみ>「最近の分」でなくなったスレッド
にしています。

 スレッド表示を切り替えると、
折りたたまないようになったり、別スレッドになったりします。

※関数のヘルプに、パラメータ3=5の記述が無いようです。
そもそも使えないんでしょうか?

(3) (2) で、スレッドのルートの+記号が出ません。
ーは出ます。

(4) (2) で、Subject の先頭に "Re" や "Fw" が付くと、
同じスレッドになりません。
スレッド表示を切り替えると、同じスレッドになります。

[ ]
RE:01816 DoGrepAppend() についてNo.01819
秀まるお2 さん 17/08/07 10:27
 
> (1) SetQuietMode ON の DoGrepAppend 時、
> ソート順を指定する方法はありますか?

 ソート順を指定するパラメータは無いですが、検索結果のウィンドウ上で
SetSortMethod関数呼び出しすればソート方法が変わってくれました。その作戦
でOKかと思います。

 例:
    loaddll "tkinfo.dll";
    #n = dllfunc("SetGrepWndTop");
    if( #n == 0 ) {
        message "検索結果ウィンドウがありません。";
        endmacro;
    }
    #n = dllfunc("SetFindPack", "........");                //一例
    #n = dllfunc("DoGrepAppend", "\\CurrentAccount", "", 1);//一例
    #n = dllfunc("SetSortMethod", 0);                       //アイコン順の例


> (2) パラメータ3=5にして「Subjectによるグループ化」をすると、
> スレッドが常に折りたたまれます。折りたたまないようにできますか?

 まず、パラメータ3に「5」の値を指定するのはありですが、ヘルプに書いてな
いようです。ヘルプの方はさっそく修正させていただきます。

 で、折りたたまれないようにするのは、すみませんがこれもパラメータとして
指定する方法は無いのですけども、「スレッドの展開 - すべて展開」の
コマンドを検索結果一覧上で実行すればうまく展開するようなので、その
コマンドをシミュレートする方法でお願いしたいです。

 コマンドコードは、「マクロ - マクロ登録...」の「コマンド置き換え」
ページにある「コマンドの番号を調べる」で調べることが可能で、実際それで試
すと、40122と出てきます。

 #n = sendmessage( hidemaruhandle(0), 0x111, 40122, 0 );

 のような方法で、「すべて展開」が効くようでした。(実際試したら出来た)

>  スレッドの自動折りたたみ>「最近の分」でなくなったスレッド
> にしています。

 ちょっとテストしてみたんですが、スレッドの自動折りたたみをOFFにしても、
なぜか検索結果上では常に全部折りたたまれて表示されてしまってるみたいな感
じです。そもそも的にこの辺おかしいような気がします。もっと詳しく調べてみ
ます。

> (3) (2) で、スレッドのルートの+記号が出ません。
> ーは出ます。

 こちらも、今テストしてて再現しました。たぶんバグだと思います。調べて修
正させていただきます。

> (4) (2) で、Subject の先頭に "Re" や "Fw" が付くと、
> 同じスレッドになりません。
> スレッド表示を切り替えると、同じスレッドになります。

 たぶん、DoGrepAppendでメールが追加される時に、この辺の判定がいまいちお
かしくて別スレッドになってしまうのか・・・・たぶんDoGrepAppendが終わって
からもう一度グループ化のやり直しをしないとダメなのかなぁと思います。これ
また調べてみます。

[ ]
RE:01819 DoGrepAppend() についてNo.01821
秀まるお2 さん 17/08/07 11:48
 
> (3) (2) で、スレッドのルートの+記号が出ません。
> ーは出ます。

 調べてみたら、Version 6.72 / 6.73でのレベルダウンのようでした。配下に
未読メールのあるスレッド折りたたむと、 [+]の中身を白黒反転したデザインで
描画するんですが、これが描画できなくなってしまってました。Per Monitor
DPI対応でのバグでした。

 また近々V6.74として出さないとダメそうです。

[ ]
RE:01819 DoGrepAppend() についてNo.01825
秀まるお2 さん 17/08/07 16:53
 
 検索結果の一覧で各種グループ化した時に、すべて折りたたみ表示される件
は・・・、ソースコード上で、なぜか全部折りたたむように処理してるようです
が、なぜそうしてるか理由分からずで・・・

 秀丸メール本体ウィンドウ上での処理と同じように、「全般的な設定・メール
表示・スレッド表示」の中の「スレッドの自動折りたたみ」に従うように修正さ
せていただきます。

 もう1点、「Fw:」や「Re:」の付いたメールがSubjectグループ分け時に別
グループになってしまうのも、これもバグのようでした。秀丸メール本体
ウィンドウ上についてはVersion 6.46の時に「Fw:」や「Re:」を取ってグループ
化するように直したはずが、検索結果の一覧側では昔の処理のままになってまし
た。

 両方とも次のバージョンにて修正させていただきます。

[ ]
RE:01825 DoGrepAppend() についてNo.01842
hirn さん 17/08/08 23:54
 
 ご対応、ありがとうございます。


> (1) SetQuietMode ON の DoGrepAppend 時、
> ソート順を指定する方法はありますか?

 説明不足ですみません。
検索結果ウィンドウを表に出したくない場合について
お尋ねしたつもりでした。

[ ]
RE:01842 DoGrepAppend() についてNo.01845
秀まるお2 さん 17/08/09 09:18
 
 検索結果を一瞬だけ表に出してもいいなら、一瞬だけ検索結果をアクティブに
して、そこでSetSortMethodを実行すればいいです。

 例:

    loaddll "tkinfo.dll";
    #grepwnd = dllfunc("GrepWnd");
    if( #grepwnd != 0 ) {
        #hidemaru = hidemaruhandle(0);
        #n = dllfunc("SetGrepWndTop");
        #n = dllfunc("SetSortMethod", 0);
        setactivehidemaru #hidemaru;
    }

    #n = dllfunc("SetQuietMode", 1);
    #n = dllfunc("SetFindPack", "(\"abc\",target=all), subfolder=1");
    #n = dllfunc("DoGrepAppend", "\\CurrentAccount", "");
    #n = dllfunc("SetQuietMode", 0);

 一瞬でもウィンドウが表に出てくるのを避けるのは現状では無理かと思います。

 ちなみにSetQuitMode呼び出しを前の方に移動するとうまくいかないようです。
上記の順序だとうまく動作しました。

[ ]