0

ユーザーが Tab キーを使用してフォーム内を移動できるようにします。

私はこのような形をしています...

サンプルフォーム

これは私が必要とするタブ オーダーです...

  • ウィンドウが開いています: ユーザー名にフォーカス
  • Tab キーを押す: パスワードにフォーカス
  • Tab キーを押す: [ログイン] ボタンにフォーカス
  • Tabを押す: [キャンセル] ボタンにフォーカス
  • Tabを押す: ユーザー名に戻ります (など)

([プロパティ インスペクター] ウィンドウで) レイヤー番号を次のように設定します...

  • ユーザー名テキストボックス -- 1
  • パスワードテキストボックス -- 2
  • ログインボタン -- 3
  • キャンセルボタン -- 4

このフォームを実行すると、ユーザー名がフォーカスされます。タブを押すと、パスワードに移動します。タブをもう一度押すと、(ボタンではなく) ユーザー名に戻ります。

ボタンのフォーカスを強制するコードをパスワードテキストボックスに追加しようとしました。

on tabKey
   focus on button "logIn"
end tabKey

しかし、私はエラーが発生しました...

"フォーカス: 有効なコントロールではありません"

ウェブ上で適切な解決策が見つかりませんでした。これを達成する方法は?

他の言語では、これを行う方が簡単です。

編集:ボタンのハイライトについて示すライブコードフォーラムのライブコードサンプルファイルを含むこのzipファイルを見つけました。これは実際にはボタンに焦点を合わせているわけではなく、アクティブに見えるボタンの色を変更しているため、問題の実際の解決策ではありません。ボタンがハイライトのときにスペースバーを押しても何も起こりません。

4

4 に答える 4

1

ボタンの traversalOn を true に設定します。これにより、必要な動作が可能になります。Mac はデフォルトでボタン トラバーサルをサポートしていませんが、Windows では機能することに注意してください。

于 2015-04-27T07:48:32.183 に答える
-1

「フォーカス」は、ボタンにとって特に有用な用語ではありません。フィールドに焦点を当てると、そのフィールドが「ハイライト」され、テキストがある場合はそのテキストの後にカーソルが置かれます。

しかし、ボタンに「集中する」とはどういう意味でしょうか? そのボタンをハイライトしますか、それとも他の方法で注意を喚起しますか? その場合、パスワード フィールドからタブで移動するときに、ボタンのいくつかのプロパティを設定する必要がありますが、おそらくそれに焦点を当てる必要はありません。

于 2015-04-27T04:40:53.027 に答える
-1

わかった。新しいカードに 2 つのフィールドを作成し、次に 2 つのボタンを作成します。Jacque が述べたように、各ボタンの traversalOn が設定されていることを確認してください。カード スクリプトでこれを試してください。

on tabkey
put the layer of the target into tLayer
put the name of the target into tName
put tname
if tName contains "button" then
  set the hilite of the target to "false"
end if
if tLayer = the number of controls then focus on control 1
else
  focus on control (tLayer + 1)
  if the name of control (tLayer + 1) contains "button" then set the hilite of  control (tLayer + 1) to "true"
end if
 end tab key

タブを押すと、各コントロールでのアクションが表示されます。

于 2015-04-27T16:22:53.743 に答える