LockSelectionの不具合No.08771
たまがわ さん 03/05/05 21:09
 
 さみだれ式の書き込みをお許しください。
 以下のテスト用マクロは、選択したメールをLockSelectionした上で、メール一覧
の一番目のメールを削除し、その後、最初に選択していたメールを一つずつ選択して
いくものです。
 ここで三番目以降のメールを選択してマクロを走らせてみると分かりますが、最初
に選択したメールが一つだけの場合、うまくそのメールを選択してくれず、削除した
メールの次のメール(結果的に一番上のメール)が選択された状態になってしまいま
す。(最初に二つ以上のメールを選択した場合は、うまくいきます)
 どうも「一つだけ選択」+「メール削除」の条件で、EnumSelectionがうまくいっ
ていないような気がするのですが、どうでしょうか?

loaddll"tkinfo.dll";
#n = dllfunc("LockSelection");
#n = dllfunc("SetMailIndex", 0);
#n = dllfunc("Delete", 1);
while(1) {
    if (!dllfunc("EnumSelection", 1)) break;
    message "最初に選択したのと違うんじゃない?";
}
#n = dllfunc("UnlockSelection", 1);
endmacro;

[ ]
RE:08771 LockSelectionの不具合No.08774
秀まるお さん 03/05/06 13:15
 
 たしかにメールを1つしか選択してない場合だとEnumSelectionで他のメール
が選択されてしまうようです。さっそく修正させて頂きます。

 もう1つバグというか、これは仕様に近いんですけど、LockSelectionした時
点での選択されていたメールをEnumSelectionすることなく別の手段で選択して
削除すると、その後のEnumSelectionがおかしくなることがあるようです。直す
のが困難だし、そもそもそういう使い方しないでも困らないはずなので、仕様と
します。(ヘルプは直します)

[ ]
RE:08774 LockSelectionの不具合No.08779
たまがわ さん 03/05/06 19:13
 
>  たしかにメールを1つしか選択してない場合だとEnumSelectionで他のメール
> が選択されてしまうようです。さっそく修正させて頂きます。
>
>  もう1つバグというか、これは仕様に近いんですけど、LockSelectionした時
> 点での選択されていたメールをEnumSelectionすることなく別の手段で選択して
> 削除すると、その後のEnumSelectionがおかしくなることがあるようです。直す
> のが困難だし、そもそもそういう使い方しないでも困らないはずなので、仕様と
> します。(ヘルプは直します)

 鶴亀2.75でも同様の症状です。今後のバージョンに期待しています(^^)/

[ ]
RE:08779 LockSelectionの不具合No.08780
アルビレオ さん 03/05/06 20:37
 
アルビレオです。

> 鶴亀2.75でも同様の症状です。今後のバージョンに期待しています(^^)/
えーと、
>>  もう1つバグというか、これは仕様に近いんですけど、LockSelectionした時
>> 点での選択されていたメールをEnumSelectionすることなく別の手段で選択して
>> 削除すると、その後のEnumSelectionがおかしくなることがあるようです。直す
>> のが困難だし、そもそもそういう使い方しないでも困らないはずなので、仕様と
>> します。(ヘルプは直します)
ということなら、

#n = dllfunc("LockSelection");
#n = dllfunc("SetMailIndex", 0);
#n = dllfunc("Delete", 1);

となっている部分はマクロの方を書き直さないと今後も正しく動作することはな
いと思うのですが。

[ ]
RE:08780 LockSelectionの不具合No.08781
たまがわ さん 03/05/06 22:35
 
アルビレオさん、こんばんは。

>えーと、
>>>  もう1つバグというか、これは仕様に近いんですけど、LockSelectionした時
>>> 点での選択されていたメールをEnumSelectionすることなく別の手段で選択して
>>> 削除すると、その後のEnumSelectionがおかしくなることがあるようです。直す
>>> のが困難だし、そもそもそういう使い方しないでも困らないはずなので、仕様と
>>> します。(ヘルプは直します)
>ということなら、
>
>#n = dllfunc("LockSelection");
>#n = dllfunc("SetMailIndex", 0);
>#n = dllfunc("Delete", 1);
>
>となっている部分はマクロの方を書き直さないと今後も正しく動作することはな
>いと思うのですが。

 最初に書いたように、上から三番目以降のメールを選択して試してください。その
メールは、dllfunc("SetMailIndex", 0)で選択されるメールではないので、秀まるお
さんが書かれた「LockSelectionした時点での選択されていたメール」ではありませ
ん。
 LockSelectionでLockしたメール以外のメールを操作(削除)しているだけなのに、
EnumSelectionがそのLockしたはずのメールをうまく選択してくれないというトラブ
ルです。

[ ]
RE:08781 LockSelectionの不具合No.08782
アルビレオ さん 03/05/06 23:19
 
