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

■1445 / 親記事)  「目からウロコの・・・パート2」を公開しました。
  
□投稿者/ ONnoji -(2024/06/11(Tue) 16:31:26)
    2024/06/11(Tue) 16:44:53 編集(投稿者)

    <お知らせ>

    拙作webページで

    「目からウロコのデータベース桐プログラミング入門 パート2」を公開しました。

    こちら
     ↓
    桐の釣魚大全のトップ
    http://silicon7565.html.xdomain.jp/

    桐の釣魚大全のトップ > 目からウロコのデータベース桐プログラミング入門 パート2
    http://silicon7565.html.xdomain.jp/primer/primer_side_reader_part2.html

    ブラウザで表示されない場合には、F5キーを押してリロードしてください。
                    ・・・・・・・・・・・・・・・・・

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    このテキストの内容は、[フォーム+イベント処理]の初級者向けです。

    パート2で初級者の前に最初に立ちはだかる難問は、「オブジェクトって何ですか〜?」です。

    なお、このテキストは拙作webページの「桐の釣魚大全」の

    「桐のイベント処理の入門講座」

     新 フォームアプリケーション入門 §1
     新 フォームアプリケーション入門 §2

    の副読本として執筆したものです。

    目次
    10     オブジェクトって何ですか〜?
    10.1   オブジェクトは、パソコンの画面上の操作対象のこと
    10.2   [オブジェクトのリスト]ウィンドウを使いましょう
    11     属性ってなんですか〜?
    11.1   [オブジェクトの属性]ウィンドウと[オブジェクトのリスト]ウィンドウの違い
    11.2   属性の取得と属性の設定
    11.2.1 属性の取得
    11.2.2 オブジェクトの属性と変数のデータ型
    11.2.3 属性の設定
    12     メソッドってなんですか〜?
    12.1   メソッド呼び出し
    12.2   [更新モード設定]メソッドを使うか? コマンドボタンの機能を使うか?、それが問題だ
    12.3   [フォーカス設定]メソッドを使うか? タブオーダーの設定を使うか?、それが問題だ
    13     エラー対策のあれこれ
    13.1   if ( 条件 ) ... else ... end
    13.2   エラー処理コマンドはあるけれど
    13.3   フォーム以外のオブジェクト名をチェックする


580×442 => 250×190

1718091910.jpg
/44KB
引用返信 [メール受信/OFF] 削除キー/
■1446 / ResNo.1)  Re[1]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ジェダイの桐 -(2024/06/14(Fri) 17:36:49)
    ONnojiさん


    こんにちは!


    まさか 目からうろこのデータベース桐プログラミング入門 に パート2が出るとは思っていませんでした!

    初級者には助かります。


    感想です。


    11.2 からの 属性の取得 設定 で勉強になった(知らなかった)部分が
    オブジェクトリストから 雛形 が取得できる事です。


    私はオブジェクト操作での 文章を書くのが得意ではありません。
    なので、雛形があれば今よりかは早くやりたい事の文章を書くことが出来ると思います(^^♪

    オブジェクト操作 って何種類も書き方があるので、結構ハードルが高く感じていました。
    なので、慣れるまでは雛形に倣って覚えていき、慣れてきたら応用すると言う、ステップアップの方法が私には分かりやすいと思います。


    12.2 更新モード設定


    私は、出来るだけコマンドボタンの機能で完結したいのですが、未だに達成できていない(理解出来ていない)事があります。


    コマンドボタンで 機能名 行追加 をした後に 機能名 表示 をしても
    表示モードになりませんでした。

    これは、仕様 なのか 私のやり方が悪い のか未だ分かっていませんが
    解決した方法が

    メソッド呼び出し @フォーム.更新モード設定( 6 )
    メソッド呼び出し @フォーム.更新モード設定( 0 )

    でした。


    更新モード設定があって良かったと思う反面、なにかしっくりきませんでした(T_T)


    話がそれましたが、記述されている様に基本的にコマンドボタンの機能名で指示した方が便利だと思います(^^)/


    13.1


    if else end も得意ではないのですが、


    else end をエラー関連処理
    .not エラーの条件


    という記述を見て、少し モヤモヤ が晴れた気がしました。


    エラー(偽)の条件を考えて .not を付ける
    かなり応用範囲が広い考え方だと感じました!

    勉強になりました!


    以上 私の感想になります。


引用返信 [メール受信/OFF] 削除キー/
■1447 / ResNo.2)  Re[2]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ONnoji -(2024/06/15(Sat) 17:45:21)
    2024/06/16(Sun) 11:16:46 編集(投稿者)
    2024/06/15(Sat) 21:02:18 編集(投稿者)

    ジェダイの桐さん

    フィードバックありがとうございます。m(__)m


    > まさか 目からうろこのデータベース桐プログラミング入門 に パート2が出るとは思っていませんでした!

    本編の「新 フォームアプリケーション入門」は§1/§2で終了で続編はありません。
    実は、この種のテキストは画像を含むので非常に手間が掛かるので大変なんです。アハハハ(^^ゞ
    それに初級者向けの内容というのは膨大になるため、「ネバ―エンディング・ストーリー」なる危うさがあります。
       ・・・・・・・・・・・・・・・・・・

    一方、「フォームアプリケーション教書 第1部/第2部」は上級者向けの事典のような内容です。

    ちなみに、私( ONnoji )は技能の習得というレベルを「初級者・熟練した初級者・上級者・プロ・エキスパート」の5段階に分けています。※ドレイファスモデル
    ということで、いわゆる「世間の中級者」は「熟練した初級者」という扱いになります。

    そして最近、この「熟練した初級者」という技能レベルの人向けならば、(基本的に画像が無しで)文章と図解だけで十分解説出来るだろうと気が付いたのです。
    それが、「目からウロコの・・・」というシリーズの執筆の発端でした。

    ということで、文章と図解だけであれば当方の執筆の負担が少ないので、パート3等の続編を掲載しようと考えています。アハハハha

    > 11.2 からの 属性の取得 設定 で勉強になった(知らなかった)部分が
    > オブジェクトリストから 雛形 が取得できる事です。

    実は、ヘルプに書いてあるんですよ。

    こちら
     ↓
    [桐 - ヘルプ]→[一括処理・履歴・イベント]→[入門]→[イベント処理]→[定義してみましょう]→[オブジェクト属性の参照]

    でもね、読まない人が多いんですよ。※私もちゃんと読んだことが有りませんけれどねぇ〜。アハハハ

    [オブジェクト属性の参照]はヘルプにあるのですから、「新 フォームアプリケーション入門 §1/§2」では割愛しているのですよ。

    しかし、「目からウロコの・・・」は(基本的に画像が無しで)文章と図解だけなので、今回[オブジェクト属性の参照]を題材にしました。

    > 私はオブジェクト操作での 文章を書くのが得意ではありません。
    > なので、雛形があれば今よりかは早くやりたい事の文章を書くことが出来ると思います(^^♪
    > オブジェクト操作 って何種類も書き方があるので、結構ハードルが高く感じていました。
    > なので、慣れるまでは雛形に倣って覚えていき、慣れてきたら応用すると言う、ステップアップの方法が私には分かりやすいと思います。

    [オブジェクト操作]コマンドには、2つの書式がありますね。

    a.オブジェクト操作 &variableName1 = @objectName.属性名1, &variableName2 = @objectName.属性名2

      オブジェクト操作 @objectName.属性名1 = expression1, @objectName.属性名2 = expression2


    b.オブジェクト操作 @objectName{ &variableName1 = 属性名1, &variableName2 = 属性名2 }

      オブジェクト操作 @objectName{ 属性名1 = expression1, 属性名2 = expression2 }

    [オブジェクト属性の参照]の雛形は、a形式ですね。

    b形式は、雛形を更に書き直さなければなりませんので手間が掛かります。

    しかし、慣れてしまうとそれ程の手間もかかりませんので、最近では私( ONnoji )はb形式の方を使っていますね。

    どちらでも結果は同じなので、単に好みの問題ですね。

    > 12.2 更新モード設定
    > 私は、出来るだけコマンドボタンの機能で完結したいのですが、未だに達成できていない(理解出来ていない)事があります。
    > 解決した方法が
    > メソッド呼び出し @フォーム.更新モード設定( 6 )
    > メソッド呼び出し @フォーム.更新モード設定( 0 )
    > でした。

    これですね
     ↓
     オブジェクト名: cmd予定追加
     標題     : 予定追加

      機能名    機能パラメータリスト
     1 表示     確定する
     2 手続き実行  cmd予定追加Click
     3 訂正     "txt日付_入力用"
     4 なし

    手続き定義開始 cmd予定追加Click()

     メソッド呼び出し @フォーム.更新モード設定( 6 )
     項目値代入 [日付] = &m日付, [予定] = &m予定
     メソッド呼び出し @フォーム.更新モード設定( 0 )

     &m日付 = #u, &m予定 = #u

    手続き定義終了

    もしも、私だったら以下のようにしますよ。

     オブジェクト名: cmd予定追加
     標題     : 予定追加

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmd予定追加Click
     3 訂正     "txt日付_入力用"
     4 なし

    手続き定義開始 cmd予定追加Click()
     変数宣言 自動,整数{ &status }

     ** cf.桐ヘルプ[行追加]コマンド  編集対象表の最後に新規行を追加します。1回の実行で、1件の行を追加します。
     行追加 終了状態 = &status, [日付] = &m日付, [予定] = &m予定

     ** &status
     ** 戻り値 説明
     ** 1    正常に終了した
     ** 0    共有違反以外のエラーが発生した
     **-2    他の利用者が置換や併合などの処理を実行中(ファイル排他)

     &m日付 = #u /* 代入をマルチステートメント風に書くと水平方向に視線が移動するので変数名が探し難くなります */
     &m予定 = #u

    手続き定義終了

    > コマンドボタンで 機能名 行追加 をした後に 機能名 表示 をしても
    > 表示モードになりませんでした。
    > これは、仕様 なのか 私のやり方が悪い のか未だ分かっていませんが
    > 更新モード設定があって良かったと思う反面、なにかしっくりきませんでした(T_T)

    桐だけしか使っていない人の場合には当たり前のことですが、
    それ以外の人にとっては、桐に[更新モード]があることを不思議に感じた人が多いのではないでしょうかね。

    つまり、[更新モード]があるから超・面倒臭いと思いますよね。
    でも、DOS桐の時から存在するので仕方がないですね。

    さて、コマンドボタンの機能名:行挿入 というのは、

     指定されたオブジェクト名の場所にフォーカスを移動して、
     行挿入状態にする。

    ということなんですよね。

    つまり、

    ・メニューバーの[行操作]メニュー→[行挿入]を実行する
     または
    ・ファンクションキーのA|F3(行挿入)を押す

    と同じなんです。

    決して、自動的に1行追加するわけでは無いんです。だって、[Esc] キー等でキャンセルできますからねぇ〜。

    コマンドボタンの機能名を見て「きっと、こうだろう!」と予想するのは構いませんが、本当に予想通りかは試してみないと分かりませんね。

    もちろん、経験済みのコマンドボタンの機能名ならば、既知なのですぐに判断できますが・・・

    ということで、慣れない間は、コマンドボタンのヘルプを確認してください。

    こちら
     ↓
    12.5 コマンドボタンの機能グループ・機能名・機能パラメータ・説明・起動条件など|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section12-5

    12.6 コマンドボタンでよくある勘違い|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section12-6

    > 話がそれましたが、記述されている様に基本的にコマンドボタンの機能名で指示した方が便利だと思います(^^)/

    コマンドボタンは便利ですが、決して万能ではありませんね。

    イチにも二にも経験ですから、だんだんとコツを掴んで上手になりますよ。

    p.s.

    > コマンドボタンで 機能名 行追加 をした後に 機能名 表示 をしても
    > 表示モードになりませんでした。
    > これは、仕様 なのか 私のやり方が悪い のか未だ分かっていませんが
    > 更新モード設定があって良かったと思う反面、なにかしっくりきませんでした(T_T)

    ↑これを再現しようと試みましたが出来ませんでした。

    具体的に

    1.コマンドボタンの設定
    2.機能名:手続き実行で実行する一般手続きの内容

    を示していただければ、理由を解明できるかもしれません。



引用返信 [メール受信/OFF] 削除キー/
■1448 / ResNo.3)  Re[3]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ジェダイの桐 -(2024/06/17(Mon) 12:06:36)
    ONnojiさん


    > それに初級者向けの内容というのは膨大になるため、「ネバ―エンディング・ストーリー」なる危うさがあります。
    >    ・・・・・・・・・・・・・・・・・・


    本当にそうですよね・・・
    どこまで理解しているか分からないと、どこまで掘り下げてもキリがないですよね(T_T)


    > そして最近、この「熟練した初級者」という技能レベルの人向けならば、(基本的に画像が無しで)文章と図解だけで十分解説出来るだろうと気が付いたのです。
    > それが、「目からウロコの・・・」というシリーズの執筆の発端でした。
    >
    > ということで、文章と図解だけであれば当方の執筆の負担が少ないので、パート3等の続編を掲載しようと考えています。アハハハha


    もしも、アップロードされたら必ず拝見させて頂きますm(__)m


    > 実は、ヘルプに書いてあるんですよ。
    >
    > こちら
    >  ↓
    > [桐 - ヘルプ]→[一括処理・履歴・イベント]→[入門]→[イベント処理]→[定義してみましょう]→[オブジェクト属性の参照]
    >
    > でもね、読まない人が多いんですよ。※私もちゃんと読んだことが有りませんけれどねぇ〜。アハハハ


    確認漏れでした。
    実際にヘルプを見る時は、気になる事がある時 困った時 だと思います。


    今回、実際に困ったのに雛形の存在に気づけなかったと言う事は、
    まだまだだなぁ〜と思ってしまいます。


    > [オブジェクト操作]コマンドには、2つの書式がありますね。
    >
    > a.オブジェクト操作 &variableName1 = @objectName.属性名1, &variableName2 = @objectName.属性名2
    >
    >   オブジェクト操作 @objectName.属性名1 = expression1, @objectName.属性名2 = expression2
    >
    >
    > b.オブジェクト操作 @objectName{ &variableName1 = 属性名1, &variableName2 = 属性名2 }
    >
    >   オブジェクト操作 @objectName{ 属性名1 = expression1, 属性名2 = expression2 }
    >
    > [オブジェクト属性の参照]の雛形は、a形式ですね。
    >
    > b形式は、雛形を更に書き直さなければなりませんので手間が掛かります。
    >
    > しかし、慣れてしまうとそれ程の手間もかかりませんので、最近では私( ONnoji )はb形式の方を使っていますね。
    >
    > どちらでも結果は同じなので、単に好みの問題ですね。


    選択出来る事はよい事ですよね!
    ただ、プログラムの中で、aパターン bパターン が混在すると
    見にくくなると思うので、どちらかで統一してプログラミングする様に
    心がけます(^^♪
    (といっても、混在しそうですが・・・)


    > もしも、私だったら以下のようにしますよ。
    >
    >  オブジェクト名: cmd予定追加
    >  標題     : 予定追加
    >
    >   機能名    機能パラメータリスト
    >  1 表示
    >  2 手続き実行  cmd予定追加Click
    >  3 訂正     "txt日付_入力用"
    >  4 なし
    >
    > 手続き定義開始 cmd予定追加Click()
    >  変数宣言 自動,整数{ &status }
    >
    >  ** cf.桐ヘルプ[行追加]コマンド  編集対象表の最後に新規行を追加します。1回の実行で、1件の行を追加します。
    >  行追加 終了状態 = &status, [日付] = &m日付, [予定] = &m予定
    >
    >  ** &status
    >  ** 戻り値 説明
    >  ** 1    正常に終了した
    >  ** 0    共有違反以外のエラーが発生した
    >  **-2    他の利用者が置換や併合などの処理を実行中(ファイル排他)
    >
    >  &m日付 = #u /* 代入をマルチステートメント風に書くと水平方向に視線が移動するので変数名が探し難くなります */
    >  &m予定 = #u
    >
    > 手続き定義終了


    プログラム例ありがとうございます。


    このプログラムでやってみたのですが、
    3 訂正     "txt日付_入力用"
    になりませんでした。


    試しに、 機能名 訂正 → 機能名 表示 にしてみましたが 表示モードになりません。


    トレース出力で &status を見てみると 1 になっているので 正常に終了をしています。


    > ということで、慣れない間は、コマンドボタンのヘルプを確認してください。
    >
    > こちら
    >  ↓
    > 12.5 コマンドボタンの機能グループ・機能名・機能パラメータ・説明・起動条件など|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    > http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section12-5
    >
    > 12.6 コマンドボタンでよくある勘違い|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    > http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section12-6


    はい!
    読み込んで勉強します!


    >>話がそれましたが、記述されている様に基本的にコマンドボタンの機能名で指示した方が便利だと思います(^^)/
    >
    > コマンドボタンは便利ですが、決して万能ではありませんね。
    >
    > イチにも二にも経験ですから、だんだんとコツを掴んで上手になりますよ。


    こうやって、アドバイスを頂けるので少しづつですが、やりたい事が実現出来始めています。
    ありがとうございます!


    > p.s.
    >
    >>コマンドボタンで 機能名 行追加 をした後に 機能名 表示 をしても
    >>表示モードになりませんでした。
    >>これは、仕様 なのか 私のやり方が悪い のか未だ分かっていませんが
    >>更新モード設定があって良かったと思う反面、なにかしっくりきませんでした(T_T)
    >
    > ↑これを再現しようと試みましたが出来ませんでした。
    >
    > 具体的に
    >
    > 1.コマンドボタンの設定
    > 2.機能名:手続き実行で実行する一般手続きの内容
    >
    > を示していただければ、理由を解明できるかもしれません。


    申し訳ありません。
    手続き定義中 の 行追加と混同して書いてしまいました。

    下記の通り

     機能名    機能パラメータリスト
     1 表示     
     2 行追加
     3 手続き実行  cmd予定追加Click    
     4 表示 


    手続き定義開始 cmd予定追加Click()

     項目値代入 [日付] = &m日付, [予定] = &m予定
     

     &m日付 = #u
     &m予定 = #u

    手続き定義終了


    であれば、ちゃんと表示モードになります。


引用返信 [メール受信/OFF] 削除キー/
■1449 / ResNo.4)  Re[4]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ONnoji -(2024/06/17(Mon) 15:17:11)
    2024/06/17(Mon) 16:12:12 編集(投稿者)

    >> コマンドボタンで 機能名 行追加 をした後に 機能名 表示 をしても
    >> 表示モードになりませんでした。
    >>
    >> これは、仕様 なのか 私のやり方が悪い のか未だ分かっていませんが
    >> 解決した方法が
    >>
    >> メソッド呼び出し @フォーム.更新モード設定( 6 )
    >> メソッド呼び出し @フォーム.更新モード設定( 0 )
    >>
    >> でした。

    > これですね
    >  ↓
    >  オブジェクト名: cmd予定追加
    >  標題     : 予定追加
    >
    >   機能名    機能パラメータリスト
    >  1 表示     確定する
    >  2 手続き実行  cmd予定追加Click
    >  3 訂正     "txt日付_入力用"
    >  4 なし
    >
    > 手続き定義開始 cmd予定追加Click()
    >
    >  メソッド呼び出し @フォーム.更新モード設定( 6 )
    >  項目値代入 [日付] = &m日付, [予定] = &m予定
    >  メソッド呼び出し @フォーム.更新モード設定( 0 )
    >
    >  &m日付 = #u, &m予定 = #u
    >
    > 手続き定義終了

    この件↑ですが、ジェダイの桐さんと当方の双方で認識が違うように思うようになりました。

    そこで、出発点に戻って確認したいのです。

    ■スケジュール表.wfx

     フォーム
     ├ ファミリ
     ├ ワークスペース
     │ └ cmdStartUp
     ├ フォームヘッダ部
     │ ├ lbl日付
     │ ├ a予定                            機能名  機能パラメータリスト
     │ ├ txt日付_入力用     0.フォームが開いた時 cmdStartUp で 4.訂正  "txt日付_入力用"
     │ │ └ lbl日付_入力用 ←─ 1.最初に入力
     │ ├ txt予定_入力用
     │ │ └ lbl予定_入力用 ←─ 2.次に入力
     │ ├ cmd予定追加    ←─ 3.コマンドボタンを実行
     │ ├ cmd当日
     │ ├ cmd週間
     │ ├ cmd絞込_式
     │ ├ cmd絞込_値
     │ ├ cmd前週
     │ ├ cmd次週
     │ ├ cmd今月
     │ ├ cmd前月
     │ └ cmd次月
     └ フォーム明細部
       ├ 行セレクタ
       ├ txt日付
       └ txt予定


    上の図解のように0.1.2.3.の順で実行するわけですよね。

    そこで、確認したいのは、このシーケンス(手順)を実行した後に、

    フォーカスがあるオブジェクトをどのオブジェクトにしたいのでしょうか?

    もしも、そのオブジェクトがテキストボックスであれば、その時にキャレット(入力カーソル)が表示されている必要があるのでしょうか??


    p.s.

    最初に、

     項目値代入 [日付] = &m日付, [予定] = &m予定

    ↑を見付けた時に変なことするなぁ〜と思ったんですよ。

    なぜならば、[項目値代入]コマンドは、

      △項目値の入力中のみ実行可能(項目訂正、行訂正、行挿入、行追加)。

      ・入力中の項目値を設定または変更します。フォーム上に表示していない項目の値や、
       オブジェクトの属性で編集禁止にしている項目の値も、このコマンドで指定することができます。
      ・このコマンドは、フォームのイベントハンドラ内に記述します。一括処理から実行することはできません。
      ・つぎの会話処理を行なっているあいだに実行する、イベントハンドラに記述できます。
        項目訂正(表の項目訂正)
        行訂正
        行挿入
        行追加
      ・項目値を編集するオブジェクトがひとつもないとき、またはフォームが表示状態のときは、実行することができません。

    [桐 - ヘルプ]にある、"このコマンドは、フォームのイベントハンドラ内に記述します。" ← という所がどうも心に引っかかったのです。

    だから、(あくまでも私の場合にですが)あまり使うことがないコマンドなんですよ。

    >  メソッド呼び出し @フォーム.更新モード設定( 6 )
    >  項目値代入 [日付] = &m日付, [予定] = &m予定

    でも、↑このように挿入モード遷移した状態ならば、アリなんだろうと思った次第です。


引用返信 [メール受信/OFF] 削除キー/
■1450 / ResNo.5)  Re[5]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ジェダイの桐 -(2024/06/17(Mon) 16:22:13)
    2024/06/18(Tue) 10:27:38 編集(投稿者)

    ONnojiさん


    こんにちは!


    > ■スケジュール表.wfx
    >
    >  フォーム
    >  ├ ファミリ
    >  ├ ワークスペース
    >  │ └ cmdStartUp
    >  ├ フォームヘッダ部
    >  │ ├ lbl日付
    >  │ ├ a予定                            機能名  機能パラメータリスト
    >  │ ├ txt日付_入力用     0.フォームが開いた時 cmdStartUp で 4.訂正  "txt日付_入力用"
    >  │ │ └ lbl日付_入力用 ←─ 1.最初に入力
    >  │ ├ txt予定_入力用
    >  │ │ └ lbl予定_入力用 ←─ 2.次に入力
    >  │ ├ cmd予定追加    ←─ 3.コマンドボタンを実行
    >  │ ├ cmd当日
    >  │ ├ cmd週間
    >  │ ├ cmd絞込_式
    >  │ ├ cmd絞込_値
    >  │ ├ cmd前週
    >  │ ├ cmd次週
    >  │ ├ cmd今月
    >  │ ├ cmd前月
    >  │ └ cmd次月
    >  └ フォーム明細部
    >    ├ 行セレクタ
    >    ├ txt日付
    >    └ txt予定
    >
    >
    > 上の図解のように0.1.2.3.の順で実行するわけですよね。
    >
    > そこで、確認したいのは、このシーケンス(手順)を実行した後に、
    >
    > フォーカスがあるオブジェクトをどのオブジェクトにしたいのでしょうか?
    >
    > もしも、そのオブジェクトがテキストボックスであれば、その時にキャレット(入力カーソル)が表示されている必要があるのでしょうか??


    0. 1. 2. 3. の後 1. ( txt日付_入力用 ) にフォーカスされ キャレットが表示されている事が狙いでした。


    基本的に txt日付 と txt予定に直接入力はせずに
    txt日付_入力用 と  txt予定_入力用 で入力した物を 
    txt日付 と txt予定 に行追加する狙いです。


    なので、フォームを開いた時 txt日付_入力用 が訂正モードになっているし
    cmd予定追加 をクリックした後は txt日付_入力用 にフォーカスが移動していて 且つ 訂正モード になっていて欲しいです。


    0. 1. 2. 3. → 1. 2. 3. → 1. 2. 3. ・・・
    が狙いでした。


    添付したファイルですと、 0. 1. 2. 3. までは狙い通りなのですが、
    その後、表示モードにならず エンターを押すと行追加が繰り返し行われます。


