過去の桐井戸端BBS (桐ver.8)
17716 フォームを開いた直後にドロップダウンリストを開くようにしたい アックン 2002/10/24-15:53
一覧表形式のフォームを開いた直後に、明細部のテキストボックスで入力支援ボタンの
ドロップダウンリストまたは値集合を自動表示する方法をどなたか教えてください。m(__)m

こんなふうにしてみたのですが・・・・・・
    method @t貸借 . フォーカス設定()
    method @フォーム . 更新モード設定( 2 )

これでは訂正モードになるだけで、リストが開きません。(とほほ...)
フォーム表示と同時に編集モードにしていきなり開きたいわけであります。
もちろん当該イベントを抜けて、会話処理で行追加・行訂正モードになれば、自動表示します。
値集合・入力支援ボタンのドロップダウンリスト・入力支援ボタンの値集合の3つをそれぞれ試しました。
自動で開けばどれでもいいのですが。

先ほど過去ログを「値集合」で検索したところ、3件ほど似た標題がありました。
ただそれらはどうやら「フォームを開いてただちに自動表示する」というニーズではないようです。

フォーム定義情報とイベントは下記の通りです。
*---------------------------------------------------
・総勘定元帳.wfm (フォーム呼び出しする側)

 ---------------------------------------------
 フォームヘッダ部:  t科目名 ( ソース:&科目名 )
 ---------------------------------------------

・総勘定元帳.kev
 proc t科目名::ソース値更新()
     :
    フォーム呼出し "科目名" , 編集表=する , 終了状態=&end

*---------------------------------------------------
・科目名.wfm  (フォーム呼び出しされる側)
 一覧表形式/グループ化なし/イベントはフォーム開始のみで他はなし

 ---------------------------------------------
 フォームヘッダ部: 科目名 貸借 前期繰越  ←ラベル
 フォーム明細部 : t科目名 t貸借 t前期繰越 ←テキスト(ソース:
項目値)
               (↑ t貸借に入力支援ボタンの設定あり)
 ---------------------------------------------

 入力支援ボタン_1:選択値リスト:"貸","借"
          リストの種別:ドロップダウンリスト(または値集合)
          自動表示:常に表示(または 未定義値)
          自動終了:ON
          最大表示行数:9
          選択時置換:ON
          アクセスキーの表示:ON
          リスト番号を表示:OFF

・科目名.kev(他のイベントはありません)
 名札 メイン
  var 局所 , 整数 { &end }
