2008年5月17日土曜日

第94回目 QXマクロの紹介(その5)

○第94回目 QXマクロの紹介(その5)
 ※QXマクロは、QXエディタ(テキストエディタ)で使用されるマクロのことです。
  QXマクロでは、全角スペースはデーター以外は認められていません。コピーして使う場合は、必ず半角スペースに変えてください。

 削除の機能です。
 どの機能が必要かと思われますか。
 15、16あたりではないでしょうか(第90回参照)。
 15.一字一字削除していくのではなく、何文字か一気に削除できないか
 16.文末まで削除したい=⇒QXエディタの基本機能
 17.一行を簡単に削除したい=⇒QXエディタの基本機能
 18.何行かを一気に削除したい

 ワードでも、16は機能化されていますので、15を取り上げます。
 削除するとは…
 通常はその最初の場所にカーソルをもって行き、Delキーを必要なだけ押す、ということでしょう(範囲を設定してDelキーという方法もありますが、行をまたぐ大量の削除でなければ、それほどかわりません)。
 削除する文字数は最初からわかりますか?このあたりという感じは持っていたとしても、文字数はということになるとわからないのが普通ではないでしょうか。
 文字数を入力してEnterキーを押すというのは、一瞬時間が止まります。
 これをデメリットと考えるか、ワンタッチで処理が終了するのをメリットと捉えるか。
 これはいくら考えても解決しません。それほど大変ではないので、考えるよりは、作って好きなほうを使うという態度にしたらどうでしょうか。
 メリット面を生かすように、すでに初期値として何らかの数値が与えられている、としましょう。もし違っていたら…。道は二つに分かれます。あくまでの正確な数値を入力して自動的に削除してしまうという方法。もうひとつは、とりあえずの値を入力してから、通常の削除と同様に矢印キーを動かして指定する方法。
 後者のほうが無難ですね。
 もう一つ手抜きをして、マクロの中で適当な数の文字列を事前に設定して(入力はしないということです)、矢印キーで指定範囲を変えるということにします。
 削除範囲の確定はEnterキーです。
 初期値として何文字を指定すればいいのか。これはまったくわかりません。各自の事情に応じて変えてください。
 短めの場合は、5文字あたりでしょうか。
 長めの場合は、10文字あたりでしょうか。
 とりあえず筆者は、中間を取って8文字としました。

 整理してみますと、
 マクロを起動させますと
 8文字(初期値)の文字分が選択されています。EnterかDelキーを押すとその部分が削除されます。
 終わりの場所を変えたい場合は矢印キーで範囲を変えて、決まったところでEnterかDelキーを押す。
 という操作になります。
 このマクロでは文字列だけではなく、複数行も削除できます。
 ここまでくるとメリットが見えてきそうです。

 流れです。
 1.マクロを動かすと、カーソルのある文字から8文字が選択される。
 2.矢印キーで削除したい終わりにカーソルを移動する。
 3.範囲を確定し削除する。

 1.マクロを動かすと、カーソルのある文字から8文字が選択される。
'削除文字列の指定
@BlockSelect
FOR i=1 to p2  'p2には8を入れている
@MoveRightChar
next

 2.矢印キーで削除したい終わりにカーソルを移動する。
 これは前回の4.を参照してください。必要なキー操作だけ残してください。

 3.範囲を確定し削除する。
   do
   if iskeypressed(KEY_RETURN) or iskeypressed(KEY_SPACE) or iskeypressed(KEY_DELETE) then
   exit do
   elseIf iskeypressed(KEY_PRIOR) then
     :
     :
   end if
   loop while 1

   @BlockDelete

 こんな感じで終了です。
 有効なキーとしては矢印キーのほかに、Home、End、PageUp、PageDown、Tab(単語単位左へ)、BackSpace(単語単位右へ)あたりを、そろえておけばいいのではないでしょうか。
 よくわからないのですが、下矢印キーを1回押すと、その行全体が削除されます。
 上矢印キーを1回押すと、その行の上の行全体が削除されます。
 もっと続けると複数行が削除できます。
 これの変形で、下矢印キーをN回押す、左矢印キーを1回押すと、最初にあった文字から複数行が削除されます。これは最初にあった文字の前の部分は残るということです。

 ということで、複数行の削除まで出来てしまいました。
 PageUp、PageDownでは、7行分の指定が出来ますから、大きな範囲の削除も確認しながら簡単に出来ます。

 ※同一行の場合をよく使っています。使ってみて一言。
 結構便利です。ピタッとはまる時は感激します。

0 件のコメント: