一括表示

− 野ざらし言 −

[4060] ファイラーのメニュー

としき 2012/01/15(Sun) 16:30
http://www1.hinocatv.ne.jp/toshiki/
ファイラーのメニューについて教えてください。

FILEメニューとEXECメニューなんですが、記述できるコマンドそのものはほとんど同じと考えてよいのでしょうか。つまり、ファイラーでのファイル非選択時の挙動がオプションFMで異なってくるという点を除くと、ほとんど同一と考えてよいのでしょうか。他にも何か大きな違いはありますでしょうか。あるいは、慣例的に行われている、もしくは推奨されている使い分けについても教えていただけるとありがたいです。

もう一つ。
FILEメニューやEXECメニューを階層化するにはどうしたらよいのでしょうか。
なんかマクロを使う必要があるのでしょうか。
具体的には、EXECメニューで「L LHA」とかってしておいて、この項目を選ぶと再びメニューになって表示と解凍と圧縮を選ぶことができる、という様な事を考えております。

もしお分かりになりましたらお教えください。

[4061] Re: ファイラーのメニュー

めざら 2012/01/15(Sun) 23:17
[4060]へのコメント http://homepage3.nifty.com/mezala/index.html
> FILEメニューとEXECメニュー

 まったく同じです。
 推奨…というのとは違いますが,使い分けをするのであれば,そのメニューの名称のとおりにFileメニューにはファイル操作の処理を集め,Execメニューには外部コマンドを集めるというこだわり方もよいのではないかと思います。製品版のメニューは1.5のExecメニューを引きずっていて,きちんと分類整理されていないではという考え方もあるかと思います。
 諸橋さんのVZMR.DEFは,「ツール」と「アプリ」というふうに分けています。まぁ,あまり変わりませんけどね。

> FILEメニューやEXECメニューを階層化するには

 システムメニューなので,通常のメニューと異なりメニューからチャイルドのメニューを呼ぶことはできません。ですから,ファイラーで呼び出すマクロを指定する必要があると思います。

[4062] Re^2: ファイラーのメニュー

としき 2012/01/16(Mon) 21:42
[4061]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> > FILEメニューとEXECメニュー
>  まったく同じです。

了解しました。
私の理解がだいたい合っていたということで安心しました。


>  ですから,ファイラーで呼び出すマクロを指定する必要があると思います。

こちらは理解できていません。
というか、試行錯誤した結果。
どうやら、私はメニューそのものを理解していなさそうだ、ということが判明。
例えば、vzfl.defで

8 "",15,8
  "C コピー     copy %1 %2"
  "D 削除       del "
  "X 実行       %1 %2"
  "A 比較(Asc)  fc %1 %2"
  "B 比較(Bin)  fc /b %1 %2"
  "E コマンドライン",  #H
  "F File menu", #F
  &30

とやっても、30番マクロを呼び出せるわけではないようですね。
具体的には、どのように記述すればよいのでしょうか。
簡単なサンプルを提示していただくわけにはいきませんでしょうか。

お手数をおかけしますが、なにとぞよろしくお願いします。
 

[4063] Re^3: ファイラーのメニュー

めざら 2012/01/16(Mon) 22:31
[4062]へのコメント http://homepage3.nifty.com/mezala/index.html
> 例えば、vzfl.defで
> 
> 8 "",15,8
  中略
>   "F File menu", #F
>   &30

 通常のメニューであればコマンドやマクロをそのまま登録できますし,
子メニューを呼ぶこともできますが,システムメニューは動作が限定され
ていますので,このような記述はできません。おそらくシンタックスエラー
になるのではないでしょうか。

> > ファイラーで呼び出すマクロを指定する必要があると思います。

 これは例えば,ファイラーイベントでキーを受けるか,ファイラーで
有効なマクロキーを割り当てるなどして,ファイラーのローカルマクロか
外部マクロを呼び出す指定をしなければならないということです。
具体的には,

1 "!Filer"
    ;中略
    (r)>!{
        O>O
        U>U
        Z>Z
    }
.:O (fg.0)?#93 ?#W &s #P &?(fl..0+34) &d #m #93	;same dir dst
.:U fs^=5, :u #U (fg.0)?{ &s #93 &d #U #93 } ;Name/New u:refresh
.:Z &z("qview"[) >* &Zd(r]) ;qview by Hiro.
.

 ローカルマクロを指定するなら別途適当な位置に追加することになります
が,この例ではラベルジャンプをローカルマクロへのジャンプのごとく
使っています。外部マクロも呼べます。

 ファイラーイベントで受けるキーは,アルファベットのほかに記号も
受けることができます。キーコードで受けるのではなく文字コードとして
受け取るからです。さらに,特殊文字(コントロールコード)入力用の
コマンド(製品版では ^P )を生かしてあれば,^P+'A'で ^A(01H)のよう
にコントロールコードを受けることができます。ただし,0AHなんかは
出力できませんけど。

[4064] Re^4: ファイラーのメニュー

としき 2012/01/16(Mon) 23:52
[4063]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> このような記述はできません。おそらくシンタックスエラー
> になるのではないでしょうか。

環境によるのかもしれませんが、私のところではシンタックスエラーにはなりませんでした。正常に起動します。が、ファイラーからEXECメニューを表示させると、表示させた直後は30番マクロのタイトルとして指定していた文字列"test"が表示されていますが、カーソルを1つでも上下させるとそのとたんに、vz.defのコマンドキー30番のコロン以降の文字列である"ページングモード"という文字列に書き換わってしまいます。
書き換わったあとであろうと、あらかじめカーソルを合わせておいて一度表示を消して再度メニューを表示させたあとの初期文字列の状態であろうと、そのままその項目の選択を強行しても期待していた次の階層のメニューとはなりません。


とりあえず、階層メニューは不可能ではないが、自分が考えていたのよりはるかに複雑な設定が必要であるということがわかりました。私のスキルレベルを考えたとき、安直にメニュー項目を書き換えるだけで設定ができないということは、項目の加除等、後々のメンテナンスに差し支える可能性が高いので、今回は見送りとさせていただきます。
せっかく教えていただいたのに申し訳ありません。
どうもありがとうございました。

[4065] Re^5: ファイラーのメニュー

konno 2012/01/20(Fri) 00:24
[4064]へのコメント
> とりあえず、階層メニューは不可能ではないが、自分が考えていたのよりはるかに複雑な設定が必要であるということがわかりました。

横から失礼しますが、私のVZFL.DEFではExecメニューを普通のマクロメニュー
に置き換えて階層メニューにしてますよ。置き換えは簡単です。

r[, &Fm(r) (r>=0)? {
;; sp+=2, (r)>?{ #F #L #M #P #S #V #W #+ #> #< #O &08 #E }
sp+=2, (r)>?{ >F #L #M #P #S >V #W #+ #> #< #O >E }

このように、#F や #E を、>F と >E に置き換えて、

.:E !02 .

* P メニュー

2 "【EXECメニュー】",24,19
"M DOSコマンド メニュー", !03
"P 圧縮解凍 メニュー", !05
"T ツール メニュー", !04
"C コピー(DOS) %^copy %1 %2",#!
; 以下略

という感じにしてます。
私のVZFL.DEFは、うちのVZマクロの部屋に置いてますので、そのまま
置き換えて実行できるはずです。
http://homepage3.nifty.com/tamaneko/vzmac.htm

[4066] Re^6: ファイラーのメニュー

めざら 2012/01/20(Fri) 06:56
[4065]へのコメント http://homepage3.nifty.com/mezala/index.html
> Execメニューを普通のマクロメニューに置き換えて階層メニューに

 おお! その手がありましたか。
 そういった基本的な部分はほとんど弄っていなくて,考えが至りませんでしたねー。

 なるほど,なるほど。さすがは konno さん。

 これはマクロFAQにいただきですね。(^^)

 てことで >としきさん

[4067] Re^6: ファイラーのメニュー

としき@会社 2012/01/20(Fri) 08:58
[4065]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> このように、#F や #E を、>F と >E に置き換えて、

こういう風にするのか。
試してみたいと思います。
どうもありがとうございました。

[4069] Re^7: ファイラーのメニュー

konno 2012/01/22(Sun) 00:07
[4067]へのコメント
としきさん

> 試してみたいと思います。

すみません、漏れがありました。

 sp+=2, (r)>?{ >F #L #M #P #S >V #W #+ #> #< #O >E }
の下の
;	E	#E	;Exec menu
;	F	#F	;File menu

をコメントにしてください。あと、
* S システムメニュー
の8番と13番は使わなくなるので、メモリの無駄にならないように削除か
コメントにしたほうがいいかも。

あ、File menu はそのままにしておいて、Exec menu だけマクロ化して
階層メニューにしたほうがメモリの節約になるかもしれませんね。

あと、システムメニューをマクロメニューに置き換えると、メニューの
渡り歩きが出来なくなりますが、問題ないですよね。
和生さんは対処していたようですが、私は挫折しました。

う〜ん、私のVZFL.DEFは2011/3/05が最終更新で、それ以降いじってなかった
ですが、私のもまだまだ無駄が多いので見直してみます。

[4071] Re^8: ファイラーのメニュー

としき 2012/01/22(Sun) 13:51
[4069]へのコメント http://www1.hinocatv.ne.jp/toshiki/
やっと時間が取れて、試行錯誤を開始したところです。

> sp+=2, (r)>?{ >F #L #M #P #S >V #W #+ #> #< #O >E }
> の下の
> ; E #E ;Exec menu
> ; F #F ;File menu
> をコメントにしてください。あと、

あれ?
私のところでは、既にコメントになっていました。
それにもかかわらず、今まで使えていたのはなぜだろう。

> あと、システムメニューをマクロメニューに置き換えると、メニューの
> 渡り歩きが出来なくなりますが、問題ないですよね。

げ。
場合によっては問題かも。
しばらく使い込んでみる必要がありそうです。

[4073] Re^8: ファイラーのメニュー

としき 2012/01/22(Sun) 14:33
[4069]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> あ、File menu はそのままにしておいて、Exec menu だけマクロ化して
> 階層メニューにしたほうがメモリの節約になるかもしれませんね。

現在、そのようにして試している最中です。
その際、

> * S システムメニュー
> の8番と13番は使わなくなるので、メモリの無駄にならないように削除か
> コメントにしたほうがいいかも。

8番をそのまま残していたらメモリ不足といわれてしまってVzが起動できませんでした。なので、ここはスパッとコメントにしたら無事に起動できるようになりました。

> あと、システムメニューをマクロメニューに置き換えると、メニューの
> 渡り歩きが出来なくなりますが、問題ないですよね。

カーソルキーを使った渡り歩きができなくなることは確認しました。
ただ、これは頻度が少ないので問題はありません。
問題は、似ているけどちょっと違うところにありました。
従来のシステムメニュー13番では「"E Exec menu", #E」とすることでExec menuに移行することができました。が、今度は同様に「"E Exec menu", !02」とすれば新しいポップアップメニューのほうが表示されるかと思いきや、そうは問屋がおろしてくれませんでした。
逆に、従来のシステムメニュー8番で「"F File menu", #F」としていた部分は、そのままポップアップメニューのほうで同じように書いたら、そのままきちんとFile menuに移行してくれました。

システムメニューからポップアップメニューを呼ぶことは難しいのでしょうか。方法があるのならお教えいただけると幸いです。

[4074] Re^9: ファイラーのメニュー

konno 2012/01/23(Mon) 00:37
[4073]へのコメント
#4071 としきさん

> 私のところでは、既にコメントになっていました。
> それにもかかわらず、今まで使えていたのはなぜだろう。

これはもともとコメントだったのかもしれませんね、機能説明のための。
メニュー呼び出しはその上の部分でやってますし。

> 「"E Exec menu", !02」とすれば新しいポップアップメニューのほうが表示されるかと思いきや、そうは問屋がおろしてくれませんでした。

これは最初意味がわからなかったですが、システムメニューからポップアップメニューを呼ぶという意味ですね。それは普通には無理でしょう。

> 逆に、従来のシステムメニュー8番で「"F File menu", #F」としていた部分は、そのままポップアップメニューのほうで同じように書いたら、そのままきちんとFile menuに移行してくれました。

これは、#F というコマンドの機能を呼ぶのは普通のメニューでもできるということです。
なので、メニューの書式は基本的にはそのまま移行出来ますよね。

> システムメニューからポップアップメニューを呼ぶことは難しいのでしょうか。

私にはわかりません。めざらさんの提示された方法はどうなんでしょうか。
私はスレの内容をよく読まずに横入りだったもので。

[4075] Re^10: ファイラーのメニュー

としき 2012/01/24(Tue) 21:45
[4074]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> システムメニューからポップアップメニューを呼ぶという意味ですね。それは普通には無理でしょう。

そうですか。それは残念。

> 私にはわかりません。めざらさんの提示された方法はどうなんでしょうか。

その方法だと、ちょっと重すぎるというか、自分の実力以上に複雑な感じで遠慮させていただきます。
とりあえず、当面は、若干の不便は感じながらも、konnoさんの方式の階層化メニューを使っていってみたいと思います。まぁ、そのうちに慣れることでしょう。使用頻度などから考えて、どうしても不便なようなら、階層メニューのほうの導入を取りやめることもやむなし、と考えております。

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

[4076] Re^11: ファイラーのメニュー

めざら 2012/01/28(Sat) 09:07
[4075]へのコメント http://homepage3.nifty.com/mezala/index.html
> 自分の実力以上に複雑な感じで遠慮させていただきます。

 わたしが提示したのは,システムメニューでは階層メニューができないので,ファイラーからマクロを呼び出すというものなのですね。ですので,特別に複雑というわけではないのですが,マクロは別途用意しなければならないし,階層メニューはともかく,システムメニューのような渡りメニューにするには工夫が必要だという面倒があります。
 おそらく,としきさんの所望する使い勝手の実現は難しそうに思います。

[4068] Re^6: ファイラーのメニュー

文太 2012/01/20(Fri) 12:00
[4065]へのコメント
konnoさん

>横から失礼しますが、私のVZFL.DEFではExecメニューを普通のマクロメニュー
>に置き換えて階層メニューにしてますよ。置き換えは簡単です。

 横から失礼しますが(笑)、さすが! 少しだけ考えたのです。
 そんなに沢山は要らないか、とも思ったけど、すっきりしますね、これ。
 すごい。

[4070] Re^7: ファイラーのメニュー

konno 2012/01/22(Sun) 00:23
[4068]へのコメント
めざらさん、文太さん

私のVZ.DEF や VZFL.DEF は、ほとんどが、FGALDC で見かけたマクロの
パクリなので、あたりまえの手法だと思ってました。
すごいのは、DCの先人達ですよね。

いまだにVZマクロを語り合えるというのも、ある意味すごいことですね。
(^^;

[4072] Re^8: ファイラーのメニュー

文太 2012/01/22(Sun) 13:53
[4070]へのコメント
konnoさん

>いまだにVZマクロを語り合えるというのも、ある意味すごいことですね。
 実にまったく。それでも、2005年近辺までは、DOS & USB というラインが外国では活発に探求されていたようです。でも、もう2012年ですからねぇ。ビット演算が恐くなくなりました。多謝>めざらさん、メニュー@VzマクロFAQ。

↑ このページの先頭