HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■14452 / 親記事)  チェックボックスの動作
  
□投稿者/ 篤姫 -(2024/06/25(Tue) 10:12:53)
    桐10s windows11

    いつも勉強させていただいています。

    フォームのチェックボックス[A]:数値
    オンの値:1 オフの設定:する オフの値:0

    イベントでマウス左クリックで
    行訂正 [B]=#条件選択([A]=1,&A,1,"") 

    ところが
    チェックを入れると[B]に&Aは入らず
    チェックをはずすと[B]に&Aが入ります。

    何が間違っているかご教示願えませんか?

引用返信 [メール受信/OFF] 削除キー/
■14453 / ResNo.1)  Re[1]: チェックボックスの動作
□投稿者/ ONnoji -(2024/06/25(Tue) 13:02:52)
    2024/06/25(Tue) 13:25:03 編集(投稿者)

    > 桐10s windows11
    > フォームのチェックボックス[A]:数値
    > オンの値:1 オフの設定:する オフの値:0

    フォームにチェックボックスを配置したことは判りました。

    1.さて、そのチェックボックスをどのセクションに配置したのでしょうか?

    フォームヘッダ部
    フォーム明細部
    フォームフッタ部

    のどれですか??

    2.また、フォームの形式はなんでしょうか??

    一覧表形式
    伝票形式
    カード形式

    3.項目[A]が存在する表(.tbx)は???

    フォームの編集対象表ですか?

    それとも、イベント処理で開いた表(.tbx)でしょうか?

    4.項目[B]が存在するのは項目[A]と同一の表(.tbx)でしょうか?

    5.項目[A]と項目[B]のデータ型は何でしょうか?

引用返信 [メール受信/OFF] 削除キー/
■14454 / ResNo.2)  Re[2]: チェックボックスの動作
□投稿者/ 篤姫 -(2024/06/25(Tue) 14:04:55)
    ONnojiさん

    ありがとうございます。

    カード形式のフォームです。
    フォーム名細部です。
    項目の表はフォームの編集対象表です
    項目[B]とA]はフォームの編集対象表です。
    項目[A]は数値
    項目[B]は文字列です

    よろしくお願いします。
引用返信 [メール受信/OFF] 削除キー/
■14455 / ResNo.3)  Re[3]: チェックボックスの動作
□投稿者/ ONnoji -(2024/06/25(Tue) 14:09:38)
    > イベントでマウス左クリックで
    > 行訂正 [B]=#条件選択([A]=1,&A,1,"") 

    × [マウス左クリック]イベント

    〇 [ソース値更新]イベント

    チェックボックスのオブジェクトの[ソース値更新]イベントを試してみてください。

    <参考>

    16.4 [ソース値更新]イベントの注意点|フォームアプリケーション教書 第1部
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section16-4
引用返信 [メール受信/OFF] 削除キー/
■14456 / ResNo.4)  Re[4]: チェックボックスの動作
□投稿者/ 篤姫 -(2024/06/25(Tue) 15:02:13)
    ONnojiさん

    ありがとうございます。
    ソース値更新にすると
    行訂正ではエラーがでました。
    項目地代入で動作しました。


    チェックボックスは
    オン=1
    オフ=0 に設定しています。
    ソース値更新もしくはマウス左クリックを使用する場合
    チェックボックスのオンに対してではなく
    オフの値に対して条件式を設定するのが正しいのでしょうか?

    よろしくお願いします。
