矩形選択時の貼り付けNo.00135
ぷっぴす さん 07/01/21 21:24
 
矩形選択時の貼り付けに以下のような機能を追加して欲しいです。

クリップボードにDEFは格納されていて

 1 ABC.AA
 2 ABC.BB
 3 ABC.CC

1〜2行目のABCを矩形選択後、貼り付け実行で

 1 DEF.AA
 2 DEF.BB
 3 ABC.CC

となるような動作です。

※クリップボードに改行コードが含まれる場合は動作不可にしないと
 おかしな動作になってしまうと思いますが...

[ ]
RE:00135 矩形選択時の貼り付けNo.00140
白雲斎 さん 07/01/22 07:34
 
こんにちは ぷっぴす さん、白雲斎です。

>矩形選択時の貼り付けに以下のような機能を追加して欲しいです。
>
>クリップボードにDEFは格納されていて
>
> 1 ABC.AA
> 2 ABC.BB
> 3 ABC.CC
>
>1〜2行目のABCを矩形選択後、貼り付け実行で
>
> 1 DEF.AA
> 2 DEF.BB
> 3 ABC.CC
>
>となるような動作です。
>
>※クリップボードに改行コードが含まれる場合は動作不可にしないと
> おかしな動作になってしまうと思いますが...

「BOX貼り付け」で出来ませんか?

メニューから「その他」→「メニュー編集」で「編集」コマンドの欄にあります。
※標準で「Shift + F9」に割り当てられていたかな!?

[ ]
RE:00140 矩形選択時の貼り付けNo.00141
ぷっぴす さん 07/01/22 09:12
 
BOX貼り付けを実行してみましたが残念ながら実現できませんでした。

[ ]
RE:00141 矩形選択時の貼り付けNo.00149
秀丸担当 さん 07/01/22 10:27
 

>BOX貼り付けを実行してみましたが残念ながら実現できませんでした。

あらかじめ、
DEF
DEF
と二行分をコピーしておけば、いちおうできます。
改行が無いときのみその動作になるというのは、ユーザーが予測できる動作かど
うか疑問ですし、マクロでやったほうがいいかもしれません。
BOX選択の場合、その行数分だけaddclipboardするというようなマクロを作れば
簡単にできるかもしれないです。

[ ]
RE:00149 矩形選択時の貼り付けNo.00165
ぷっぴす さん 07/01/22 18:06
 
やはりマクロになるのですね。
クリップボードの中身変えたくなかったので
他のやり方にしました。

// たいして動作確認していませんがこんな感じにしてみました。


// 未選択状態の場合、終了
if (rectselecting == 0) {
 // 通常の貼り付け処理
 paste;
 endmacro;
}

// 貼り付け拡張処理
beginclipboardread;
#i = 0;

// クリップボードのすべての行を取得
$a[#i] = getclipboard;
while ($a[#i] != "") {
    #i = #i + 1;

    $a[#i] = getclipboard;
}

if ($a[0] == "" || (#i > 0 && $a[1] != "")) {
 // 通常の貼り付け処理
 paste;
 endmacro;
}

// 1行しか格納されていない場合
#start = seltopy;
#end   = selendy;

$clip = $a[0];

// 改行コードがあれば除去
if (rightstr($clip, 1) == "\x0A") {
 $clip = leftstr($clip, strlen($clip) - 1);
}

#x1 = seltopx;
#x2 = selendx;

disabledraw;
escape;

while (#start <= #end) {
 moveto #x1, #start;
 beginsel;
 moveto #x2, #start;
 endsel;
 delete;
 insert $clip;

 #start = #start + 1;
}

enabledraw;
endmacro;


[ ]
RE:00165 矩形選択時の貼り付けNo.00172
秀丸担当 さん 07/01/23 09:37
 

>やはりマクロになるのですね。
>クリップボードの中身変えたくなかったので
>他のやり方にしました。

試しに動かしてみましたが、いい感じですね。

[ ]