過去の桐井戸端BBS (桐ver.9)
27219 フォームで、ある項目の入力が終わったら自動的にある項目へフォーカスの移動をしたい くもん 2004/07/29-10:21
またよろしくお願いします。
Ver9 2004 Xpを使用しています。
Aフォームのイベント

proc t費目::入力前(参照 文字列 &編集文字列)
   &既費=[費目]
   代入 &費番="",&摘番="",&指示="未 定"
   フォーム呼び出し "B費目",ボタン=&B費目Button
if(&B費目Button)
&編集=#cond(&STR<>#u,&STR,1,&既費)
&入力B=&STR
代入 &指示=#cond([費目]<>貸借,"任 意",[費目]=貸借,"未 定")
   &STR="",&既費=""
&B費目Button=""
end
end
(不要なものまで書きました、実態です)

以上の様にAフォームのt費目へ入力の際、B費目フォームを表示参照して入力しています。
t費目の入力が終われば次も同様Aフォームのt摘要入力をB摘要フォームを表示参照入力となります。
そこでt費目の入力が終わり次第自動的にt摘要へフォーカスが移動するように出来ればと思っています。
自分なりメソッド呼びだし等で試しましたがうまくゆきません。
(サブフォームではありません、表引き風です) よろしくお願いします。

27220 Re:フォーカスの移動 悲しげ 2004/07/29-14:35
記事番号27219へのコメント
ところどころ記述がおかしい箇所がありますが、それはさておき(^^;)
「入力前(後)」イベントでは、更新モードの変更やフォーカスの移動はできませんね。
ですから、(入力途中での取得値の訂正よりも)フォーカスの移動の方を優先させたければ、
例えば「入力前」で扱った「t費目」よりもひとつ前の項目(某オブジェクト)の「ソース値更新」イベントを
利用するやり方なんかも考えられます。

某オブジェクトで[Enter]する。
・・(中省略)・・
"B費目.wfm"やらをフォーム呼び出しして必要な値を取得。
元フォームに戻って
表示モードなら「行訂正」、そうでなければ「項目値代入」で入力。
フォーカスを"t摘要"に移動させる(「フォーカス」設定メソッド)。
必要なら更新モードも変更する。

以上、あくまで一例。


ps.
変数への値の代入に、「代入」コマンドを使ったり使わなかったりしていますが、統一した方がよいです。

「フォーム呼び出し」後で「if(&B費目Button)」と記述されていますが、
そしてこれは「&B費目Buttonの値が未定義でなければ」の意図だと思いますが、この部分はやはり
  if(&B費目Button="なんとか")
とか
  if(&B費目Button<>"かんとか")
のように明記する癖を付けた方が何かと無難だと思います。
未定義となるのは、右上[×]釦、[/]+[Q]、[Alt]+[F4]などを使うことの想定なのでしょうけど、
呼び出したフォームに複数のボタンを付けた時とか、困ることもありえそうですから。
例えばよくあるパターンは[OK]と[キャンセル]のふたつのボタンですよね。

ついでに云えば、このproc内で「 &B費目Button=""」とする必要も普通はありません。
proc内で自動変数を宣言して使う方が、他部分に影響を与えないので、ベターです。

27230 Re:フォーカスの移動 くもん 2004/07/31-16:40
記事番号27220へのコメント
悲しげさん
有難うございました。
なんとかやってみます、又よろしく。

戻る