引用返信 [メール受信/OFF] 削除キー/
■1451 / ResNo.6)  Re[6]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ONnoji -(2024/06/17(Mon) 17:33:36)
    2024/06/17(Mon) 22:34:41 編集(投稿者)

    > 0. 1. 2. 3. → 1. 2. 3. → 1. 2. 3. ・・・
    > が狙いでした。

    なるほど、スケジュール表2.wfx の場合には、

    現行では次のようにすると、一見解決したようになります。
                 ・・・・・・・・・

    1.cmd予定追加 (コマンドボタン)の[フォーカスの設定]属性を

     × 許可   ※許可では、コマンドボタンの機能を実行した後で、フォーカスがボタンに戻ってしまいます

     〇 自動

    に変更します。

    2.一般手続き:cmd予定追加Click() を次のように変更します・

    手続き定義開始 cmd予定追加Click()
     変数宣言 自動, 整数 { &status }

     行追加 終了状態 = &status, [日付] = &m日付, [予定] = &m予定

     ジャンプ 行番号 = 最終 /* これを挿入 */

     &m日付 = #u
     &m予定 = #u

    手続き定義終了


    でもね、根本的な問題があるんですよ。

    現行では

    次の↓[開始時実行]コマンドボタンで

     オブジェクト名: cmdStartUp
     標題     : StartUp

      機能名      機能パラメータリスト
     1 表示
     2 絞り込み_比較式  #日時日付(#日時値) <= #日時日付([日付]) <= #日時日付( #日数加算(#日時値, 7 ) )
     3 並べ替え_昇順   [日付]
     4 訂正        "txt日付_入力用"


    絞り込みをしていますね。

    そして、レコードが絞り込まれた結果が0行ではありませんね。
        ・・・・・・・・・・・・・・・・・・・・・・・

    だから気が付かなかったのですが、

    実は、

    ・編集対象表が0行の時 ※これは先頭行ですが、終端行でもあります。

    ・編集対象表の現在行が終端行の時

    レコードが無いのですから、どう逆立ちしても[訂正]モードには遷移できないのです。

    ここが、編集対象表が無いNULLフォームと編集対象表が有るフォームとの大きな違いです。ガ〜〜〜ン

    ということで、編集対象表が0行の時の対策をしなければなりませんが・・・

    しかし、私にはお世辞にもスマートなアプローチに思えませんので、具体策の提示は差し控えます。
        ・・・・・・・・・・・・・・・・・・・・・・・・

    だって、0行の時だけの対策って変でしょう。これは個人のセンスの問題ですけれどね・・・アハハハ

    私は、無理やり出来るようにするよりも、余計な手を掛けずに済ます方を選びたいですね。

    ということで、

    編集対象表が有る普通のフォームの場合には、

    フォームヘッダ部に検索する値を入力するテキストボックスは良いと思いますが ※レコードが無ければ[検索]も[絞り込み]も意味が無いです

    今回のような入力用のテキストボックスは向いていません。

    何故ならば、繰り返しになりますが、編集対象表が0行の時があるからです。

    p.s.

    コマンドボタンの[フォーカスの設定]属性は、編集対象表が有るフォームでは "自動" のまま使うのが普通ですよ。

    変更する場合は、どうしても都合が悪い時だけにしますね。

    p.p.s.

    拙作のオートフォームのヘッダ部に[固定 ▼][項目 ▼]と表示しているテキストボックスがあります。

    これは(見た目はボタンですが)テキストボックスですので、

    入力支援ボタンのドロップダウンリストを出すために訂正モードにしたいのですが、終端行ではこれが出来ません。

    そこで仕方なく、

     &msg = "この機能は表示モードの場合、終端行では実行できません"

    というメッセージボックスを表示しています。

    もちろん、行挿入モードに遷移すれば出来るんですよ。

    でも「出来れば何でもOKという無節操な態度」は、私のポリシーではないのです。

    行を登録するつもりがないのに[表示]モードから[行挿入]モードに遷移するのが意地でも嫌なんですね。アハハハha
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    これは私( ONnoi )個人のセンスですよ。アハハハha

414×316 => 250×190

1718614704.jpg
/36KB
引用返信 [メール受信/OFF] 削除キー/
■1452 / ResNo.7)  Re[7]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ジェダイの桐 -(2024/06/18(Tue) 10:27:22)
    ONnojiさん


    おはようございます!


    > 2.一般手続き:cmd予定追加Click() を次のように変更します・
    >
    > 手続き定義開始 cmd予定追加Click()
    >  変数宣言 自動, 整数 { &status }
    >
    >  行追加 終了状態 = &status, [日付] = &m日付, [予定] = &m予定
    >
    >  ジャンプ 行番号 = 最終 /* これを挿入 */
    >
    >  &m日付 = #u
    >  &m予定 = #u
    >
    > 手続き定義終了


    ジャンプ 行番号 = 最終 を入れる事で解決しました。
    メソッド呼び出しで更新モードを使用するより 分かりやすいです。


    > でもね、根本的な問題があるんですよ。
    >
    > 現行では
    >
    > 次の↓[開始時実行]コマンドボタンで
    >
    >  オブジェクト名: cmdStartUp
    >  標題     : StartUp
    >
    >   機能名      機能パラメータリスト
    >  1 表示
    >  2 絞り込み_比較式  #日時日付(#日時値) <= #日時日付([日付]) <= #日時日付( #日数加算(#日時値, 7 ) )
    >  3 並べ替え_昇順   [日付]
    >  4 訂正        "txt日付_入力用"
    >
    >
    > 絞り込みをしていますね。
    >
    > そして、レコードが絞り込まれた結果が0行ではありませんね。
    >     ・・・・・・・・・・・・・・・・・・・・・・・
    >
    > だから気が付かなかったのですが、
    >
    > 実は、
    >
    > ・編集対象表が0行の時 ※これは先頭行ですが、終端行でもあります。
    >
    > ・編集対象表の現在行が終端行の時
    >
    > レコードが無いのですから、どう逆立ちしても[訂正]モードには遷移できないのです。


    この事は知らないと分からなかったです。
    というよりか、そもそもの出発点として


    > 編集対象表が有る普通のフォームの場合には、
    >
    > フォームヘッダ部に検索する値を入力するテキストボックスは良いと思いますが ※レコードが無ければ[検索]も[絞り込み]も意味が無いです
    >
    > 今回のような入力用のテキストボックスは向いていません。


    入力用テキストボックスが ヘッダ部にある事で複雑になってしまったのですね(T_T)


    NULLフォーム で スケジュール表.TBX に行追加する方法が 入力方法としては向いているのですね(^^♪ 


    勉強になりました!


    何故、ヘッダ部に入力用テキストボックスを置いたかと言うと、直感的に分かりやすいかな?と思ったからなんです。


    > p.s.
    >
    > コマンドボタンの[フォーカスの設定]属性は、編集対象表が有るフォームでは "自動" のまま使うのが普通ですよ。
    >
    > 変更する場合は、どうしても都合が悪い時だけにしますね。


    そうだったんですね!
    教えて頂きありがとうございますm(__)m


    > p.p.s.
    >
    > 拙作のオートフォームのヘッダ部に[固定 ▼][項目 ▼]と表示しているテキストボックスがあります。
    >
    > これは(見た目はボタンですが)テキストボックスですので、
    >
    > 入力支援ボタンのドロップダウンリストを出すために訂正モードにしたいのですが、終端行ではこれが出来ません。
    >
    > そこで仕方なく、
    >
    >  &msg = "この機能は表示モードの場合、終端行では実行できません"
    >
    > というメッセージボックスを表示しています。
    >
    > もちろん、行挿入モードに遷移すれば出来るんですよ。
    >
    > でも「出来れば何でもOKという無節操な態度」は、私のポリシーではないのです。
    >
    > 行を登録するつもりがないのに[表示]モードから[行挿入]モードに遷移するのが意地でも嫌なんですね。アハハハha
    > ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    >
    > これは私( ONnoi )個人のセンスですよ。アハハハha


    確かに 出来れば何でもOK という考え方は実際あると思うのです。
    しかし、出来るからといって 無秩序にやってしまうと 整合性が取れなくなり
    結果として管理(保全)が出来なくなると思うんです。


    私が フォーム+イベント をやってみようと本格的に思った事があります。


    桐質問掲示板 ■14187 行制約について で質問した時
    ONnojiさんに 行制約で出来るか出来ないかと言えば 近しい事は出来たとしても 表をそのまま使って、[行制約]で入力許可/入力禁止をというアプローチは無理筋 だけど フォーム+イベント であれば実現可能 と教えて貰いました。


    更にサンプルまで作成して頂き、思った通りの事が実現出来ました。


    あの時、むりやり 行制約 でやりたい事を実現してしまうと 無秩序となり
    管理が難しくなっていたと思います。


    なので、今私が心がけていることは、

    1、単純な方法で進めたい
    2、桐の機能としても、使用する人に対しても不自然でない素直な方法

    で フォーム作りをしています。


    なので、 機能名 訂正 があるのに、メソッド呼び出し 更新モード設定
    を使用する事が いまいちシックリこなかった(と言うよりは、不自然に感じた)のです。


    今回教えて頂いた方法は、表面上の救済処置なのでしょうが、更新モードを使用するよりシックリきます。


    (これこそ、初級者の私が感じるセンスだけの問題かもしれませんけれど(◎_◎;))


    目からウロコのデータベース桐プログラミング入門 パート2 のフィードバックを書き込んでいたのに、色々教えて頂きありがとうございましたm(__)m


    ONnojiさんが立てられたスレッドなので、私が 解決済み! を押すのは何だか変なので押しませんが、個人的に 解決済み! です!
引用返信 [メール受信/OFF] 削除キー/
■1453 / ResNo.8)  Re[8]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ONnoji -(2024/06/18(Tue) 11:00:29)
    2024/06/18(Tue) 11:03:38 編集(投稿者)

    >>編集対象表が有る普通のフォームの場合には、
    >>フォームヘッダ部に検索する値を入力するテキストボックスは良いと思いますが ※レコードが無ければ[検索]も[絞り込み]も意味が無いです
    >>今回のような入力用のテキストボックスは向いていません。
    >
    > 入力用テキストボックスが ヘッダ部にある事で複雑になってしまったのですね(T_T)
    > NULLフォーム で スケジュール表.TBX に行追加する方法が 入力方法としては向いているのですね(^^♪ 

    別の方法を考えましたので、現在試しています。

    出来上がったらサンプルをアップしますので、しばらくお待ちください。



    > 何故、ヘッダ部に入力用テキストボックスを置いたかと言うと、直感的に分かりやすいかな?と思ったからなんです。

    編集対象表があるフォームの場合には、コマンドボタンまたはメニュー・ファンクションキーの直接操作で行を挿入・追加するのが面倒がなくて良いです。

    これは、フォームといえども編集対象表が有るフォームは、表の編集と大差ないからです。

    NULLフォームの場合には、編集対象表が無いですから、フォームで変数を編集するのは簡単ですね。

    ちなみに、DOS桐のフォームでは変数は編集できなかったんですよ。項目しか編集できなかったのです。



    > 何故、ヘッダ部に入力用テキストボックスを置いたかと言うと、直感的に分かりやすいかな?と思ったからなんです。

    これっ↑て、エクセルのユーザインタフェースから思い付きましたか???



    > 確かに 出来れば何でもOK という考え方は実際あると思うのです。
    > しかし、出来るからといって 無秩序にやってしまうと 整合性が取れなくなり
    > 結果として管理(保全)が出来なくなると思うんです。

    その通りですね。ただ我武者羅にやるのはスマートではありません。

    その時には気分が良くても、後で大変な目に合うかもしれませんからね。アハハハha

    > あの時、むりやり 行制約 でやりたい事を実現してしまうと 無秩序となり
    > 管理が難しくなっていたと思います。
    > なので、今私が心がけていることは、
    > 1、単純な方法で進めたい
    > 2、桐の機能としても、使用する人に対しても不自然でない素直な方法
    > で フォーム作りをしています。
    > なので、 機能名 訂正 があるのに、メソッド呼び出し 更新モード設定
    > を使用する事が いまいちシックリこなかった(と言うよりは、不自然に感じた)のです。
    > 今回教えて頂いた方法は、表面上の救済処置なのでしょうが、更新モードを使用するよりシックリきます。

    センスが良いと思いますよ。大切にしてください。


引用返信 [メール受信/OFF] 削除キー/
■1454 / ResNo.9)  Re[9]: 「目からウロコの・・・パート2」を公開しました。
□投稿者/ ジェダイの桐 -(2024/06/18(Tue) 12:03:06)
    ONnojiさん


    > 別の方法を考えましたので、現在試しています。
    >
    > 出来上がったらサンプルをアップしますので、しばらくお待ちください。


    ありがとうございます。


    > 編集対象表があるフォームの場合には、コマンドボタンまたはメニュー・ファンクションキーの直接操作で行を挿入・追加するのが面倒がなくて良いです。
    >
    > これは、フォームといえども編集対象表が有るフォームは、表の編集と大差ないからです。


    言われてみれば確かにそうですね・・・
    直接入力の方が、分かりやすいし、今回のフォームに対しては一番素直だと思いました。


    >>何故、ヘッダ部に入力用テキストボックスを置いたかと言うと、直感的に分かりやすいかな?と思ったからなんです。
    >
    > これっ↑て、エクセルのユーザインタフェースから思い付きましたか???


    いえ。単純にそう思ってしまったのです。
    しかも、自分自身で単純で素直が良いと言っておきながら、
    イベント過多症候群の様な状態になっていました・・・


    入力テキストがあった方が良いだろうと、思い込んで もしくは 決めつけてしまいました。
    (今にしてみれば、少しフォームが使える様になったから機能を詰め込もうと無意識に思っていたのだと思います(T_T))


引用返信 [メール受信/OFF] 削除キー/

次のレス10件>

スレッド内ページ移動 / << 0 | 1 | 2 | 3 >>

このスレッドに書きこむ

Mode/  Pass/

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

- Child Tree -
- Antispam Version -