(現在 過去ログ88 を表示中)

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

[ 最新記事及び返信フォームをトピックトップへ ]

■13103 / inTopicNo.1)  多重化した表を閉じるには
  
□投稿者/ 鳴瀬 -(2021/09/28(Tue) 20:08:34)
    イベント処理です。

    手続き定義開始 コマンドボタン_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
    編集表 1
    多重化 表番号=2 
    ウィンドウ作成 "HOGE",ハンドル=&WinID,オプション=通常,編集表=する
    グループ選択解除
    ジャンプ 行番号=先頭
    一覧表印刷 条件名="hoge2",プレビュー=する,終了状態=&実行リターン
    ウィンドウ終了 &WinID
    編集表 1
    手続き定義終了

    オーバーラップのフォームのコマンドボタンから
    イベントを実行すると最初の1回目は期待通りプレビュー付きの一覧表印刷が処理できるのですが
    手続き終了後に元のフォームに戻って,2回目を実行すると
    指定の表番号2は使用中です
    というエラーがでます。
    多重化した表が閉じられていないとうことでしょうか?
    表番号2を開放するにはどのようにイベントを記述すれば可能ですか?
引用返信 [メール受信/OFF] 削除キー/
■13104 / inTopicNo.2)  Re[1]: 多重化した表を閉じるには
□投稿者/ まさやん -(2021/09/28(Tue) 20:31:56)
    2021/09/28(Tue) 20:54:14 編集(投稿者)
    2021/09/28(Tue) 20:52:40 編集(投稿者)
    2021/09/28(Tue) 20:47:03 編集(投稿者)


    鳴瀬さんこんばんは。


    > 編集表 1
    > 多重化 表番号=2 
    > ウィンドウ作成 "HOGE",ハンドル=&WinID,オプション=通常,編集表=する
    > グループ選択解除
    > ジャンプ 行番号=先頭
    > 一覧表印刷 条件名="hoge2",プレビュー=する,終了状態=&実行リターン
    > ウィンドウ終了 &WinID

    終了 表、編集対照表

    > 編集表 1
    > 手続き定義終了
    >
    でどうですか?
    詳しくはヘルプを参照のこと。

引用返信 [メール受信/OFF] 削除キー/
■13105 / inTopicNo.3)  Re[1]: 多重化した表を閉じるには
□投稿者/ くおんたむ -(2021/09/28(Tue) 20:47:23)
    どうも、鳴瀬さん


    > 手続き定義開始 コマンドボタン_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
    > 編集表 1
    > 多重化 表番号=2 
    > ウィンドウ作成 "HOGE",ハンドル=&WinID,オプション=通常,編集表=する
    > グループ選択解除
    > ジャンプ 行番号=先頭
    > 一覧表印刷 条件名="hoge2",プレビュー=する,終了状態=&実行リターン
    > ウィンドウ終了 &WinID
    > 編集表 1
    > 手続き定義終了

    多重化して開いた表を閉じるときは、番号順よりも
    明示的に指定した表番号を指定した方が無難です。

    他のソースなどで、順が変動することがある。

    私もよく多重化を使用しますが、次の通りにしています。

    多重化 表番号 = 22  ※わざと続いての番号せず、離れた番号にすることで多重化と分別しています。
    編集表 22

     ここは何か処理

    終了 表 22

引用返信 [メール受信/OFF] 削除キー/
■13106 / inTopicNo.4)  Re[2]: 多重化した表を閉じるには
□投稿者/ 鳴瀬 -(2021/09/28(Tue) 21:23:15)
    >ウィンドウ終了 &WinID
    > 終了 表、編集対照表

    この
    終了 表 編集対象表
    はエラーメッセージは異なりますが
    ウィンドウ終了 &WinID
    の前でも後ろでもダメでした。
    ヘルプによれば,ウィンドウ終了はイベントハンドラ内で実行した場合は、表と使用フォームの両方を閉じます。と書かれてあるですが,,,

    メインのフォームはオーバーラップなのですが一時的にチャイルドに変更してファイルパレットで編集表を監視してみると,最初は1つなのですが
    イベント実行後は確かに2つあって,多重化した表が残っています。
    #因みに,オプション=通常 にしているのはデバッグ中なので挙動を可視化したいためです。期待通り動くようになれば実行速度の面からも =非表示 にする予定です。


    > 蛇足ですが、
    >>ジャンプ 行番号=先頭
    > は前行で解除しているので 不要かと思いますがあっても差し支えないし
    > 無くてもいいかと。
    確かに,どうでもよいことはわかっているのですが前行でグループ選択解除を実行すれば先頭行にレコードセレクタが移動すると思うのでが何故か最終行に移動します。可視化している都合上,気分が乗らないので,あえて書き入れています。最終的には削除するのですが,,,