*
 proc フォーム::フォーム開始(長整数 &表番号)
  &科目名win = &hwindow
  if( #lv( &総勘定元帳win , "科目名" ) )
    method @フォーム . 更新モード設定( 6 )
    項目値代入 [科目名] = #lv( &総勘定元帳win , "科目名" )
    method @t貸借 . フォーカス設定()
    method @フォーム . 更新モード設定( 2 )
  end
 end
*---------------------------------------------------
                   アックン(=^・^=)
17718 Re:フォームを開いた直後にドロップダウンリストを開く ONnoji 2002/10/24-16:33
記事番号17717へのコメント

>一覧表形式のフォームを開いた直後に、明細部のテキストボックスで入力支援
>ボタンのドロップダウンリストまたは値集合を自動表示する方法をどなたか教
>えてください。m(__)m
>
>こんなふうにしてみたのですが・・・・・・
>    method @t貸借 . フォーカス設定()
>    method @フォーム . 更新モード設定( 2 )
>
>これでは訂正モードになるだけで、リストが開きません。(とほほ...)
>フォーム表示と同時に編集モードにしていきなり開きたいわけであります。
>もちろん当該イベントを抜けて、会話処理で行追加・行訂正モードになれば、
>自動表示します。
>値集合・入力支援ボタンのドロップダウンリスト・入力支援ボタンの値集合の
>3つをそれぞれ試しました。
>自動で開けばどれでもいいのですが。

アックンさん、こんにちは。

[フォーム開始]イベントで思うとおりの結果が得られない場合には、
[開始時実行ボタン]や[タイマー]イベントを試してみたらいかがでしょうか?

試していませんが、この場合[タイマー]イベントならうまくいくかもしれません…

※[開始時実行ボタン]は駄目かもしれません。

外していたらすいません。

17719 Re:フォームを開いた直後にドロップダウンリストを開く pokopon 2002/10/24-17:34
記事番号17716へのコメント
アックンさん こんにちは
お久しぶりです。

>こんなふうにしてみたのですが・・・・・・
>    method @t貸借 . フォーカス設定()
>    method @フォーム . 更新モード設定( 2 )
>
>これでは訂正モードになるだけで、リストが開きません。(とほほ...)

本当ですね?? バグかな? 

フォーム開始イベント、タイマイベントを試しましたが、どちらも駄目っぽいです。

そこで、ダミーのCMDボタンを作成。

機能名  機能パラメータリスト
訂正   フォーカスを当てるオブジェクト

とし、

フォームのオプション、実行コマンドにこのコマンドボタンを設定すると、うまくいくようです(挙動確認済み)。

それでは。

17720 Re:フォームを開いた直後にドロップダウンリストを開く pokopon 2002/10/24-17:51
記事番号17719へのコメント
どうもおかしい挙動です。
フォームの定義から動かすときちんと動作しますが
ファイル→開く だと、入力支援は開きません。同じでした。
Win2K SP6環境です。

??? 理由がわかりません。 外してしまいました。


17721 Re:タイマイベントとの併用 pokopon 2002/10/24-18:11
記事番号17720へのコメント
タイマイベント、うまくいきました。m(__)m

名札 メイン
 オブジェクト操作 @フォーム.タイマー値1 = "0.01"
 オブジェクト操作 @フォーム.タイマー1 = "0"

*フォーム開始イベントを定義
手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 method @t_data2.フォーカス設定()
手続き定義終了

*目的のオブジェクトにフォーカス取得イベントを設定
手続き定義開始 t_data2::フォーカス取得(文字列 &喪失オブジェクト名)
 オブジェクト操作 @フォーム.タイマー1 = "1"
手続き定義終了

*タイマイベントの設定
手続き定義開始 フォーム::タイマー1()
 メソッド呼び出し @フォーム.更新モード設定(2)
 オブジェクト操作 @フォーム.タイマー1 = "0"
手続き定義終了

フォームを「開く」からでも、正常でした。


17722 Re:フォームを開いた直後にドロップダウンリストを開く hidetake 2002/10/24-18:11
記事番号17720へのコメント
>どうもおかしい挙動です。
>フォームの定義から動かすときちんと動作しますが
>ファイル→開く だと、入力支援は開きません。同じでした。

だとすると,タイマーでコマンドボタンをメソッドで実行するとかネ? (^_^;

この場合はフォーム開始時実行ボタンの設定は外す!

17723 Re:フォームを開いた直後にドロップダウンリストを開く 尾形 2002/10/24-18:15
記事番号17720へのコメント
どうも、こんにちは
タイマーイベントで

メソッド呼び出し @t表引き.フォーカス設定()
メソッド呼び出し @フォーム.更新モード設定(0)
/*一度更新モード0がいるみたい*/
メソッド呼び出し @フォーム.更新モード設定(2)

多分いけると思います

17724 Re:フォームを開いた直後にドロップダウンリストを開く アックン 2002/10/24-18:17
記事番号17719へのコメント
まとめレスで失礼します。
ONnojiさん、pokoponさん、さっそく回答くださって、どうもありがとうございます。

さて、pokoponさんが実行コマンドで挙動確認済ということなので、さっそくいろいろ試しました。
訂正モードになるものの、リスト(値集合またはドロップダウンリスト)が開きません。
フォーム開始イベントを切っても同様です。

  機能名  機能パラメータリスト
  訂正   "t貸借"

さらにこれがタイマーイベントじゃないとだめよとなりますと、
とほほ...から → とほほほほ... になるのであります。<(--;

なお、V8sp6でおます。
V9は「これっ桐」だったかの支払い用紙が昨日届きました。 アックン(=^・^=;
17725 Re:フォームを開いた直後にドロップダウンリストを開く アックン 2002/10/24-18:28
記事番号17723へのコメント
またまたまとめレスにて失礼します。
hidetakeさん、尾形さん、どうもありがとうございます。

4人の方からタイマーイベントでということで・・・・ とほほほほ... (^^;

みなさん、どうもありがとうございました。
さっそくやってみますが、夜7時で閉店のため、また明日にでもご報告いたします。ありがとうございます。

                   アックン(=^・^=)

17726 Re:フォームを開いた直後にドロップダウンリストを開く アックン 2002/10/24-18:55
記事番号17725へのコメント
明日を待たずに成功のご報告を。v(^^)

pokoponさんの記述に、尾形さんの1行をプラスして、
そーのまんま使わせていただきました。(^^;ど、どうも
回答してくださったみなさんのご厚意に感謝感謝。ありがとうございました。

たったこれだけのことを実現するのに、これだけのイベントを書かねばならないんですね。
ほんと、たいへんなんっすから、も〜。
って、実際に書いたのは私じゃないですけど。(^^;

 また質問するから楽しみにしててね〜  アックン <(=^・^=;

17739 Re:というよりも pokopon 2002/10/25-08:40
記事番号17726へのコメント
>たったこれだけのことを実現するのに、これだけのイベントを書かねばならない
>んですね。ほんと、たいへんなんっすから、も〜。

というよりも、理屈どおりの挙動を示さない桐の問題かと思います。
特に、「訂正モード」とイベントのタイミングに何らかの問題があるからではないでしょうか?
今までも、この「訂正モード」に絡んで、イベントが理屈どおりに動かないことが多々ありました。
新規にフォームを開くときにはなおさらです。

それを不具合のない動作にするために、「たいへんなんっすから、も〜。」的記述が必要になるのです。

バグっぽいんですが・・・・原因はまだわかっていません(私は)。

こういう場合って、手っ取り早く「タイマによる迂回技」が有効な場合が多いです。

17742 Re:というよりも 尾形 2002/10/25-10:13
記事番号17739へのコメント
>>たったこれだけのことを実現するのに、これだけのイベントを書かねばならない
>>んですね。ほんと、たいへんなんっすから、も〜。
解決済ですけど、念の為

手続き定義開始 フォーム::タイマー1()
/*開始時に1度のみ動作させる*/
オブジェクト操作 @フォーム.タイマー1="0"
オブジェクト操作 @フォーム.タイマー値1="0.00"
メソッド呼び出し @t表引き.フォーカス設定()
メソッド呼び出し @フォーム.更新モード設定(0)
メソッド呼び出し @フォーム.更新モード設定(2)
手続き定義終了

開始時イベントは何かと不都合が多いようで
タイマーを開始時に一度だけ動作させ、開始時イベントの変わりにするといいようですね

一度、更新モード0がいるようですけど

17750 Re:というよりも アックン 2002/10/25-13:51
記事番号17742へのコメント
さて、下記のようにしました。これでうまくいくのですが、
タイマー使えばうまくいく原理が、あたしゃよーわからんのですが。(^^;

**-----------------------------------------------------------
名札 メイン
 var 局所 , 整数 { &end }
 object @フォーム.タイマー1 = "1"
 object @フォーム.タイマー値1 = "0.01"
*
proc フォーム::フォーム開始(長整数 &表番号)
 &科目名win = &hwindow
 if( #lv( &総勘定元帳win , "科目名" ) )
   method @フォーム . 更新モード設定( 6 )
   項目値代入 [科目名] = #lv( &総勘定元帳win , "科目名" )
   method @t貸借 . フォーカス設定()
 end
end

proc フォーム::タイマー1()
 object @フォーム.タイマー1 = "0"
 object @フォーム.タイマー値1 = "0"
 method @フォーム.更新モード設定(0)
 method @フォーム.更新モード設定(2)
end
**-----------------------------------------------------------

 お金がないので、まだバージョンアップ申し込みできない  アックン(=^・^=)

戻る