当該フォルダのXmemo一覧No.49620
tera_km さん 16/04/06 09:35
 
こんにちは、いつもお世話になります。

フォルダ増殖を抑制するためにXmemoにてメールを分類していますが、プロパティのX
memo入力時に当該フォルダ内のみのXmemo一覧が出るとありがたいのですがご検討可
能であればお願いいたします。

同様の理由で当該フォルダの絞り込みにもXmemo一覧がでると助かるのですが、あま
り需要はありませんかね?こちらは、Xmemoカラムでソートさせて使う方法もあるの
で不要かもしれません。

[ ]
RE:49620 当該フォルダのXmemo一覧No.49621
秀まるお2 さん 16/04/06 11:48
 
 メールのプロパティの中のメモ欄はコンボボックスになっていて、「▼」
ボタンを押すと、過去のメモの履歴が出てきます。

 履歴の上でマウス右ボタンを押すと、常駐させたりとか削除したりとかも出来
るようにはなっています。

 (っと、一応、現状の機能を紹介しつつ)

> フォルダ増殖を抑制するためにXmemoにてメールを分類していますが、プロパティのX
> memo入力時に当該フォルダ内のみのXmemo一覧が出るとありがたいのですがご検討可
> 能であればお願いいたします。

 現状の履歴機能を無くして代わりにそうするってのは無理があると思いますけ
ども、たとえば現状のメモ欄の右側に1つボタンを用意して、そこからフォルダ
内メールのメモを拾ってくるとかならありかなぁとは思います。

 メモ(E):   [________________________▼] [参照(B)▼]

 みたいに「参照」ボタンがあって、それを押すと、フォルダ内のメールのメモ
一覧が出るとか・・・

 やろうと思えば出来ますけども。

> 同様の理由で当該フォルダの絞り込みにもXmemo一覧がでると助かるのですが、あま
> り需要はありませんかね?こちらは、Xmemoカラムでソートさせて使う方法もあるの
> で不要かもしれません。

 こちらは「参照」ボタンを置くスペースが無いので厳しいです。

 たとえばマクロを使ってフォルダ内のメモ一覧を取得して、それをメニュー表
示して、選択したら、即絞り込み検索する、みたいなマクロがあったらいいかと
思いました。

 簡単に作ってみたら以下のようになりました。一回このマクロ試してみて欲し
いです。