引用返信 [メール受信/OFF] 削除キー/
■13107 / inTopicNo.5)  Re[1]: 多重化した表を閉じるには
□投稿者/ ONnoji -(2021/09/28(Tue) 21:41:50)
    2021/09/28(Tue) 23:45:34 編集(投稿者)
    2021/09/28(Tue) 22:02:42 編集(投稿者)

    > >ウィンドウ終了 &WinID
    >>終了 表、編集対照表
    >
    > この
    > 終了 表 編集対象表
    > はエラーメッセージは異なりますが
    > ウィンドウ終了 &WinID
    > の前でも後ろでもダメでした。

    横レスで失礼。m(__)m

    せっかくエラーメッセージが表示されたのにもかかわらず、その情報を提示しないのは勿体ないですよ。

    これではありませんか???
     ↓
    KU1212:終了処理中のウィンドウに結び付けられているため使用することができません

    > ヘルプによれば,ウィンドウ終了はイベントハンドラ内で実行した場合は、表と使用フォームの両方を閉じます。と書かれてあるですが,,,

    確かにイベント処理ではそうなります。

    しかし、貴殿はすでにフォームウィンドウ:hoge を開く前に、表を多重化しているので、

    フォームウィンドウ:hogeの編集対象表が多重化した表だとしても閉じられないのであろうと(想像ですが)思いますよ。


    p.s.

    当方の再現手順

    ■kesiteii.WFX ※このフォームは NULL フォームです。

     フォーム
     ├ ファミリ
     ├ ワークスペース
     ├ フォーム操作バー
     ├ フォームヘッダ部
     │ └ tタイトル
     └ フォーム明細部
       ├ テキスト_6
       │ └ ラベル_7
       └ cmdTest


     オブジェクト名: cmdTest
     標題     : cmdTest

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


    ■イベント処理:kesiteii.kex

    名札 メイン
     変数宣言 局所,整数{ &mTblNum, &mMultiTblNum }
     変数宣言 局所,整数{ &mHdl }

     表 "kesiteii.tbx"
     &mTblNum = #is表


    手続き定義開始 cmdTestClick( )
     変数宣言 自動,文字列{ &icon, &title = "cmdTestClick( )", &msg }

     メッセージボックス &title, &msg, アイコン = i, ボタン指定 = 1


     編集表 &mTblNum
     多重化
     &mMultiTblNum = #is表

     ** "hoge.wfx" の編集対象表は "kesiteii.tbx" である
     ウィンドウ作成 "hoge.wfx", ハンドル = &mHdl, オプション = 通常, 編集表 = する

     ウィンドウ終了 &mHdl
     ** "hoge.wfx" のフォームウィンドウは閉じられたが、多重化した表番号:&mMultiTblNum の "kesiteii.tbx" は開いたままである。

     終了 表 &mMultiTblNum ← KU1212:終了処理中のウィンドウに結び付けられているため使用することができません
     編集表 &mTblNum

    手続き定義終了


    ■トレース

     "D:\kiri10s\テスト\kesitii.kex"を一括処理実行で開きました

    ┌when メイン処理を実行開始しました

    │ DB( 2):"D:\kiri10s\テスト\kesiteii.tbx"をモード=専有更新で開きました

    └end

    ┌when 手続き"cmdTestClick( )"を実行開始しました

    │ DB( 2):"D:\kiri10s\テスト\kesiteii.tbx"を多重化しました
    │ ! error: trace_reform エラー :KU1212:終了処理中のウィンドウに結び付けられているため使用することができません (D:\kiri10s\テスト\kesitii.kex 25行目)
    │ エラー :KU1212:終了処理中のウィンドウに結び付けられているため使用することができません (D:\kiri10s\テスト\kesitii.kex 25行目)






引用返信 [メール受信/OFF] 削除キー/
■13108 / inTopicNo.6)  Re[2]: 多重化した表を閉じるには
□投稿者/ 鳴瀬 -(2021/09/28(Tue) 21:44:00)
    多重化は多重化した表が編集対象表になると思うので多重化直後の編集表の指定はあえて避けていました。
    編集表 4

    ウィンドウ終了後に
    終了 表 4
    をいれてみましたが
    KU1212:終了処理中のウィンドウに結び付けられているため使用することができません
    が1回目のイベント処理で,上記の 終了 表 4 (エラーの詳細は4です)で発生してしまいます。

