|
きいろいまふらあ さん ありがとうございました。
範囲選択後、
$str = gettext(#x1, #y1, #x2, #y2);
を実行した時点で、範囲選択が解除されているようでした。
そこで、おっしゃられるように
moveto #x1, #y1;
の位置を動かしてみて、下のように
replacedown $search,$replace,ask,inselect;
の前に
moveto #x1, #y1;
beginsel; moveto #x2, #y2;
を入れ、
$replace = input("置換文字列",$str);
の前に
moveto #x1, #y1;
を入れると、inselectオプションが働きました。
***********************************
if (selecting) {
#x1 = seltopx;#y1 = seltopy;
#x2 = selendx;#y2 = selendy;
$str = gettext(#x1, #y1, #x2, #y2); //選択範囲
if(strlen($str)>=40){ //全角20字以上なら選択範囲で置換
$search = input( "検索文字列","");
$replace = input("置換文字列",$search);
moveto #x1, #y1;
beginsel; moveto #x2, #y2;
replacedown $search,$replace,ask,inselect;
} else { //全角20字より短ければ、ダイアログに選択範囲を読込む
moveto #x1, #y1;
$replace = input("置換文字列",$str);
replacedown $str,$replace,ask;
}
} else {
replacedown "","",ask;
}
question "見つかりません。" + "\n" + "始めの位置に戻りますか?";
if (result) {
gosearchstarted;
endmacro;
} else { endmacro; }
//end of macro;
***********************************
ところが、8〜9行目の
moveto #x1, #y1;
beginsel; moveto #x2, #y2;
で再度範囲選択を行っているところを確認すると、元の選択範囲と同じ
であるのに、
replacedown $search,$replace,ask,inselect;
で置換すると、選択範囲の最後の行の行末まで置換されてしまいます。
これはどうしてでしょうか。よろしくお願いします。
|
|