過去の桐井戸端BBS (桐ver.9)
20238 ある項目にデータがあるときとないときで別のコマンドボタンに移動するようフォーカス設定をしたい アル・マゲドン 2003/05/07-22:20
イベントで質問です。
よろしくご指導ください。桐はV9です。

入力.WFMは、一覧表フォームです。
入力.KEVが設定してあります。
明細行に[A][B][C][D][E]の項目があります。

[E]にデータが入ればワークスペースのコマンドボタン[F4]に移動
[E]が空であるとワークスペースのコマンドボタン[F3]に移動するようにしたいんです。が・・・・

[E]にソース値更新のイベントにチェックをいれ、
下記のような内容で設定しております。

手続き定義開始 [E]::ソース値更新()
  ケース開始
    ケース([E]<>"")
      メソッド呼び出し @F4.フォーカス設定()
    ケース([E]="")
      メソッド呼び出し @F3.フォーカス設定()
  ケース終了
手続き定義終了

しかし[E]にデータをいれても、
次の行の先頭項目[A]に移動します。

よろしくご指導ください。

20240 Re:イベントでフォーカス設定 悲しげ 2003/05/07-22:43
記事番号20238へのコメント
どもっ、アル・マゲドンさん

「ワークスペース」と云うのは、フォームの内、画面に表示されない部分を指しますから、
もし本当に当該コマンド牡丹が「ワークスペース」に存在するのなら、
そこにフォーカスを移すことは絶対的に困難だと思います。(^^;)

その上で、

1.「ワークスペース」ってのが用語の間違いである可能性は?

2.本当にワークスペースに当該牡丹があるとして(そこにフォーカスを移すことは不可能だけれども)、
では、もしフォーカスを移せたとしたら、そもそも何をしようとしているのでしょう?

20241 Re:イベントでフォーカス設定 アル・マゲドン 2003/05/07-23:07
記事番号20240へのコメント
悲しげさん
はじめまして、早々にご指導いただきありがとうございます。

そもそも何をしたいのかですが、
[E]は明細行で最後の項目なんです。
[E]に1を入れると 入力完了。F4のコマンドボタンは機能名:表示
[E]が未定義なら 行追加。  F3のコマンドボタンは機能名:行追加
としたいのです。
マウスを持たなくてもいいように・・・・・。

20242 Re:イベントでフォーカス設定 悲しげ 2003/05/08-00:22
記事番号20241へのコメント
どもっ、アル・マゲドンさん

>そもそも何をしたいのかですが、
>[E]は明細行で最後の項目なんです。
>[E]に1を入れると 入力完了。F4のコマンドボタンは機能名:表示
>[E]が未定義なら 行追加。  F3のコマンドボタンは機能名:行追加
>としたいのです。
>マウスを持たなくてもいいように・・・・・。

とすれば、タイトルは間違いで(^^;)、使うのは「フォーカス設定」メソッドではなくて
「実行」メソッドになるのではないでしょうか?
例えば

手続き定義開始 [E]::ソース値更新()
 ケース開始
 ケース([E])
  メソッド呼び出し @F4.実行()
 ケース その他
  メソッド呼び出し @F3.実行()
 ケース終了
手続き定義終了

ただ、私はもうひとつの疑念をしておりまして、そのひとつめ、
本当に「ワークスペース」なのかどうかについてのお答えは如何?

実はもうひとつの疑念が加わりました。それは「F4で表示」「F3で行追加」とあることから、
何だかファンクションキーを連想させられました。
で、失礼ながら、コマンド牡丹とファンクションキーを混同なさっているってことはありませんよね?

20243 Re:イベントでフォーカス設定 悲しげ 2003/05/08-00:32
記事番号20242へのコメント
一部書き直しします。
項目に値を入れた場合に、次行の左端にフォーカスが動かないようにしておく必要もありそうですから、