引用返信 [メール受信/OFF] 削除キー/
■13109 / inTopicNo.7)  Re[2]: 多重化した表を閉じるには
□投稿者/ ONnoji -(2021/09/28(Tue) 22:21:48)
    2021/10/11(Mon) 22:22:38 編集(投稿者)


    次のようにすれば解決すると思いますよ。

    1.まず、(もしも、hoge.wfx が NULL フォームならば編集対象表を指定して、)hoge.wfx のフォームの許可作業の[多重化]を "する" に変更します。

    ■hoge.wfx

    オブジェクト名:フォーム 分類:許可

    プロパティ名 設定値
    行挿入    する
    行訂正    する
    行削除    する
    行復活    する
    絞り込み   する
    併合     する
    表示切り替え する
    並べ替え   する
    多重化    する ← しない を する に変更
    書き出し   する
    0行の絞り込み する
    グループ追加時すでに存在 しない
    未定義値グループの行追加 する


    2.次に、以下のように変更

    ※多重化、ウィンドウ終了 をコメントアウト

    ※ウィンドウ作成 で 編集表=しない にする

    ※編集表 1 はあってもなくてもOK

    手続き定義開始 コマンドボタン_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)

     編集表 1
     ** 多重化 表番号=2
     **ウィンドウ作成 "HOGE",ハンドル=&WinID,オプション=通常,編集表=する

     ウィンドウ作成 "HOGE",ハンドル=&WinID,オプション=通常,編集表=しない

     ** グループ選択解除
     ** ジャンプ 行番号=先頭
     ** 一覧表印刷 条件名="hoge2",プレビュー=する,終了状態=&実行リターン

     **ウィンドウ終了 &WinID
     編集表 1

    手続き定義終了

    3.hoge.wfx のフォームに一覧表印刷するコマンドボタンを追加する

     ** グループ選択解除
     ** ジャンプ 行番号=先頭
     ** 一覧表印刷 条件名="hoge2",プレビュー=する,終了状態=&実行リターン

     ↑この機能は、hoge.wfx のコマンドボタンで実行します

    p.s.


    なお、hoge.wfx には、

     タイトルバーの[×]ボタン
      または
     機能名:閉じる のコマンドボタン

     のどちら一方、または両方が必要です。

    これらを設置し忘れた場合には、Alt + F4 で hoge.wfx を閉じることが出来ます。

    なお、イベント処理では[ウィンドウ終了]コマンドは基本的に使いませんよ。

    フォームが開いて、描画された直後に、自動的に終了したい場合には、[開始時実行コマンド]ボタンで行いますよ。




引用返信 [メール受信/OFF] 削除キー/
■13112 / inTopicNo.8)  Re[3]: 多重化した表を閉じるには
□投稿者/ 鳴瀬 -(2021/09/29(Wed) 10:49:39)
    ありがとうございます。いろいろ試行錯誤の結果,
    多重化をした後でウィンドウを消しても見えない表番号2の表が居残っていて,
    2回目のループで表番号2に割り当てできない,というエラーなので
    ダメもとで多重化する前に表番号2(使用済みであってもなくても)を消してしまえばOkかなと思い,
    イベント処理の冒頭に
    中止 表 2
    を入れてみたら問題なく動いてくれるようです。
    イベント処理って闇の部分が多くて,,,
    兎も角,みなさん貴重なコメント,ありがとうございました。
    一度,じっくりと勉強してみます。

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■13131 / inTopicNo.9)  Re[4]: 多重化した表を閉じるには
□投稿者/ 悲しげ -(2021/10/01(Fri) 21:06:21)
    ランダムなコメントで失礼します。

    No13106「グループ選択解除」は、つまりはグループ選択状態を解除するだけで
    「処理対象行」については直接関係しないようです。
    ヘルプにも「実行後の処理対象行 実行前の行」となっています。
    つまり直前のグループ選択状態の時の対象行のままです。
    ゆえに明示的に処理対象行を指定(または任意の絞り込みを)した方が無難かもしれません。
    ついでに云えば「グループ選択解除」状態で必要な処理をした後は、
    グループ有りフォームに戻る訳だから、再度「グループ選択」させておいた方が無難かと。
    この際も当然ながら、その時の処理対象行でもって「グループ選択」されるはず。

    No13112「イベント処理って闇の部分が多くて」というより、
    「ウィンドウ作成」〜「ウィンドウ終了」系はなかなか難しいので、
    私は極力この系統のコマンドから逃げて、単にフォームを開いてからイベントを使うようにしています。
    その方が「闇」が少ないです。
    端的に言えば、コマンドボタンで機能名を「手続き実行」、機能パラマータリスト「ホゲ」とし、
    kev(kex)の記述においては
      手続き定義開始 コマンドボタン_1::マウス左クリック(長整数 &マウス位置[2],・・・・
    というより
      手続き定義開始 ホゲ()
    というような感じで。

    私なんか、ウィンドウハンドルと表番号は、挙動含めて全く独立していると思いこんでたり(偏見)。
    例えば「#ウィンドウハンドル取得(n)」関数とかもありますが、使ったことはありません。
    (正確にはむかし試そうとしてドツボに填まった)

    それと「ウィンドウ終了」コマンド自体が「自身のフォームに対しては、つねに不可」とされている
    ことも関係しているかもしれません。

    「多重化」では、桐が勝手に表番号を割り付けるので、定数で指定しない方が無難です。
    何かの事情で表番号の重複を招きかねないから。
    くおんたむさんはNo13105で苦肉言及されてますが(^^;)。
    私はNo13107でONnojiさんが書いた方に一票です。
      編集表 &mTblNum     ←和訳すると「&表番号」
      多重化
      &mMultiTblNum = #is表  ←和訳すると「&多重化表番号」
    のように、桐が勝手に割り付けた表番号を「#is表」関数→変数で受けるようにして
    あとは例えば
      編集表 &mMultiTblNum
    とか
      終了 表 &mMultiTblNum
    とか。

    以上、長々と失礼。
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

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

- Child Tree -
- Antispam Version -