アルビレオです。

> 最初に書いたように、上から三番目以降のメールを選択して試してください。その
>メールは、dllfunc("SetMailIndex", 0)で選択されるメールではないので、秀まるお
>さんが書かれた「LockSelectionした時点での選択されていたメール」ではありませ
>ん。
> LockSelectionでLockしたメール以外のメールを操作(削除)しているだけなのに、
>EnumSelectionがそのLockしたはずのメールをうまく選択してくれないというトラブ
>ルです。

あ、最初に選択されているのは3番目以降でしたか。
でもSetMailIndexで選択したメールがLockしたメールに含まれているか確認する
方法がなさそうなので、使い方に気をつけないと危険かなと思いました。

[ ]
RE:08782 LockSelectionの不具合No.08783
たまがわ さん 03/05/06 23:49
 
アルビレオさん、コメントありがとうございます。

>でもSetMailIndexで選択したメールがLockしたメールに含まれているか確認する
>方法がなさそうなので、使い方に気をつけないと危険かなと思いました。

 その通りですね。気を付けないと「仕様」に引っかかって危険だと思います。
 このマクロ自体は、自作マクロが期待通りに動かなかったときに、問題点を抽出す
る過程で作った、あくまで「テスト用マクロ」なので、実用的な意味は全くないです。
 自作マクロでやっていることは、鶴亀本体だけでテキスト処理するため、マクロ中
でテキスト処理用のメールを作ったり削除したりしておりまして、あらかじめ選択さ
れているメールと削除するメールが重複することはない作りになっています。

[ ]
RE:08783 LockSelectionの不具合No.08786
秀まるお さん 03/05/07 10:09
 
 いろいろお手数かけてすみません。ソースコード上で、メールを1つだけ選択
してる時に特別な処理があって、それを直した後にテストせずに終わらせてしま
い、実際に直ったかどうか確認してませんでした。

 とにかくテストして、今度こそ確実に修正させていただきます。

[ ]
RE:08786 LockSelectionの不具合No.08794
たまがわ さん 03/05/07 22:46
 
秀まるおさん、こんばんは。

>  いろいろお手数かけてすみません。ソースコード上で、メールを1つだけ選択
> してる時に特別な処理があって、それを直した後にテストせずに終わらせてしま
> い、実際に直ったかどうか確認してませんでした。
>
>  とにかくテストして、今度こそ確実に修正させていただきます。

 鶴亀2.76で修正を確認しました。ありがとうございました。

 これとは別件ですが、また、LockSelectionで悩んでいます。
 以下のテスト用マクロは、フォルダ内のメールを全選択して青色を付けるものです。
 ここで、メール一覧をスレッド表示にして、上から2番目以降のメールを選択した
上で、以下のマクロを走らせると、一番上のメールに色が付きません。
 sendmessageを使わず、手動でCtrl-Aとして全選択するようにしても同様です。
 どうも一番上のメール、EnumSelectionが選択し忘れているみたいです。

loaddll "tkinfo.dll";
#n = sendmessage(hidemaruhandle(0), 0x0111, 40008, 0);
#n = dllfunc("LockSelection");
while(1) {
    if (!dllfunc("EnumSelection", 1)) break;
    #n = dllfunc("SetMailColor", 4);
}
#n = dllfunc("UnlockSelection", 1);
endmacro;


# 最近少しまとまったマクロを作っている関係で、ちょっと立て続けに書き込んでし
まっていて、申し訳ないなあと思っています。手をわずらわせておきながらこういう
のもナンですけど、元気出してくださいね。応援しています!

(win xp pro sp1, TuruKame 2.76)

[ ]
RE:08794 LockSelectionの不具合No.08797
秀まるお さん 03/05/08 10:29
 
 毎度お手数かけます。バグ再現しました。&、昔からのバグでした。

 (レベルダウンじゃなかった分だけ少し安心した)

 「すべて選択」とした段階で、フォーカス(点線の枠)がスレッド表示の先頭
のメールに移動しつつも、なぜかそのメールの内容がメール内容枠に表示されな
い(選択された扱いになってない)のが原因でした。その辺を修正させていただ
きます。

[ ]
RE:08797 LockSelectionの不具合No.08804
たまがわ さん 03/05/10 11:03
 

> 毎度お手数かけます。バグ再現しました。&、昔からのバグでした。
>
> (レベルダウンじゃなかった分だけ少し安心した)
>
> 「すべて選択」とした段階で、フォーカス(点線の枠)がスレッド表示の先頭
>のメールに移動しつつも、なぜかそのメールの内容がメール内容枠に表示されな
>い(選択された扱いになってない)のが原因でした。その辺を修正させていただ
>きます。

 鶴亀2.78で改善を確認しました。お手数おかけました。

[ ]