手続き定義開始 tE::ソース値更新()
 ケース開始
 ケース([E])
  メソッド呼び出し @F4.実行()
  メソッド呼び出し @tE.フォーカス設定()
 ケース その他
  メソッド呼び出し @F3.実行()
 ケース終了
手続き定義終了

※あるいは、コマンド牡丹F4の機能の2行目辺りを「フォーカス移動→tE」としておくことでもいいかも。

20244 項目値で表示と行追加を切り替える 佐田 守弘 2003/05/08-01:16
記事番号20241へのコメント
アル・マゲドンさん
悲しげさんが書かれている疑問点については私も同じく考えます。

おそらくやりたい事は、タイトルにつけた「項目値で表示と行追加を切り替える」ではないでしょうか。
そしてマウス操作なしにそれを行いたいという意味かと考えます。

メソッド呼び出しで機能名を設定したコマンドボタンを実行させるのも1つの方法ではありますが、
[E]のソース値更新イベントで[E]の値をチェックし、「メソッド呼び出し 更新モード設定」コマンドを使って、
モード切り替えをした方が簡単ではないでしょうか。

ここで検討すべき事が1つあります。
それは、そのレコードの編集が行追加以外に、行訂正ないし項目訂正でも行われる事があるかどうかです。

行訂正モードであれば、最終項目[E]の入力が終われば、自動的に行追加が継続し、次の行に移動します。
つまり、[E]の値が0出ある場合に限って、表示モードに戻せばよい事になります。

●私にも新たな疑問が
行追加を継続させるかどうかだけに[E]の項目を持つのは、全く意味がない様に思うのですが。
行追加モードは自動的に継続するので、入力を終了する時にはESCキーを押させ、
表示モードに切り替えるコマンドボタンを実行させた方が分りやすいと思うのですが、いかがでしょうか。

佐田守弘(KS-00119)
20245 Re:イベントでフォーカス設定 アル・マゲドン 2003/05/08-10:40
記事番号20242へのコメント
悲しげさん、ご指導ありがとぐうございます。
説明が不足で申し訳ございません。

>ただ、私はもうひとつの疑念をしておりまして、そのひとつめ、本当
>に「ワークスペース」なのかどうかについてのお答えは如何?

ワークスペースです。

>実はもうひとつの疑念が加わりました。それは「F4で表示」「F3で行
>追加」とあることから、何だかファンクションキーを連想させられま
>した。で、失礼ながら、コマンド牡丹とファンクションキーを混同な
>さっているってことはありませんよね?

コマンドボタンのオブジェクト名にわかりやすいようにF4・F3と表示しているだけです。
もう少しご指導いただきたいのですが。
----------------------------------------------------
手続き定義開始 入力::ソース値更新()
  ケース開始
    ケース([E]="1")
      メソッド呼び出し @F7.実行()
    ケース([E]="2")
      メソッド呼び出し @F4.実行()
  ケース終了
手続き定義終了
-----------------------------------------------------
こんな感じにしました。
[E]に1を入力すると、F7のコマンドボタン
[E]に2を入力すると、F4のコマンドボタン
を実行するようにしました。
F4の動作は機能名:表示
F7の動作は
機能名:1:表示
    2:グループ追加
としております。が、
グループ部分が空白のまま明細行へカーソルが移動してしまいます。
よろしくご指導ください。

20247 Re:イベントでフォーカス設定 悲しげ 2003/05/08-11:49
記事番号20245へのコメント
どもっ、アル・マゲドンさん

やりたいことは大体想像がつきました。
実は、最右端項目の「ソース値更新」イベントでもって、入力継続の有無を判断させるやり方は、
私も以前にやったことがあります。
そしてそれは(書き換えるのが面倒なので)一部現役で動いているものもありますのですが、
今は基本的に不採用としています。
と云うのは、例えば右端項目の単なる項目訂正でも「ソース値更新」イベントが発生してしまう他、
幾つか理由があって、操作性がよろしくないからです。
かと云って、「行訂正終了」イベントでこれを制御することは、
さらに複雑となってしまいまして、現在は私は基本的に「キーダウン」イベントで緻密に
制御する方法をとっています。
これらを全面展開することは、現時点では困難なので、
すいませんが、私としては別な機会を待ちたいと思います。
いずれは【多遊】さんとこのダウンロードコーナに挙げたいとは
思っておりますが、汎用化するためのダミーデータの作成含めて、
けっこう時間がかかりますから、ずいぶん先のことになろうかと思っています。

