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

■14610 / 親記事)  イベントでフォームをまとめて開く
  
□投稿者/ 桐太郎 -(2024/10/11(Fri) 12:09:53)
    WIN11、桐10S使用です。

    イベントでフォームを普通に開く方法がわからない。
    普通というのが、書いてて初心者丸出し感でてしまっているなと
    自分で思いました笑

    モーダルフォームにしたりとかではなく、コマンドボタンを押したら
    複数のフォームを開きたいです。

    コマンドボタンの
    機能名 機能パラメータリスト
    開く  フォーム名
    をイベントで指示したいという意味あいです。
    コマンドボタンだと4行分、4フォームまでしか開けませんが、
    もっとたくさんまとめて開きたいのですが、
    いい方法がありましたら教えてください。


    P.S.
    以前表番号の32のエラーの件で質問させていただきました。
    ONnojiさんからK3に報告していただき、桐Sは修正された
    とのことでご対応いただきありがとうございました。


引用返信 [メール受信/OFF] 削除キー/
■14611 / ResNo.1)  Re[1]: イベントでフォームをまとめて開く
□投稿者/ ONnoji -(2024/10/11(Fri) 13:41:06)
    2024/10/11(Fri) 14:02:46 編集(投稿者)

    > モーダルフォームにしたりとかではなく、コマンドボタンを押したら
    > 複数のフォームを開きたいです。

    コマンドボタンの[機能名:開く]では、4行しかありませんから、4個のフォームが限界ですね。

    コマンドボタンの[機能名:手続き実行]で手続きを呼び出し、

    その手続き内で、フォームを開く仕掛けを用意するしかないと思いますよ。
            ・・・・・・・・・・

    例えば、手続き内で

     メソッド呼び出し @フォームを開くコマンドボタン1.実行()
     メソッド呼び出し @フォームを開くコマンドボタン2.実行()
        :
        :

    とメソッドを複数実行すればOKですが、実行するためのコマンドボタンを何個も作るのが面倒ですよね。
                       ・・・・・・・・・・・・・・・・・・・・・・・・
     ◇ ◇ ◇ ◇ ◇

    そこで、[機能名:開く]をセットしたコマンドボタンを作らずに、プログラミングだけでフォームが開けると便利ですよね。
                                   ・・・・・・・・・・・・・・・・・・・・・

    以下はその例です。

    例えば次のようなコマンドボタン:

     オブジェクト名: cmdテスト
     標題     : テスト

      機能名   機能パラメータリスト
     1 表示
     2 手続き実行 cmdテストClick
     3 なし
     4 なし

    があったとします。

    [機能名:手続き実行]で実行する手続きは次の通りです。

    手続き定義開始 cmdテストClick( )
     変数宣言 自動,文字列{ &icon, &title = "cmdテストClick( )", &msg }
     変数宣言 自動,文字列{ &wfm, &tbl }
     変数宣言 自動,整数 { &hdl, &openStatus }

     &wfm = #一括パス名 + "transaction_A.wfx"
     &tbl = #一括パス名 + "transaction_A.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

     &wfm = #一括パス名 + "transaction_B.wfx"
     &tbl = #一括パス名 + "transaction_B.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

     &wfm = #一括パス名 + "transaction_C.wfx"
     &tbl = #一括パス名 + "transaction_C.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

     &wfm = #一括パス名 + "transaction_D.wfx"
     &tbl = #一括パス名 + "transaction_D.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

     &wfm = #一括パス名 + "transaction_E.wfx"
     &tbl = #一括パス名 + "transaction_E.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

     &wfm = #一括パス名 + "transaction_F.wfx"
     &tbl = #一括パス名 + "transaction_F.tbx"
     手続き実行 HDLLNCprcWindowAppear( &wfm, &tbl, &hdl, &openStatus )

    手続き定義終了

    以上の例は、拙作:INF_Framework のランチャー機能を利用しています。

    例では、6個のフォームを連続して開きます。

     ◇ ◇ ◇ ◇ ◇

    詳しくは、【多遊】さんホームページの DOWN LOAD BBS をご覧ください。

    こちら
     ↓
    DOWN LOAD BBS
    ■446 / 親階層)  Thin_INF_Framework のご案内
    https://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=one&namber=446&type=0&space=0&no=2

    Thin_INF_Framework のご案内 ツリー
    https://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=all&namber=446&type=0&space=0&no=2

    p.s.

    なお、DOWN LOAD BBS でダウンロード出来る Thin INF_Framework はベータ版です。

    Thin INF_Framework のご質問は、DOWN LOAD BBS の方へお願いいたします。

    p.p.s.

    もしも、ランチャーだけを利用するだけでよければ、 標準のコマンドボタンは無くてOKです。

      │ ├ EZWcmdズームイン   ┐
      │ ├ EZWcmdズームアウト  │
      │ ├ EZWtxtMagnification  │ 
      │ ├ INFcmdWhoAreYou    ├─ 標準のコマンドボタン ※ヘッダ部左上に配置することを推奨します
      │ ├ HDLVARcmdWhoAreYou  │
      │ ├ cmdAlt_I_ズームイン  │ ※ cmdAlt_I_ズームイン と cmdAlt_O_ズームアウト は[画面表示]= しない
      │ └ cmdAlt_O_ズームアウト ┘


引用返信 [メール受信/OFF] 削除キー/
■14612 / ResNo.2)  Re[2]: イベントでフォームをまとめて開く
□投稿者/ 桐太郎 -(2024/10/11(Fri) 16:42:34)
    No14611に返信(ONnojiさんの記事)

    ONnojiさん、早速の返信ありがとうございます。


    コマンドボタンの機能名 開く フォーム名に
    該当する一括処理コマンドやメソッドがないということが
    わかってよかったです。
    コマンドボタンで簡単にできる機能だから
    きっとあるはずと思い、けっこうな時間ヘルプを見ていたので。

    メソッド呼び出し 実行でコマンドボタンを押すのは
    理解でき、実際試してみてできました。
    プログラミングだけでフォームを開く方法は
    難しいそうですが、週末試してみます。
    取り急ぎお礼まで。



引用返信 [メール受信/OFF] 削除キー/
■14613 / ResNo.3)  Re[1]: イベントでフォームをまとめて開く
□投稿者/ 通りすがり -(2024/10/11(Fri) 16:57:43)
    私はもっぱらコマンドボタンでフォーム開きますけど、
    「ウィンドウ作成」コマンドじゃできないですか?
引用返信 [メール受信/OFF] 削除キー/
■14614 / ResNo.4)  Re[2]: イベントでフォームをまとめて開く
□投稿者/ ONnoji -(2024/10/11(Fri) 17:15:15)
    2024/10/12(Sat) 01:36:59 編集(投稿者)

    > 私はもっぱらコマンドボタンでフォーム開きますけど、
    > 「ウィンドウ作成」コマンドじゃできないですか?

    もちろん、[ウィンドウ作成]コマンドでもフォームは開けますよ。

      (例)ウィンドウ作成 &targetWfmName, ハンドル = &hdl, 編集表 = 開く

    ちなみに、私( ONnoj )の場合には、

    桐の[以前開いたファイル]のリストにファイル名を保存して欲しくない場合に限って、
      ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    [ウィンドウ作成]コマンドでフォームを開いていますよ。

    コマンドボタンの[機能名:開く]と、[ウィンドウ作成]コマンドのどちらを使うかは個人個人の好みが絡んできますが・・・

    私( ONnoj )の場合には、コマンドボタンの[機能名:開く]の方を使います。

    理由は、フォームをローンチしている時に何かしらのエラーが発生した場合に、

    コマンドボタンの[機能名:開く]の方が後処理が簡単だからですよ。


引用返信 [メール受信/OFF] 削除キー/
■14615 / ResNo.5)  Re[3]: イベントでフォームをまとめて開く
□投稿者/ ONnoji -(2024/10/11(Fri) 17:35:23)
    2024/10/12(Sat) 01:29:40 編集(投稿者)

    > コマンドボタンの機能名 開く フォーム名に
    > 該当する一括処理コマンドやメソッドがないということが
    > わかってよかったです。
    > コマンドボタンで簡単にできる機能だから
    > きっとあるはずと思い、けっこうな時間ヘルプを見ていたので。

    イベント処理でも、[ウィンドウ作成]コマンドでフォームを開けますよ。

      (例)ウィンドウ作成 &targetWfmName, ハンドル = &hdl, 編集表 = 開く

    でも、一括処理の臭いがプンプン漂って、古臭い感じがします。※これは個人の感想です(^^ゞ

    なので、コマンドボタンの[機能名:開く]を使うのがコンテンポラリーな感じがします。※これも個人の感想です(^^ゞ
                             ・・・・・・・・・・・

    また、フォームをローンチしている時に何かしらのエラーが発生した場合に、
       ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    コマンドボタンの[機能名:開く]の方が後処理が簡単なことがメリットになります。(^^ok
    ・・・・・・・・・・・・・・・・・・・・・・・・・

    さらに、桐の[以前開いたファイル]のリストにファイル名を保存してくれますから便利です。

    > メソッド呼び出し 実行でコマンドボタンを押すのは
    > 理解でき、実際試してみてできました。

    基本はこれだと思いますよ。v(^^)v

    > プログラミングだけでフォームを開く方法は
    > 難しいそうですが、週末試してみます。

    拙作のランチャーは、ワークスペースに配置したコマンドボタンの属性を書き換えて実行しているのでした。

    つまり、[機能名]を "開く" にして、[機能パラメータリスト]にファイル名をセットして、メソッドで実行です。(^^♪

    コマンドボタンの属性を変更して、動的に運用しているということです。
    ・・・・・・・・・・・・・・・・・・・・・・・・・

    ただ、ランチャーというのは、コマンドボタンの[機能名:開く]を使う事のほかに、

    すでに、[フォームのウィンドウ]が開いていないか?、ディスクにファイルが存在しているのかといったチェックが必須になるのです。

    そして、このチェックが非常に面倒なんですよ。(>_<)

    こちら
     ↓
    7.4 ランチャー|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
    http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section7-4

     ■ランチャーに関する雑談 ― ブログ版 桐のイベント道場 2007/3/17 INF_Toolsの話 第29話より
     ※執筆当時の INF_Tools は INF_Framework に置き換えました。

      ランチャーというのは案外と面倒なものです。
     INF_Framework のランチャーは次の順で動作します。

      まず、すでにそのファイルのウィンドウが在るか否か調べて
       ↓
      次に、ウィンドウでなく編集表と開いている表が在るか否か調べて、
       ↓
      次に、ディスクに目標のファイルが存在するか否か調べて、
       ↓
      最後に、本当にフォームや表を開きます。

      なお、すでにファイルのウィンドウがある場合は、そのウィンドウへフォーカスし、
      すでにウィンドウでなく編集表として開いている表がある場合は、メッセージボックスで通知します。

      また、すでに開いたウィンドウのハンドルを覚えている方式は具合悪いので、ランチャーは以上の作業をその都度行います。
     つまり、常に最新のウィンドウハンドルを精査することがランチャーの重要な点です。
     いうなれば、常にリアルタイムな情報を収集することがランチャーの基本設計になります。

      ランチャーの機能は、ミサイルに例えるのが適当です。ミサイルには、無誘導式・誘導式・打ちっ放し式があります。
      ○無誘導式   ― コマンドボタンの[機能名:開く]です。
      ○誘導式    ― すでに開いたウィンドウのハンドルを覚えている方式ですが、ハンドル情報が実際と食い違うトラブルが発生します。
      ○打ちっ放し式 ― INF_Framework が採用しているリアルタイムな情報を収集する方式です。

      実際の打ちっ放し式のミサイルには、シーカー(探知機)があります。
     これは、ランチャー機能の
      まず、すでにそのファイルのウィンドウが在るか否か調べて
       ↓
      次に、ウィンドウでなく編集表と開いている表が在るか否か調べて、
     に相当します。
      つまり、目標のウィンドウや、編集表が在るか否か調べる機能です。
     そして、もしも、目標のウィンドウや、編集表が無ければ、ディスクに目標のファイルが存在するか調査して、ランチャーはフォームや表を本当に開くというわけです。

引用返信 [メール受信/OFF] 削除キー/
■14616 / ResNo.6)  Re[1]: イベントでフォームをまとめて開く
□投稿者/ 尾形 -(2024/10/11(Fri) 18:06:28)
    どうも、こんにちは

    > イベントでフォームを普通に開く方法がわからない。

    普通に、「ウインドウ作成」コマンドでいいかと思いますが
    4窓も開く処理ってどんな処理ですか

引用返信 [メール受信/OFF] 削除キー/
■14626 / ResNo.7)  Re[2]: イベントでフォームをまとめて開く
□投稿者/ 桐太郎 -(2024/10/16(Wed) 09:13:31)
    No14616に返信(尾形さんの記事)

    > 普通に、「ウインドウ作成」コマンドでいいかと思いますが
    > 4窓も開く処理ってどんな処理ですか
    >

    ウインドウ作成でやりたいことできました。
    ありがとうございます。

    4窓開きたい処理ですが以下のとおりです。

    各銀行のインターネットバンキングからCSVをダウンロードして、
    各銀行のテーブルに転記。
    各銀行の入金データを以下にすべて転記。
    入金.tbx(.wfx)

    業種ごとに売掛金のファイルを分けています。
    A業種売掛金.tbx(.wfx)
    B業種売掛金.tbx(.wfx)
    C業種売掛金.tbx(.wfx)
    D業種売掛金.tbx(.wfx)
    E業種売掛金.tbx(.wfx)

    その際、上記の6個のフォームをまとめて開きたいという用途でした。

    ここから手作業になる作業になるんですが、
    A業種とB業種の売掛金がまとめて入金されたり、
    振込手数料差し引かれたり、
    代理店手数料差し引かれたりと様々なので、
    入金.wfxの内容を目視で確認しながら
    業種売掛金.wfxのファイルに
    入力作業(売掛金の消し込み作業)をしています。

    業種ごとに分けている業種売掛金.tbx(.wfx)を
    業種という項目名をもうけて1つの.tbx(.wfx)にまとめる検討をしたのですが、
    商品のような単純なものではなく、各業種ごと特有の項目名もあり、
    業種ごとの.tbx(.wfx)で管理しています。
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■14627 / ResNo.8)  Re[4]: イベントでフォームをまとめて開く
□投稿者/ 桐太郎 -(2024/10/16(Wed) 09:17:50)

    >   ランチャーの機能は、ミサイルに例えるのが適当です。ミサイルには、無誘導式・誘導式・打ちっ放し式があります。

    ミサイルの説明で、それぞれの違いがなんとなくわかった気がします。
    たぶん半分も理解できていませんが、概略は理解したつもりです。
    ありがとうございました。

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



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

このスレッドに書きこむ

Mode/  Pass/

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

- Child Tree -
- Antispam Version -