表示範囲の設定No.21749
メソ さん 05/02/19 16:34
 
メソと申します。

表示範囲を指定する機能をよく利用しているのですが、
範囲を設定する画面を一気に開くマクロなど、作られ
た方はいませんでしょうか?。

一時的な設定を入れて利用することがよくあるので、
簡単に開けるようにしたいと思っていまして。

SetViewArea関数の13番を指定すると設定画面が開く、
とかなりませんでしょうかね?。


[ ]
RE:21749 表示範囲の設定No.21752
秀まるお2 さん 05/02/19 22:34
 
 しいてやるとしたら、マクロからレジストリを直接書き換えてEnvChanged関数
を呼ぶのがいいんじゃないかと思います。

 レジストリとしては、CusmView00〜の所ですけど。例えば現在の検索条件を
GetFindPackで取得してそれをレジストリに直接書き込むって手があろうかと思
います。

 (以下、試してないけどイメージ的にこうなるだろうってマクロです)

    loaddll "tkinfo.dll";
    $s = dllfuncstr("GetFindPack);
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "CusmView13", "カスタム\t" + $s;
    closereg;
    #n = dllfunc("EnvChanged");

[ ]
RE:21752 表示範囲の設定No.21770
メソ さん 05/02/20 23:03
 
お返事いただきありがとうございます。

サンプルを少しだけ直してマクロを作ってみました。

//DLLロード
loaddll "tkinfo.dll";
//現在MainWindowか?
if(dllfunc("IsTuruKameMain") == 0){
    //MainWindowでないときはマクロを実行しない
    endmacro;
}
//検索状態の取得
$s = dllfuncstr("GetFindPack");
//レジストリへ記録
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
writeregstr "CusmView01", "一時設定\t" + $s;
closereg;
//レジストリの再読込
#n = dllfunc("EnvChanged");
//Viewのチェンジ
#m = dllfunc("SetViewArea", 15);
if(#m == 0){
    message "Viewの変更に失敗";
}
endmacro;

質問なのですが、SetViewAreaで指定するルール番号と、
レジストリの番号が一致していないのですが、SevViewArea
の13と指定したときはどのようなkeyでレジストリに記録さ
れるのでしょう。

それと、ユーザのルールがいくつ登録されているか調べられ
ないでしょうか?レジストリのどこかに記録されていると思
うのですが・・・。

実際に使ってみたところ、検索Windowを出していったん検索を
かけてからでないと、検索ルールが変わらないようでいまいち
洗練された使い勝手ではないですね。鶴亀の検索Windowを呼び
出す関数があるとよいのですが・・。

長文で失礼しました。


[ ]
RE:21770 表示範囲の設定No.21771
メソ さん 05/02/20 23:11
 
使われる方が居るかわかりませんが・・・。
下記のマクロをそのまま実行しますと、あらかじめ範囲ルール
が登録してある方は上書きされてしまいますので注意してくだ
さい。(2番目の範囲ルールに上書きされます)

>//DLLロード
>loaddll "tkinfo.dll";
>//現在MainWindowか?
>if(dllfunc("IsTuruKameMain") == 0){
>    //MainWindowでないときはマクロを実行しない
>    endmacro;
>}
>//検索状態の取得
>$s = dllfuncstr("GetFindPack");
>//レジストリへ記録
>openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
>writeregstr "CusmView01", "一時設定\t" + $s;
>closereg;
>//レジストリの再読込
>#n = dllfunc("EnvChanged");
>//Viewのチェンジ
>#m = dllfunc("SetViewArea", 15);
>if(#m == 0){
>    message "Viewの変更に失敗";
>}
>endmacro;

[ ]
RE:21770 表示範囲の設定No.21776
秀まるお2 さん 05/02/21 13:14
 
> 質問なのですが、SetViewAreaで指定するルール番号と、
> レジストリの番号が一致していないのですが、SevViewArea
> の13と指定したときはどのようなkeyでレジストリに記録さ
> れるのでしょう。

 14〜がユーザー様指定のカスタム表示範囲なので、14番かレジストリの
CusmView00に対応して、あとは番号順のはずだと思います

> それと、ユーザのルールがいくつ登録されているか調べられ
> ないでしょうか?レジストリのどこかに記録されていると思
> うのですが・・・。

 CusmView00〜の値を順番に調べていって、内容が空になったらそこで終わりっ
てことのようです。マクロで調べるとしたら、そのような列挙する用のループを
作ればいいと思います。

> 実際に使ってみたところ、検索Windowを出していったん検索を
> かけてからでないと、検索ルールが変わらないようでいまいち
> 洗練された使い勝手ではないですね。鶴亀の検索Windowを呼び
> 出す関数があるとよいのですが・・。

 現状そういうことになりますけど。

 特定の文字列を検索するだけの条件でカスタム表示範囲をいじりたいだけなら、
別に検索ダイアログボックスじゃなくても、input文で済むような気はします。
その辺はマクロでいろいろ工夫して欲しいような気がします。

[ ]
RE:21776 表示範囲の設定No.21781
メソ さん 05/02/21 23:31
 
回答いただきありがとうございます。

Input分を使って色々やってみようと思います。

ありがとうございました。

> 特定の文字列を検索するだけの条件でカスタム表示範囲をいじりたいだけなら、
>別に検索ダイアログボックスじゃなくても、input文で済むような気はします。
>その辺はマクロでいろいろ工夫して欲しいような気がします。

[ ]