でも、1点だけコメントします。
グループ追加は右端項目値の判断からではなく、
それとは独立した別途のコマンド牡丹の実行から入った方がいいと思います。
私はそうしています。ただ、この部分はコマンド牡丹の機能だけでは多分不十分そうなので、
kevの中で手続き定義を細々と書くことになりそうです。

なお、牡丹のマウスクリックが面倒ならば、手続き定義を牡丹(の機能としての手続き実行)と共用する形で、
「キーダウン」イベントまたは「アクセスキー」(ALT+某キー)を設定するやり方なんてのはどうでしょう?

20249 Re:イベントでフォーカス設定 アル・マゲドン 2003/05/08-13:33
記事番号20247へのコメント
悲しげさん、そうですか。
残念ですが・・・・・。
悲しげさんのサンプル楽しみに待つことにします。

もう一つイベントで質問したいのですが
新しいツリーに移動します。
20251 Re:イベントでフォーカス設定 悲しげ 2003/05/08-14:17
記事番号20249へのコメント
どもっ、アル・マゲドンさん

>悲しげさんのサンプル楽しみに待つことにします。

待たないで下さい。(^^;)
半年とか1年、もしかしたらそれ以上先のことかもしれないし、
最悪は公開しないかも・・・・。
最右端項目の「ソース値更新」イベントでもできないことはありませんから、どうぞそちらの線でお進め下さいませ。
20252 Re:イベントでグループ追加 今村 誠 2003/05/08-14:19
記事番号20245へのコメント
アル・マゲドンさんこんにちは
オブジェクト名が[E]みたいですが項目名と間違えやすいので
以下のような接頭辞に変えてみました。
また、ソース値更新のソースは半角です。
お節介とは思いますが、項目名[E]は文字列型のようですので
全角と半角も間違えないようにする工夫も大事だと思います。

手続き定義開始 tE::ソース値更新()
 ケース開始
    ケース([E]="1")
     メソッド呼び出し @F7.実行()
    ケース([E]="2")
     メソッド呼び出し @F4.実行()
  ケース終了
手続き定義終了

コマンドボタン F7(新規グループ追加)
→機能     機能パラメーターリスト
1手続き実行  新規
2グループ追加

