過去の桐井戸端BBS (桐ver.8)
15123 右クリックした場所にメニュー2を表示したい やく 2002/02/16-16:05
いつも参考にさせてもらってます。
過去検索でそれっぽいのが見当たりませんでしたので。
タイトルにはこう書きましたが、実際はメニュー2の開始行に
関することだと思います。

*1.左アップのイベントで現在マウス位置を取得します。
*&マウス位置[1]=X座標
*&マウス位置[2]=Y座標

*2.変数値を加工します。(ここが知りたいんです。)
&MPOS[1]=&マウス位置[1]/100
&MPOS[2]=????

*3.メニュー2コマンドを表示させます。
メニュー2 &変数名,&初期値,(&MPOS[2],&MPOS[1]),"表題","テスト1,テスト2"

X座標は、メニュー2コマンド内の開始桁で小数点以下も自動で
解釈してくれてマウスをクリックした位置になっているようです。
定数100は経験則による適当な数字です。(これもいいかげんすぎ)
問題は、Y座標で、メニュー2の開始行と取得したマウス位置の関係がまったくわかりません。
ただ行は小数点単位には設定できないようです。

よろしくお願いします。

15126 Re:右クリックした場所にメニュー2を表示したい 悲しげ 2002/02/16-23:28
記事番号15123へのコメント
どもっ、やくさん
「メニュー2」コマンドにおける開始行・開始桁の、実際の画面上での表示位置は、
cmdまたはkevファイルの「ファイル属性」の設定/「一括処理実行表示属性」
牡丹からの「フォントサイズ」によって決定づけられます。
ですから、お望みのことは、一般的には困難であろうと思います。
個々に試行錯誤しておおまかな定数を割り出すことも有り得ますが、
そこまでやるの?って感じもあったりします。(^^;)

次版あたりで、「メニュー2」コマンド等の表示位置を、例えばピクセル単位でも
指定できるようになることを期待したいですね。

15128 Re:右クリックした場所にメニュー2を表示したい Ogo 2002/02/17-01:08
記事番号15126へのコメント

>次版あたりで、「メニュー2」コマンド等の表示位置を、例えばピクセル単位で
>も指定できるようになることを期待したいですね。

MS-DOS の 桐5との互換性のために残しているだけでしょ?
指定そのものも「コンソール前提」なんだから、これの拡張を望むよりは、
例えば「簡易メニュー」とかの改良を要望する方がまともな気がします。

どうせなら、ストレートに「コンテキストメニュー」という機能を希望します。

# 具体的にどうすれば実装できるのかは思いつかないが。


15143 Re:右クリックした場所にメニュー2を表示したい やく 2002/02/18-13:34
記事番号15126へのコメント
悲しげさん
回答ありがとうございました。

ご指示どおり、CMDファイルのフォントサイズより
試行錯誤しておおまかな定数を割り出しました。

具体的には
*定数をかけて、最も近い整数値をとる。(253.333が定数(笑))
&MPOS[2]=#FLOOR(&マウス位置[2]/253.333)
*メニュー2の開始行の値は1から25なので
&MPOS[2]=#COND(&MPOS[2]=0,1,&MPOS[2]>=25,25,1,&MPOS[2])

とすれば、大まかではありますが、マウス付近に
メニュー2が表示されるようになりました。

>次版あたりで、「メニュー2」コマンド等の表示位置を、例えばピクセル単位で
>も指定できるようになることを期待したいですね。
素直に期待しちゃいますね。

15144 Re:右クリックした場所にメニュー2を表示したい やく 2002/02/18-13:50
記事番号15128へのコメント
>MS-DOS の 桐5との互換性のために残しているだけでしょ?
私もそう思います。

>どうせなら、ストレートに「コンテキストメニュー」という
>機能を希望します。
賛成です。

># 具体的にどうすれば実装できるのかは思いつかないが。
私は、桐の編集表の操作体系自体がかなり洗礼されていると思いますので、
フォームにイベント処理を追加するよりも編集表自体にイベント作成が
できればなぁとつくづく思います。

例としては、編集表の状態で項目値(たとえば図面番号が文字列ではいっている)を
ダブルクリックすると図面番号に対応した実ファイルが呼び出す処理とか
2種類の編集表を上下に表示させ、下の編集表の行をドラッグさせて
上の編集表にデータを追加させたりとか。。
(せめて、マウスインアウトで編集表のフォーカスぐらい取得したいもんです。)

15152 Re:右クリックした場所にメニュー2を表示したい 悲しげ 2002/02/18-19:54
記事番号15143へのコメント
どもっ、やくさん、

>ご指示どおり、CMDファイルのフォントサイズより
>試行錯誤しておおまかな定数を割り出しました。

私は「CMDファイルのフォントサイズより試行錯誤して」「定数を割り出」すように
「指示」したつもりはありませんでした。(^^;)

この度、割り出した「100」や「253.333」の定数は、或る解像度における
フォントサイズの大小いずれかで、且つ或るCMDまたはKEVの
ファイル属性で設定した或るフォントサイズと云う、云ってみれば
特殊な条件に限定されて有効な値であろうから、例えば他マシンとか
他CMD下でも有効な定数とはならないと云うこと。
その意味で、「個々に試行錯誤」する必要があり、苦労の割にはその結果を他環境に応用することも
一般的にはできないので、「そこまでやるの?」と、やや懐疑的な印象を受けたと云うことです。(^^;)
私なら「そこまでやる」前にめげてしまって、後は桐の方の対応、「メニュー*」や
「簡易メニュー」コマンドの進化に期待するだけで諦めちゃいます、と云う。
後ろ向きなコメントですいませんが、
趣旨はそうゆうことだったのです。<(_ _)>

別件(15144)がらみですが、表にイベントを設定できるといいですよね、本当に。
15160 Re:右クリックした場所にメニュー2を表示したい やく 2002/02/19-09:37
記事番号15152へのコメント
こんにちわ。悲しげさん。

>私は「CMDファイルのフォントサイズより試行錯誤して」「定数を
>割り出」すように「指示」したつもりはありませんでした。(^^;)
勝手な解釈すみませんでした。

>例えば他マシンとか他CMD下でも有効な定数とはならないと云うこと。
そうですね。それは承知しておりました。ただ、解像度に関しては
システム系のデスクトップ関数やDotto関数なので追っていけそうなので
定数の場合分けが可能かな?と思っておりました。
惜しむべきは、今回最も必要であった値が
#一括処理フォントサイズ(笑)というような関数が用意されてなく取り出しようがなかったことですかね。。。

PS
そんな関数を新たに設けるよりは

悲しげさんの新メニューコマンド追加構想へループですね。

戻る