---「メモで絞り込み検索.mac」---------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);
    #n = dllfunc("DisableDraw");
    #originThreadView = dllfunc("IsThreadView");
    if( #originThreadView ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #originIndex = dllfunc("MailIndex");
    $originFindPack = dllfuncstr("GetFindPack");
    #n = dllfunc("SetFindPack", "flag=memo, subfolder=0, inmail=0");
    #n = dllfunc("SetMailIndex", 0);
    #n = dllfunc("FindDownInclude");
    while(1) {
        if( #n == 0 ) {
            break;
        }
        $memo = dllfuncstr("CurrentHeader", "X-Memo");
        if( $memo != "" ) {
            #i = 0;
            while( 1 ) {
                if( #i >= #memoCount ) {
                    $memoList[#memoCount] = $memo;
                    #memoCount = #memoCount + 1;
                    break;
                }
                if( $memo == $memoList[#i] ) {
                    break;
                }
                #i = #i + 1;
            }
        }
        #n = dllfunc("FindDown");
        if( #n == 0 ) {
            break;
        }
    }
    #n = dllfunc("SetMailIndex", #originIndex);
    if( #originThreadView != 0 ) {
        #n = dllfunc("SetThreadView", #originThreadView);
    }
    #n = dllfunc("SetFindPack", $originFindPack);
    #n = dllfunc("EnableDraw");
    if( #memoCount == 0 ) {
        message "メモ付きメールはありませんでした。";
    } else {
        menuarray $memoList, #memoCount;
        if( result > 0 ) {
            #n = dllfunc("SetViewArea", 6, $memoList[result -1]);
        }
    }
--------------------------------------------------------------------------

[ ]
RE:49620 当該フォルダのXmemo一覧No.49622
秀まるお2 さん 16/04/06 11:52
 
 さっき作ったマクロを少し改造したら、メモを書き換えるマクロも出来ました。
これがあれば、メールのプロパティ・ダイアログボックスに「参照」ボタンが無
くてもいいかもしれません。

 マクロの最後の所がSetViewAreaじゃなくてBeginEditMail / SetHeader /
SaveEditMailになってるだけですけども。

---------------------------------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);
    #n = dllfunc("DisableDraw");
    #originThreadView = dllfunc("IsThreadView");
    if( #originThreadView ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #originIndex = dllfunc("MailIndex");
    $originFindPack = dllfuncstr("GetFindPack");
    #n = dllfunc("SetFindPack", "flag=memo, subfolder=0, inmail=0");
    #n = dllfunc("SetMailIndex", 0);
    #n = dllfunc("FindDownInclude");
    while(1) {
        if( #n == 0 ) {
            break;
        }
        $memo = dllfuncstr("CurrentHeader", "X-Memo");
        if( $memo != "" ) {
            #i = 0;
            while( 1 ) {
                if( #i >= #memoCount ) {
                    $memoList[#memoCount] = $memo;
                    #memoCount = #memoCount + 1;
                    break;
                }
                if( $memo == $memoList[#i] ) {
                    break;
                }
                #i = #i + 1;
            }
        }
        #n = dllfunc("FindDown");
        if( #n == 0 ) {
            break;
        }
    }
    #n = dllfunc("SetMailIndex", #originIndex);
    if( #originThreadView != 0 ) {
        #n = dllfunc("SetThreadView", #originThreadView);
    }
    #n = dllfunc("SetFindPack", $originFindPack);
    #n = dllfunc("EnableDraw");
    if( #memoCount == 0 ) {
        message "メモ付きメールはありませんでした。";
    } else {
        menuarray $memoList, #memoCount;
        if( result > 0 ) {
            $memo = $memoList[result -1];
            #n = dllfunc("BeginEditMail");
            #n = dllfunc("SetHeader", "X-Memo", $memo);
            #n = dllfunc("SaveEditMail", 0, 0);
        }
    }

[ ]
RE:49622 当該フォルダのXmemo一覧No.49623
秀まるお2 さん 16/04/06 12:06
 
 もっといいアイデアがありました。

 「メールのプロパティ」コマンドを実行したらマクロが自動で起動するように
して、そのマクロで、メモの履歴を書き換えてしまう作戦も可能です。

 そうすると、見た目上は

 メモ(E): [__________________▼]

 の履歴の中に、現在選択してるフォルダの中のメモ一覧だけが出てくる形にな
ります。

 それ作ってみます。

[ ]
RE:49623 当該フォルダのXmemo一覧No.49624
秀まるお2 さん 16/04/06 13:27
 
 マクロ作ってみたんですけど、いまいちかもしれません。

 使い方としては、「マクロ・マクロ登録...」の「コマンド置き換え」の中に、

40084,NewMailProp.mac

 のように指定することによって、「メールのプロパティ」コマンドをマクロに
置き換えるやり方になりますが、秀丸メール側に少し問題があって、Alt+Enter
キーを押した場合にはマクロ置き換えが効かないようです。これについては次の
β版にて修正させていただきます。

マクロ内容は以下のようになります。ちょっと遅いのが欠点です。

------------------------------------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);
    #n = dllfunc("DisableDraw");
    #originThreadView = dllfunc("IsThreadView");
    if( #originThreadView ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #originIndex = dllfunc("MailIndex");
    $originFindPack = dllfuncstr("GetFindPack");
    #n = dllfunc("SetFindPack", "flag=memo, subfolder=0, inmail=0");
    #n = dllfunc("SetMailIndex", 0);
    #n = dllfunc("FindDownInclude");
    while(1) {
        if( #n == 0 ) {
            break;
        }
        $memo = dllfuncstr("CurrentHeader", "X-Memo");
        if( $memo != "" ) {
            #i = 0;
            while( 1 ) {
                if( #i >= #memoCount ) {
                    $memoList[#memoCount] = $memo;
                    #memoCount = #memoCount + 1;
                    break;
                }
                if( $memo == $memoList[#i] ) {
                    break;
                }
                #i = #i + 1;
            }
        }
        #n = dllfunc("FindDown");
        if( #n == 0 ) {
            break;
        }
    }
    #n = dllfunc("SetMailIndex", #originIndex);
    if( #originThreadView != 0 ) {
        #n = dllfunc("SetThreadView", #originThreadView);
    }
    #n = dllfunc("SetFindPack", $originFindPack);
    #n = dllfunc("EnableDraw");

    if( #memoCount > 20 ) {
        #memoCount = 20;
    }
    #n = dllfunc("SaveConfig", 1);
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    #i = 0;
    while( #i < 20 ) {
        $name = "NMemHist" + str(#i / 10) + str(#i % 10);
        writeregstr $name, $memoList[#i];
        #i = #i + 1;
    }
    closereg;
    #n = dllfunc("EnvChangedDanger", 1);

    #n = sendmessage( hidemaruhandle(0), 0x0111, 40084, 0);

[ ]
RE:49624 当該フォルダのXmemo一覧No.49627
tera_km さん 16/04/07 16:25
 
こんにちは、お世話になります。

早速有り難うございました。

試用してみましたところ、確かに動作に関しては重たい感じはしましたが、良い感じ
に使えています。

現状は、当該フォルダのmemoの種類が最大20程度なので支障はありませんが、種類が
増えたらソートしてリストが出ればベストなのでしょうけど、私の環境ではそこまで
は必要ありません。

今日はバタバタしていて遅くなりすみません。
大変助かりました。ありがとうございます。



[ ]
RE:49627 当該フォルダのXmemo一覧No.49628
秀まるお2 さん 16/04/07 17:00
 
 マクロの方は、とりあえずこんな案で的に作っただけなので、もっと具体的な
要望があれば直すの簡単に出来ます。

 秀丸メールの方に機能追加する案につては、仕様的にどうしたらいいか難しい
点もあるかと思いました。「メールのプロパティ」の中に「参照▼」ボタンを入
れる案の方で考えるとしたら、たぶん、「参照▼」の下に、

 現在のフォルダ
 現在のアカウント
 すべてのアカウント

 と3種類から検索できないといけないような気もするし。

 履歴の最後に

   (現在フォルダから参照...)
   (現在アカウントから参照...)
   (すべてのアカウントから参照...)

 みたいな項目を入れておいて、それを選択したら、履歴がそれに変化する、み
たいな方がいいかもしれません。

 何かご意見などあればまたお願いします。

[ ]
RE:49628 当該フォルダのXmemo一覧No.49631
tera_km さん 16/04/08 09:58
 
おはようございます。お世話になります。

お言葉に甘えてですが、

提示していただいたマクロでは複数選択しての一括変更が出来ないので、現状は
>Alt+Enterキーを押した場合にはマクロ置き換えが効かない
を逆手に取って使い分けしております。
対処できるのでしたら一括変更できるようにお願いします。

あとは、私の使用方法では、候補を音順でソートしてもらえると助かります。


>
> 秀丸メールの方に機能追加する案につては、仕様的にどうしたらいいか難しい

こちらは提示していただいたような使い分けを考慮する形がベストとは思いますが、
今のところは追加する要望はございません。

[ ]
RE:49631 当該フォルダのXmemo一覧No.49636
秀まるお2 さん 16/04/08 16:46
 
> 提示していただいたマクロでは複数選択しての一括変更が出来ないので、現状は
> >Alt+Enterキーを押した場合にはマクロ置き換えが効かない
> を逆手に取って使い分けしております。

 実は、この前V6.54β1をアップロードしてまして、Alt+Enterのバグはこっそ
り直していたりします。

 このβ版は、特定ユーザーさんにテストしてもらう用にアップロードしたので、
ここの会議室には案内を掲載してませんでした。

 どっちにしても、マクロの方も、複数選択に対応するように&ソートするよう
に修正させていただきます。

 少々お待ちください。

[ ]
RE:49636 当該フォルダのXmemo一覧No.49653
秀まるお2 さん 16/04/11 14:09
 
 履歴を書き換えるタイプのマクロの方で、

 − 複数選択して実行してもそのまま選択を維持するように。
 − メモ内容をソートするように。

 って修正をしてみたのですが、ちょっといまいちな感じになりました。

 複数選択してる最中だと、「検索して一覧作成」のウィンドウが1回出てしま
います。現状この方法しか無いです。

 やはり何か機能追加した方がいいかもしれません。ぼちぼち考えます。

------------------------------------------------------------------------
    loaddll "tkinfo.dll";
    #n = dllfunc("SetJapaneseCodePageMode", 1);

    $originFindPack = dllfuncstr("GetFindPack");
    #n = dllfunc("SetFindPack", "flag=memo, subfolder=0, inmail=0");

    if( dllfunc("SelectedMailCount") > 1 ) {
        goto Label_MultiSelectVersion;
    }

    #n = dllfunc("DisableDraw");
    #originThreadView = dllfunc("IsThreadView");
    if( #originThreadView ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #originIndex = dllfunc("MailIndex");


    #n = dllfunc("SetMailIndex", 0);
    #n = dllfunc("FindDownInclude");
    while(1) {
        if( #n == 0 ) {
            break;
        }
        $memo = dllfuncstr("CurrentHeader", "X-Memo");
        if( $memo != "" ) {
            #i = 0;
            while( 1 ) {
                if( #i >= #memoCount ) {
                    $memoList[#memoCount] = $memo;
                    #memoCount = #memoCount + 1;
                    break;
                }
                if( $memo == $memoList[#i] ) {
                    break;
                }
                #i = #i + 1;
            }
        }
        #n = dllfunc("FindDown");
        if( #n == 0 ) {
            break;
        }
    }
    #n = dllfunc("SetMailIndex", #originIndex);
    if( #originThreadView != 0 ) {
        #n = dllfunc("SetThreadView", #originThreadView);
    }

Label_Label_MultiSelectVersion_Return:

    #n = dllfunc("SetFindPack", $originFindPack);
    #n = dllfunc("EnableDraw");

    if( #memoCount > 20 ) {
        #memoCount = 20;
    }

    //ソートする
    #x = 0;
    while( #x < #memoCount - 1 ) {
        #y = #x + 1;
        while( #y < #memoCount ) {
            if( $memoList[#x] > $memoList[#y] ) {
                $temp = $memoList[#x];
                $memoList[#x] = $memoList[#y];
                $memoList[#y] = $temp;
            }
            #y = #y + 1;
        }
        #x = #x + 1;
    }

    #n = dllfunc("SaveConfig", 1);
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    #i = 0;
    while( #i < 20 ) {
        $name = "NMemHist" + str(#i / 10) + str(#i % 10);
        writeregstr $name, $memoList[#i];
        #i = #i + 1;
    }
    closereg;
    #n = dllfunc("EnvChangedDanger", 1);

    #n = sendmessage( hidemaruhandle(0), 0x0111, 40084, 0);
    endmacro;

//複数選択対応
Label_MultiSelectVersion:
    #n = dllfunc("DoGrep2", "\\CurrentAccount", dllfunc("CurrentFolder"),
0);
    #mainHandle = hidemaruhandle(0);
    #grepHandle = dllfunc("GrepWnd");
    #n = dllfunc("SetGrepWndTop");
    #count = dllfunc("MailCount");
    #mailIndex = 0;
    #n = dllfunc("DisableDraw", 0);
    disabledraw;
    #n = dllfunc("SimulateKeyStroke", 0x24, 0, 0, 0);
    while(#mailIndex < #count) {
        $memo = dllfuncstr("CurrentHeader", "X-Memo");
        if( $memo != "" ) {
            #i = 0;
            while( 1 ) {
                if( #i >= #memoCount ) {
                    $memoList[#memoCount] = $memo;
                    #memoCount = #memoCount + 1;
                    break;
                }
                if( $memo == $memoList[#i] ) {
                    break;
                }
                #i = #i + 1;
            }
        }
        #mailIndex = #mailIndex + 1;
        #n = dllfunc("NextMail");
    }
    setactivehidemaru #mainHandle;
    #n = dllfunc("CloseGrepWnd");
    goto Label_Label_MultiSelectVersion_Return;

[ ]
RE:49653 当該フォルダのXmemo一覧No.49657
tera_km さん 16/04/12 09:01
 
おはようございます。

改良版ありがとうございました。

> 複数選択してる最中だと、「検索して一覧作成」のウィンドウが1回出てしま
>います。現状この方法しか無いです。

メール数1000ぐらいのフォルダでやや待たされる感はありますが、大きな支障ではな
く、ソートしてもらえるので探しやすくなりました。


> やはり何か機能追加した方がいいかもしれません。ぼちぼち考えます。

当方は現状のままでも問題はありませんので、優先順位は下げていただいて結構です。
ありがとうございました。

[ ]