proc 新規()
    var Long{&更新モ}
     method @フォーム.更新モード取得(&更新モ)
     cond (&更新モ) method @フォーム.更新モード設定( 0 )
 条件 (#グループ選択状態<>#u .and #グループ選択状態<>0) グループ選択解

     項目集計 [見積番号]
     &秒=&最大値+1
グループ選択
end

ONnojiさんのページに似たような投稿がありますが
http://tools.geocities.co.jp/SiliconValley-Bay/7565/@geoboard/983.htm
別人なのですよね?
20254 Re:イベントでグループ追加 アル・マゲドン 2003/05/08-16:22
記事番号20252へのコメント
今村 誠さん
ご指導ありがとうございます。

>コマンドボタン F7(新規グループ追加)
>→機能     機能パラメーターリスト
>1手続き実行  新規
>2グループ追加

私は、F7のコマンドボタンは
  機能    機能パラメータ
1グループ追加
としていました。

>proc 新規()
>    var Long{&更新モ}
>     method @フォーム.更新モード取得(&更新モ)
>     cond (&更新モ) method @フォーム.更新モード設定( 0 )
> 条件 (#グループ選択状態<>#u .and #グループ選択状態<>0) グループ選択解
>除
>     項目集計 [見積番号]
>     &秒=&最大値+1
> グループ選択
>end

申し訳ありません。この意味がまったく理解できません。
解説していただけませんか??????

>
>ONnojiさんのページに似たような投稿がありますが
>http://tools.geocities.co.jp/SiliconValley-Bay/7565/@geoboard/983.htm
>別人なのですよね?

別人です。ONnojiさんのHpはまだ知りません。

お手数をおかけしますがよろしくお願いいたします。

20256 Re:イベントでグループ追加 今村 誠 2003/05/08-17:40
記事番号20254へのコメント
その他で気づいたこと
書式→オブジェクトの属性を表示しマウスをワークスペースで
左クリックしたときの編集対象表タブの下から2行目の
「グループ値の初期化」を「する」にしておく。

現在の表の状態が訂正中や行追加中の場合はグループ追加ができないので、
表の状態を調べて表示中でない場合は、表示にします。
 同じ得意先で同じ日に複数枚の伝票を発行することもあるので
[見積番号]の数値項目でグループ分けをしたりしています。
グループ選択状態では項目集計ができないので解除して
最大値を求めて入力前イベントで値を代入します。


用語の説明について
桐一括処理ヘルプより

手続き定義開始
コマンドの別名 proc
イベントでの使用 △イベント定義の[メイン]処理では不可。

変数宣言
コマンドの別名 var
イベントでの使用 ○可能
文字列 Str 長整数 Long

メソッド呼び出し
コマンドの別名 method
イベントでの使用 ○可能

メソッド呼び出し 更新モード取得
一括処理での実行 ○可能
対象オブジェクト フォーム
■説明
フォームの更新モードを調べます。
または、「ハンドル = <ハンドル> 」で指定したフォームの
更新モードを調べます。

条件
コマンドの別名 cond
イベントでの使用 ○可能

メソッド呼び出し 更新モード設定
一括処理での実行 ×不可
対象オブジェクト フォーム
■説明
指定したフォームの更新モードを変更します。

表の状態#タ #グループ選択状態
グループ状態からの絞り込みの深さを調べます。
グループ状態であれば、グループ状態からの深さを数値で返します。
グループ項目のあるフォームを使用中で、かつグループ状態が解除されていれば 0 を返します。
それ以外であれば未定義値を返します。

グループ選択解除
イベントでの使用 △編集対象表が表示状態のときのみ操作可能。
実行後の処理対象行 実行前の行。

項目集計
イベントでの使用 △編集対象表が表示状態のときのみ操作可能。
■説明
編集対象表の<項目名> で指定した項目を集計し、つぎの組み込み変数に代入します。
変数名 説明
&件数 現在、処理対象になっているレコードの件数。
&有効件数 削除レコードが無効のときは、削除されていないレコードの件数。
削除レコードが有効のときは、削除レコードも含む。
項目値が未定義のレコードは含まない。
&削除件数 削除されたレコードの件数(削除レコードが無効のときのみ集計)。
&最大値 項目値の最大値、または最大文字数。

グループ選択
イベントでの使用 △編集対象表が表示状態のときのみ操作可能。
実行後の処理対象行 処理対象行。
開始条件を指示している場合は先頭行。
グループ項目オブジェクトがある場合はグループの先頭行。

手続き定義終了
コマンドの別名 end
イベントでの使用 ○可能
20274 Re:アクセスキーが簡単では 今村 誠 2003/05/09-13:42
記事番号20256へのコメント
ソース値更新もできないことはありませんが、
アル・マゲドンさん自作の「F7」のボタンを表示して
アクセスキーとしてオブジェクトの属性の
コマンドボタンタブの2行目の標題に
「&g)新カード」と書いて好きなときにALT+Gで
カード追加した方が便利いいのではないでしょうか
そうするとよけいな項目を表に持つこともいらないと思います。
調べたいことは
http://www.fuku3.com/~habata/cgi-bin/namazu.cgi
ここから探してみてください。

戻る