引用返信 [メール受信/OFF] 削除キー/
■14457 / ResNo.5)  Re[5]: チェックボックスの動作
□投稿者/ ONnoji -(2024/06/25(Tue) 15:56:28)
    2024/06/26(Wed) 14:27:07 編集(投稿者)
    2024/06/25(Tue) 18:39:13 編集(投稿者)

    > チェックボックスは
    > オン=1
    > オフ=0 に設定しています。
    > ソース値更新もしくはマウス左クリックを使用する場合
    > チェックボックスのオンに対してではなく
    > オフの値に対して条件式を設定するのが正しいのでしょうか?

    [マウス左クリック]イベントはお勧めしません。理由は以下にたくさん書いておきました。(^^ゞ

    [ソース値更新]イベントを使うべきだと思いますよ。

    チェックボックスをマウス左クリックした場合、

     マウス左ダウン → マウス左アップ → マウス左クリック → ソース値更新

    の順番にイベントが発生します。

     (注意)マウス左ダウン した後で、マウスポインタをチェックボックスの上から他へ移動すると、マウス左アップとマウス左クリックは発生しません。

    実は、チェックボックスの値を変える(ソース値更新)方法としては、マウス左クリック以外の方法もあるんですよ!

    つまり、チェックボックスにフォーカスが有る時に、[スペース]キーを押しても、オンの値とオフの変わりますよ。アクセスキーでも同じく変わります。
        ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  ・・・・・・・・・・

    従って、[マウス左クリック]イベントが発生した時点で、チェックボックスのオン/オフが変わることは絶対ないのですよ。
        ・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    チェックボックス(トグルボタン)には、[ソース値更新]イベントがあるのですから、それを利用するのが正しいですよ。

    このことは案外と多くの人が気が付いていないようですね。(^^ゞ

     ◇ ◇ ◇ ◇ ◇ ◇

    <参考>

    論より証拠ですから、トレース結果を以下に示します。

    チェックボックス:chkA

     ソース    :[A]
     データ型  :数値
     オンの値  :1
     オフの値設定:する
     オフの値  :0

    以下は、チェックボックスがオフの時に([A]の値がゼロ)の時にマウス左クリックした直後のトレース

    ┌when :chkA::マウス左ダウン()を実行開始しました

    │ :[A] : 0 ← この時点では オフの値 です

    └end

    ┌when :chkA::マウス左アップ()を実行開始しました

    │ :[A] : 0 ← この時点では オフの値 です

    └end

    ┌when :chkA::マウス左クリック()を実行開始しました

    │ :[A] : 0 ← この時点では オフの値 です

    └end

    ┌when :chkA::ソース値更新()を実行開始しました


    │ :[A] : 1 ← ここで既に オンの値 になっていることが確認できます

    │    ※これは[ソース値更新]イベントが発生する前にオン/オフが切り替わっているということです
    └end      ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    ■使用したイベント処理(.kex)

    名札  メイン



    手続き定義開始 chkA::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
     変数宣言 自動,文字列{ &title = "chkA::マウス左ダウン()", &msg }
     変数宣言 自動,整数 { &trace }

     &trace = 1
     条件 ( &trace ) トレース出力 &title + "を実行開始しました"

     条件 ( &trace ) トレース出力 _[A]

     条件 ( &trace ) トレース出力 &title + "を実行終了しました"
    手続き定義終了

    手続き定義開始 chkA::マウス左アップ(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ)
     変数宣言 自動,文字列{ &title = "chkA::マウス左アップ()", &msg }
     変数宣言 自動,整数 { &trace }

     &trace = 1
     条件 ( &trace ) トレース出力 &title + "を実行開始しました"

     条件 ( &trace ) トレース出力 _[A]

     条件 ( &trace ) トレース出力 &title + "を実行終了しました"
    手続き定義終了

    手続き定義開始 chkA::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
     変数宣言 自動,文字列{ &title = "chkA::マウス左クリック()", &msg }
     変数宣言 自動,整数 { &trace }

     &trace = 1
     条件 ( &trace ) トレース出力 &title + "を実行開始しました"

     条件 ( &trace ) トレース出力 _[A]


     条件 ( &trace ) トレース出力 &title + "を実行終了しました"
    手続き定義終了

    手続き定義開始 chkA::ソース値更新()
     変数宣言 自動,文字列{ &title = "chkA::ソース値更新()", &msg }
     変数宣言 自動,整数 { &trace }

     &trace = 1
     条件 ( &trace ) トレース出力 &title + "を実行開始しました"

     条件 ( &trace ) トレース出力 _[A]

     条件 ( &trace ) トレース出力 &title + "を実行終了しました"
    手続き定義終了


    p.s.

    > 実は、チェックボックスの値を変える(ソース値更新)方法としては、マウス左クリック以外の方法もあるんですよ!
    >
    > つまり、チェックボックスにフォーカスが有る時に、[スペース]キーを押しても、オンの値とオフの変わりますよ。アクセスキーでも同じく変わります。

    これはコマンドボタンの場合も同じです。

    つまり、コマンドボタンにフォーカスが有る時に、[スペース]キーを押してもコマンドボタンは実行されるのです。アクセスキーでも同じく実行出来ます。

    いわんや、[Enter] キーを押してもですけれどね。

    ということで、[マウス左クリック]イベントが万能だと考えるのは危険ですよ。

    <参考>

    12.3 コマンドボタンを実行する|フォームアプリケーション教書 第1部
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section12-3

    >  コマンドボタンはマウス左クリックで実行することが多いのですが、それ以外の方法でもコマンドボタンを実行できます。
    > 以下にコマンドボタンが実行されるタイミングを示します。
    >
    >  a.マウスでコマンドボタンを左クリックした時
    >  b.コマンドボタンへフォーカスを移動して、キーボードの[スペース]または[Enter]キーを押した時
    >  c.コマンドボタンのアクセスキーを押した時(例えば[Alt]+[X])
    >  d.プロシージャ内でコマンドボタンの[実行]メソッドを実行した時


417×550 => 189×250

1719316016.jpg
/49KB
引用返信 [メール受信/OFF] 削除キー/
■14458 / ResNo.6)  Re[6]: チェックボックスの動作
□投稿者/ 篤姫 -(2024/06/25(Tue) 19:14:48)
    ONnojiさん

    ありがとうございます。
    なかなか高度です。


    ソース値更新にすると
    チャックボックスでオンの1が入った段階で
    イベントの処理を実行すると考えていいという事ですか



引用返信 [メール受信/OFF] 削除キー/
■14460 / ResNo.7)  Re[7]: チェックボックスの動作
□投稿者/ ONnoji -(2024/06/26(Wed) 09:07:10)
    2024/07/10(Wed) 09:53:46 編集(投稿者)
    2024/06/26(Wed) 23:08:20 編集(投稿者)
    2024/06/26(Wed) 16:09:39 編集(投稿者)

    > ソース値更新にすると
    > チェックボックスでオンの1が入った段階で
    > イベントの処理を実行すると考えていいという事ですか

    チェックボックス:chkA

     ソース   :[A]
     データ型  :数値
     オンの値  :1
     オフの値設定:する
     オフの値  :0

    ↑のように、オンの値:1 と オフの値:0(オフの値設定:する)が設定されている場合には、

    当該チェックボックスをマウス左クリックすると、

      【マウス左クリック前】           【 マウス左クリック後】

     a.オフの値:0(オフの値設定:する)の状態 → オンの値:1           の状態

     b.オンの値:1           の状態 → オフの値:0(オフの値設定:する)の状態

    のように状態が遷移します。

    この時、どちらの場合でも[オン/オフの状態が変化した後]に、必ず[ソース値更新]イベントが発生しますよ。
                 ・・・・・・・・・・・・・・
    ※[マウス左クリック]イベントは[オン/オフの状態が変化する前]に発生します。

    > チェックボックスでオンの1が入った段階で
    > イベントの処理を実行すると考えていいという事ですか

    言葉の上げ足を取るつもりはありませんが・・・

    イベントは発生するものですよ。

    [ソース値更新]イベントが発生する前に、既にチェックボックスの状態(オン⇔オフ)は変わっています。

    [ソース値更新]イベントが発生すると、対応する[イベントハンドラ]が呼び出されるという仕組みですよ。


引用返信 [メール受信/OFF] 削除キー/
■14463 / ResNo.8)  Re[8]: チェックボックスの動作
□投稿者/ 篤姫 -(2024/06/26(Wed) 17:40:35)
    ONnojiさん

    ONnojiさんからご教示いただいた
    ソース値更新にすることで
    全てが正常な動作になりました。

    ありがとうございました。


解決済み!
引用返信 [メール受信/OFF] 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -