Thread Rating:
  • 232 Vote(s) - 2.83 Average
  • 1
  • 2
  • 3
  • 4
  • 5
画面遷移時の初期フォーカス
02-22-2013, 06:31 PM,
#1
画面遷移時の初期フォーカス
コントロールを配置した画面を、Dialogにいれて、
Dialog.show で表示したときには、デフォルトで一番上のコントロールにフォーカスが入っていると思います。

しかし、replace メソッドで、画面を遷移させたときには、同じような画面でも一番上のコントロールにはフォーカスが入っていません。
どうすれば、Dialog.show で表示したときと同じようにフォーカスを当てた状態にできますか?

業務画面ごとに、初期フォーカスをbecome-active を利用してフォーカスを当てるようなことはしたくないです。
サンプルとは違いますが、現在はSonntag を使っているので、Sonntag で同様の方法があれば教えていただきたいです。


Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "utf8"}
{applet manifest = "manifest.mcurl",
    {compiler-directives careful? = true}
}
{def d =
    {Dialog
        {on WindowClose do
            {exit}
        }
    }
}
{define-proc {get-screen}:Frame
    {return
        {Frame
            {VBox
                {TextField },
                {CommandButton
                    {on Action do
                        {d.add replace? = true, {get-screen}}
                    }
                }
            }
        }
    }
}
{do
    {d.add {get-screen}}
    {d.show}
}


Reply
02-27-2013, 01:16 PM,
#2
RE: 画面遷移時の初期フォーカス
これならいけそうです。

どうしても画面レイアウトを作るときにFrameを使うクセがあるのですが、

画面はDialogで作成する、という前提にしたほうがよさそうな気がしてきました。



Code:
{def d =
    {View
        {on WindowClose do
            {exit}
        }
    }
}
{let cnt:int = 0}
{define-proc {get-screen}:Dialog
    set cnt = cnt + 1
    {return
        {Dialog
            {VBox
                {TextField
                    value = cnt & "番目"
                },
                {CommandButton
                    takes-focus? = false,
                    {on Action do
                        {d.add replace? = true, {get-screen}}
                    }
                }
            },
            ||表示時に左上のコントロールにフォーカスを当てる
            {on AttachEvent at d:Dialog do
                {d.become-active}
            }
        }
    }
}
{do
    {d.add {get-screen}}
    {d.show}
}
Reply
02-28-2013, 01:05 PM,
#3
RE: 画面遷移時の初期フォーカス
Dialogだと、フォントやバックグラウンドなどの初期値が
設定されているので、Frameと同等に扱いたいのであれば
Dialogにおけるフォーカス制御が実装されている親クラスの
StandardActiveTraversalContainerを使ってもいいかも
しれませんね。
Reply

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('854')