過去の桐井戸端BBS (桐ver.8)
5296 オブジェクトをCTRL+NやP等の文字キーに割り付けできませんか 今村 誠 2000/03/24-01:06
ファミリーのマウス左クリックで先頭一致検索できるようにラベルオブジェクトを作成し
キー入力ダイアログで、検索文字列の入力をしていますが、マウス左クリックは、
あまり頻繁に使用したくありません。
ショートカットキーやアクセスキーという名前で、CTRL+KやCTRL+P等という形で、
オブジェクトを選択できないでしょうか?(ラベルが無理なら、テキストかコマンドで)
手続き定義開始 検索::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,
長整数 &フラグ,参照 長整数 &処理中止)
    代入 &検索1=#s(&this,"a",""),\
&検索2=#項目属性(#対応番号(&項目名,&検索1),2),\
      &検索3=#cond(#項目属性(#対応番号(&項目名,&検索1),16)<>#u,"半角",1,"全角"),\
&PRT1=#cat(&検索1,"を先頭一致で検索します。")
キー入力 (10,1),プロンプト=&PRT1,モード=&検索3,上書き=する,終了状態=&終了,&PRT2
条件 (&終了=0) 手続き終了
条件 (#グループ選択状態<>#u .and #グループ選択状態<>0) \
グループ選択解除
条件 (#絞り込み状態>0.5) \
絞り込み解除 *
条件 (#整列状態>0.5) \
整列解除
条件 (#文字位置(&索引名,&検索1)>0) 整列 &検索1
検索 &検索1_&PRT2,文字比較方法=自動,部分一致検索=先頭一致
手続き定義終了

5297 Re:マウス左クリックではないイベントで 悲しげ 2000/03/24-09:32
記事番号5296へのコメント
どもっ、今村誠さん、
「マウス左クリック」イベントではなく、「キーダウン」イベントを
使ってはいかがでしょう?
Shift+某では&フラグ=4、Ctrl+某の&フラグ=8だったと思います。

ただし、キーダウンイベントはファミリは使えなかったような記憶が
ありますので、個々のフォーカスオブジェクトを取得して判断する必要があるかもしれません。

5301 ショートカットキーで目的オブジェクトにフォーカス 佐田 守弘 2000/03/24-19:28
記事番号5296へのコメント
今村 誠さん
おそらく可能だと思います。ただし、どう行った事が行いたいのかが今一つ理解できません。
そのために外しているかもしれませんが、参考までに述べます。

●ショートカットキーで目的のオブジェクトに移動させる方法
テキストオブジェクトなどにはショートカットキーの設定はできません。ショートカットキーの設定ができるのは
コマンドボタンです。
そこで、目的オブジェクトにフォーカスを移動するコマンドボタンを作成します。
そのコマンドボタンの表示に、例えば「選択 &K」の様に記述します。
すると、コマンドボタンには「選択 K」(Kにアンダライン)の様に表示され、Alt+Kでこのコマンドボタンが実行できます。

そして、このコマンドボタンに目的オブジェクトに移動するコマンドを呼び出す手続き実行の機能を設定しておきます。
呼び出される手続きには、メソッド呼び出しコマンドで目的オブジェクトに移動するコマンドを記述しておきます。

以上の方法で、Alt+<文字キー>でコマンドボタンが押された事になり、そのコマンドボタンの機能で手続きが実行され、
目的オブジェクトにフォーカスを移動するといった操作が可能になります。

佐田守弘(KS-00119)


5305 Re:アクセスキーにしました 今村 誠 2000/03/26-00:21
記事番号5297へのコメント
> 「マウス左クリック」イベントではなく、「キーダウン」イベントを
> 使ってはいかがでしょう?
>Shift+某では&フラグ=4、Ctrl+某の&フラグ=8だったと思います

コマンドボタンを作成してアクセスキーでALT+Nで起動できるようにしました。
キーダウンは、使ったことがないので、CTRLキーの &フラグが整数の8はわかりましたが、
文字キーの取得(&仮想キーコードが文字の変数値なのかな?) 方法がよくわかりません。
CTRL+Nの場合にキーダウンイベントでは、変数&フラグに整数の8を
&仮想キーコードに78の整数を取得するのでしょうか?
メソッド呼び出しのヘルプファイルに以下の記述があります。
メソッド呼び出し  ハンドル = <ハンドル> ,戻り値 = <変数名> ,\
<コマンドボタン> .実行( )
この場合、一括処理からの実行は不可となっております。
キーダウンで手続きを実行させたくても、コマンドボタンには割り付けできないので
作成したいショートカットキーの数だけ、2重に手続きを定義しなければならないみたい?
先ほどの例に戻ると、CTRL+Nは、桐のキー割り当てでは、編集中は改行文字に
割り当ててありますが、メソッド呼び出し @フォーム.キー変換、を使用しないで、
新たに割り当てても、問題ないのでしょうか

5306 Re:アクセスキーにしました 悲しげ 2000/03/26-01:59
記事番号5305へのコメント
どもっ、今村さん、
コマンドボタン/アクセスキー方式を採用したと云うことで、
その方が簡単でいいのではないでしょうか?

以下、蛇足的にコメントします。

>文字キーの取得(&仮想キーコードが文字の変数値なのかな?) 方法
>がよくわかりません。

&仮想キーコード(長整数)と元キーの対応表は、htmlヘルプで云えば、
Appendixの一番最後に記述されています。
Ctrl+Nの場合だと、
  if(&仮想キーコード=78 .and &フラグ=8)
のようにして、この範囲でやりたいことを記述します。

次、本件とは別の問題になるかと思いますが、

>メソッド呼び出し  ハンドル = <ハンドル> ,戻り値 = <変数名> ,\
><コマンドボタン> .実行( )
>この場合、一括処理からの実行は不可となっております。

と云うわけで、今村さんはcmdから実行なさっていたんですね。
原文が「ファミリのマウス左クリック」云々とあったので、てっきりkevのことだと思い込んでいました。(^^;)
やったことはありませんが、cmdからの「キーダウン」イベントは難しいような気がします。
とすれば、残された方法は、やはりAlt+某のアクセスキー方式しかなさそうに思います。

>先ほどの例に戻ると、CTRL+Nは、桐のキー割り当てでは、編集中は改行文字に
>割り当ててありますが、メソッド呼び出し @フォーム.キー変換、を使用しないで、
>新たに割り当てても、問題ないのでしょうか

「キー変換」メソッドを、cmdでうまく使い切ることができるかどうかは
私には判りませんが、いずれにせよ、同じキー操作で別な処理をさせる
ことは避けた方がいいと思います。
これは、できる・できないと云うよりも、できたとしても操作ミスの原因になりそうだからです。
わざわざそのような設定にしないで、別なキー設定にすることをお勧めします。

あと余談ながら、#5296に次の記述がありました。

>条件 (#絞り込み状態>0.5) \
>絞り込み解除 *
>条件 (#整列状態>0.5) \
>整列解除

この部分は、Win桐では

解除 *   /* なお、アスタリスクは無くてもよい */

の記述一発で、絞り込み状態も並べ替え状態も全解除されたはずです。
Win桐では「絞り込み解除」も「並べ替え解除」も単なる「解除」も同義のようです。
むしろ、並べ替え状態で且つ絞り込み状態にあった場合で、
絞り込み状態のみを解除したい場合には、「解除 1」と段数を明記する必要があるくらいですから。

5327 Re: 今村 誠 2000/03/28-01:11
記事番号5306へのコメント
悲しげさん親切なサポートありがとうございます。
まだ桐8SP4に移行して日が浅いものですから、見積や、得意先、商品などの
tblやフォームにはいるメニュー(19個)を、cmdで切り替えてから
項目名や索引名を、手続きで取得し、フォームのkevでサブメニューに入って
印刷や検索をしています。

戻る