過去の桐井戸端BBS (桐ver.9)
27816 フォームでEnterキーとTabキーでカーソルの移動方向を変えたい たぎゃ 2004/10/04-14:30
いつもお世話になっています。
またまた、疑問なことができたので質問させてください。
桐9−2004、OSはXPを使用しています。

イベントを使用した、カード形式のフォームを作成しました。

このフォームで、
「Enter」キー=全てのテキストボックスに移動
「Tab」キー  =特定の項目にのみ移動
ということをしたいと思っています。

フォームの属性を「改行方向」=「定義順」にして、
テキストボックスの属性の「タブストップ」を
特定項目のみオンにしたのですが「Enter」キーを
押して移動する先が、「タブストップ」をオンにした
テキストボックスのみになってしまうのです。

フォームの属性を「改行方向」=「右」にすれば、
「Enter」キーで全項目に移動できるのですが、
それでは、思い通りの順番で移動しない配置の
テキストボックスになっています。

どのようにしたら、解決できますでしょうか?
どなたか教えてください。
よろしくお願いいたします。



27817 Re:フォームでのカーソル移動について 悲しげ 2004/10/04-14:57
記事番号27816へのコメント
[Enter]キーと[Tab]キーで違いを出すためには、ひょっとすると
「キーダウン」イベントを組む必要がありそうな気がします。
(未検討ながら)

が、単に「思い通りの順番で移動」させたいのなら、フォーム再定義で、
「オブジェクトのリスト」を表示させ(右クリックメニューの一番下にあるのでチェックを入れると出ます)、
次に「オブジェクトのリスト」上で、個々のテキストオブジェクトをカーソル「移動」させたい順に上下に移動します
([Shift]+上下の矢印キーを使う)。カーソルはオブジェクトのリストに表示されている順番(上から下に)に移動するからです。

同じ「移動」と云う言葉で、カーソルの移動とオブジェクトのリストの並びの入れ替えのふたつを説明しているので、
文章的には判りにくいかも?(^^;)


27822 Re:フォームでのカーソル移動について たぎゃ 2004/10/04-16:00
記事番号27817へのコメント
悲しげさん、ありがとうございます。


>が、単に「思い通りの順番で移動」させたいのなら、フォーム再
>定義で、「オブジェクトのリスト」を表示させ(右クリックメニ
>ューの一番下にあるのでチェックを入れると出ます)、
>次に「オブジェクトのリスト」上で、個々のテキストオブジェク
>トをカーソル「移動」させたい順に上下に移動します([Shift]+
>上下の矢印キーを使う)。カーソルはオブジェクトのリストに表
>示されている順番(上から下に)に移動するからです。


オブジェクトのリストは、移動させたい順に設定してあるのです。

でも、フォームオブジェクトの「改行方向」を「定義順」にすると
「Enter」キーを押しても、「タブストップ」をオンにした
テキストボックスにしか移動してくれないのです。

私の設定の仕方が、どこかおかしいのでしょうか?
やはり、キーダウンイベントを使用しないと難しいのでしょうか?

27827 Re:フォームでのカーソル移動について Ogo 2004/10/04-16:47
記事番号27822へのコメント

>でも、フォームオブジェクトの「改行方向」を「定義順」にすると
>「Enter」キーを押しても、「タブストップ」をオンにした
>テキストボックスにしか移動してくれないのです。

「タブストップ」の下の「フォーカス設定可能」は
どうなってます?

27828 Re:フォームでのカーソル移動について たぎゃ 2004/10/04-16:54
記事番号27827へのコメント
Ogoさん、ありがとうございます。

>「タブストップ」の下の「フォーカス設定可能」は
>どうなってます?
>

「自動」になっています。

27833 Re:フォームでのカーソル移動について 悲しげ 2004/10/04-18:27
記事番号27822へのコメント
>オブジェクトのリストは、移動させたい順に設定してあるのです。
>でも、フォームオブジェクトの「改行方向」を「定義順」にすると
>「Enter」キーを押しても、「タブストップ」をオンにした
>テキストボックスにしか移動してくれないのです。
>私の設定の仕方が、どこかおかしいのでしょうか?

私は実は[Tab]キーで移動させる習慣が全くないので、外している可能性大なのですが、
私が使っているカードフォームを覗いてみたら、「タブオーダーの設定」での「タブストップ」は
すべて「ON」になっていました。
これがデフォルトだと思うのですが、これで難なくオブジェクトのリスト順に進みます。

>やはり、キーダウンイベントを使用しないと難しいのでしょうか?

ついでに「キーダウン」イベントを試してみました。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,・・・・
 if(&仮想キーコード=9) /*[Tab]キー*/
  var 自動,文字列{&focus}
  method @フォーム.フォーカスオブジェクト取得(&focus)
  cond(&focus="t某最終obj名") \
   &処理中止=1 /*最終オブジェクトからは動かさないつもり*/
  オブジェクト操作 @t某obj2.フォーカスの設定="禁止" \
          ,@t某obj4.フォーカスの設定="禁止" \
          ,@t某obj6.フォーカスの設定="禁止"
  /*カーソル移動はこれらオブジェクト以外に行く*/
 else /*[Tab]キー以外はどこにでもフォーカス可能とする*/
  オブジェクト操作 @t某obj2.フォーカスの設定="自動" \
          ,@t某obj4.フォーカスの設定="自動" \
          ,@t某obj6.フォーカスの設定="自動"
 end
手続き定義終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ちょっとダサイかもしれませんが、何とか動きました。

27843 Re:フォームでのカーソル移動について Ogo 2004/10/04-22:24
記事番号27828へのコメント

私が確認してみても、Enter と Tab は一蓮托生のようですね……

27849 Re:フォームでのカーソル移動について たぎゃ 2004/10/05-10:57
記事番号27833へのコメント
悲しげさん、ありがとうございます。

教えていただいた「キーダウン」イベントを使用した方法で、作成することにしました。
他にも修正することがあるので、まだ途中なのですが、これで大丈夫だと思います。

丁寧に教えていただき、ありがとうございました。
また、何かの際は、よろしくお願いいたします。


戻る