BOX選択時のselopenyについてNo.10443
igus さん 24/08/05 11:19
 
BOX選択をしたときselopenyはカーソルとはの反対側のy座標を返してくれます。
この状態で文字を入力したとき画面上はBOX選択が継続しているように見えるので
すがrectselectingを調べてみると0になってしまいselopenyの値もカーソル側のy座
標を返します。
BOX選択で文字を入力したときにカーソルとはの反対側のy座標を調べる手段はな
いでしょうか?

[ ]
RE:10443 BOX選択時のselopenyについてNo.10444
秀丸担当 さん 24/08/05 16:25
 
BOX選択で文字入力したときは、以前はBOX選択での特殊な状態でしたが、今は複数選
択化される状態になっています。
[その他]→[動作環境]→[編集]→[高度な編集1]→[BOX選択中にキーを押すとその文
字を各行に挿入する]の、[...]ボタンの中の設定によります。
従来の動作もできますが、通常は複数選択です。

この状態では、rectselectingは0で、multiselectingやmultiselectcountで判断し、
複数選択として各種の状態を調べることになります。

[ ]
RE:10443 BOX選択時のselopenyについてNo.10445
こみやんま さん 24/08/05 16:35
 
>この状態で文字を入力したとき画面上はBOX選択が継続しているように見えるのです

BOX選択中からの複数個所入力まわりって、設定によっても基本的な挙動が変わって
しまうので、

--- test.mac ---
setcompatiblemode 0x00100000;

jsmode "WebView2";
js {
debuginfo(2);
hidemaru.clearInterval(interval);
var interval = hidemaru.setInterval(()=>{ hidemaru.postExecMacroMemory("js
{ var_dump_selectedrange(); }"); }, 1000 );

var lastStrSelectedRange = "";

function var_dump_selectedrange() {
    let range = getselectedrange({unit:"wcs"});
    let jsonRange = JSON.stringify(range);
    if (jsonRange != lastStrSelectedRange) {
        console.log("rect" + rectselecting());
        console.log("multi" + multiselecting());
        console.log(jsonRange);
    }
    lastStrSelectedRange = jsonRange;
}

}
---
あたりのマクロを「1度実行」し、「該当のBOX選択⇒文字列入力」をしてみて、
アウトプット枠に出てくる値をみて、
「range」オブジェクト(getselectedrangeの返り値)がどのような値になるのか確認し、
ご自身の設定で使えそうな値拾う感じじゃないですかねー。


[ ]
RE:10444 BOX選択時のselopenyについてNo.10446
igus さん 24/08/05 17:28
 
multiselectcountの分だけyを移動させることで上手くいきました。ありがとうござ
いました。

[ ]