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

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

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

■10099 / inTopicNo.1)  フォームを閉じる・開くのキャンセル
  
□投稿者/ 通りすがり -(2016/09/20(Tue) 08:35:02)
    えーと、今日のお題は…

    もちろん、スマート・シンプル・美しい・汎用的な、方法があれば良いですが、
    桐では、フォームを閉じたり開いたり時のイベントにキャンセル機能がありませんので…

    Q1)
    今日分のデータを入力して、普通にフォームを閉じようとした時に、
    「入力漏れがないかチェックして、漏れがあれば、その旨のメッセージを出して、フォームを閉じさせない」

    Q2)
    メニューフォームからでなく、いきなり個々のフォームを開こうとした時に、
    「メニューフォームからスタートしてください、等々のメッセージを出して開かせない」

    皆さんは如何されていますか?
引用返信 [メール受信/OFF] 削除キー/
■10100 / inTopicNo.2)  Re[1]: フォームを閉じる・開くのキャンセル
□投稿者/ ONnoji -(2016/09/20(Tue) 11:21:58)
    2016/09/20(Tue) 11:30:50 編集(投稿者)
    2016/09/20(Tue) 11:28:39 編集(投稿者)
    2016/09/20(Tue) 11:22:25 編集(投稿者)

    > 桐では、フォームを閉じたり開いたり時のイベントにキャンセル機能がありませんので…
    >
    > Q1)
    > 今日分のデータを入力して、普通にフォームを閉じようとした時に、
    > 「入力漏れがないかチェックして、漏れがあれば、その旨のメッセージを出して、フォームを閉じさせない」
    >
    > Q2)
    > メニューフォームからでなく、いきなり個々のフォームを開こうとした時に、
    > 「メニューフォームからスタートしてください、等々のメッセージを出して開かせない」
    >
    > 皆さんは如何されていますか?

    VB.NETでは、 [FormClosing]イベントハンドラで、e.Cancel = True でフォームを閉じなく出来る。

    でも、これはあくまでもVB.NETの場合ですね。

    桐の場合には、タイトルバーの[×]をクリックしたら、絶対にフォームは閉じてしまいます。

    だから、タイトルバーの[×]をクリックしたら[フォーム終了]イベントが発現して、イベントハンドラが呼び出されます。

    ちなみに、[フォーム終了]イベントは結構BUGを拾いやすいイベントなので、なるべく何もしない方が得策ですよ。

    だから、[フォーム終了]イベントハンドラでメッセージなんか出しても手遅れで、本当に無駄です。

    お前はすでに、終了している状態です。アチョー。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    男らしく、タイトルバーの[×]がクリックされた時にはあきらめましょう。

    クドクド考えても時間の無駄です。

    ちなみに、タイトルバーを非表示にしちゃえとか、[×]を強引に無効化しちゃえと考える人もいるが、

    それでは、Windows らしくなくなって不自然きわまりないフォームになってしまいますね。

    些細なことより、大局を大事にしましょう。

    > 「入力漏れがないかチェックして、漏れがあれば、その旨のメッセージを出して、フォームを閉じさせない」

     コマンドボタンを作れば済むことだと思います。

     例えば、

     オブジェクト名:cmd閉じる
     標題     :閉じる

       機能名   機能パラメータリスト
    [1]表示
    [2]手続き実行 cmd閉じるClick   ※cmd閉じるClick は さらにprc入力漏れチェック( &isError ) を呼び出している
    [3]なし
    [4]なし


    手続き定義開始 cmd閉じるClick( )
     変数宣言 自動,整数{ &isError }

     手続き実行 prc入力漏れチェック( &isError )

     if ( .not &isError )

      メソッド呼び出し @cmd本当に閉じる.実行( )

     else

      ** エラーなので何もしない

     end


    手続き定義終了


    以下のオブジェクトは、ワークスペースに配置する。

     オブジェクト名:cmd本当に閉じる
     標題     :cmd本当に閉じる

     機能名   機能パラメータリスト
    [1]表示
    [2]閉じる
    [3]なし
    [4]なし



    なお、メソッド呼び出し @cmd本当に閉じる.実行( ) の代わりに、実行条件 ( 式 ) を利用しても同じです。

    prc入力漏れチェック( ) で、式の真偽を操作すればOKです。


     オブジェクト名:cmd閉じる
     標題     :閉じる

       機能名   機能パラメータリスト
    [1]表示
    [2]手続き実行 cmd閉じるClick  ※cmd閉じるClick は さらにprc入力漏れチェック( &isError ) を呼び出している
    [3]実行条件  ( 式 )
    [4]閉じる



    > Q2)
    > メニューフォームからでなく、いきなり個々のフォームを開こうとした時に、
    > 「メニューフォームからスタートしてください、等々のメッセージを出して開かせない」


    いきなり適当にフォームを開かれても、こっちにも都合があって、順番があるんだからぁ〜。

    というケースですね。

    まず、開かれちゃったら仕方がないから、フォームが開いて表示された後のことを考えましょ。

    こういう場合は、[開始時]実行コマンドボタンを使うといいですよ。

     例えば、

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

       機能名   機能パラメータリスト
    [1]表示
    [2]手続き実行 cmdStartupClick   ※cmdStartupClick は さらにprcオープンチェック( &isError ) を呼び出している
    [3]なし
    [4]なし


    手続き定義開始 cmdStartupClick( )
     変数宣言 自動,整数{ &isError }

     手続き実行 prcオープンチェック( &isError )

     if ( .not &isError )

      ** ノーエラーなので何もしない

     else

      メソッド呼び出し @cmd本当に閉じる.実行( )

     end


    手続き定義終了


    または、メソッド呼び出し @cmd本当に閉じる.実行( ) の代わりに、実行条件 ( 式 ) を利用しても同じです。

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

       機能名   機能パラメータリスト
    [1]表示
    [2]手続き実行 cmd閉じるClick   ※cmdStartupClick は さらにprcオープンチェック( &isError ) を呼び出している
    [3]実行条件  ( 式 )
    [4]閉じる


     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇


    prcオープンチェック( &isError ) で何をチェックするかは、フォームの作者次第です。

    ちなみに、[開始時]実行コマンドボタンが実行される前に、[フォーム開始]イベントが発現するので、

    [フォーム開始]イベントが走って欲しくない場合には、[名札 メイン]で、[フォーム開始]イベントをオフにする必要もあります。



引用返信 [メール受信/OFF] 削除キー/
■10101 / inTopicNo.3)  Re[2]: フォームを閉じる・開くのキャンセル
□投稿者/ 通りすがり -(2016/09/20(Tue) 12:26:35)
    > タイトルバーの[×]がクリックされた時にはあきらめましょう。
    > 開かれちゃったら仕方がないから、フォームが開いて表示された後のことを考えましょ。

    なかなか上手く行きませんよねぇ

    私も色々試みたのですが、、
    Q1は、「フォーム・オプション・終了時実行コマンドで、多重化_フォーム編集」
     画面がチラつくので美しくないw 許容すべきか?
    Q2は、「編集対照表に利用者コードを設定して開けなくする」
     桐からのエラーメッセージ内容が歓迎できないw

    文殊の知恵って事で、他に何かアイデアがあったらなぁ

引用返信 [メール受信/OFF] 削除キー/
■10103 / inTopicNo.4)  Re[3]: フォームを閉じる・開くのキャンセル
□投稿者/ ONnoji -(2016/09/20(Tue) 12:46:35)
    >>タイトルバーの[×]がクリックされた時にはあきらめましょう。
    >>開かれちゃったら仕方がないから、フォームが開いて表示された後のことを考えましょ。
    >
    > なかなか上手く行きませんよねぇ
    > 文殊の知恵って事で、他に何かアイデアがあったらなぁ

    なるほど、いろいろ試されましたね。

    私はすでに諦めの境地に達していますよ。(^_^.)

    <追伸>

    ちなみに、こちらのダウンロードコーナーに

    152 桐v9 「閉じる」ボタンの無効

    というのがありますよ。

    http://tayu.o0o0.jp/download/

    ※私は利用したことがないので詳しいことはわかりません。悪しからず。


引用返信 [メール受信/OFF] 削除キー/
■10104 / inTopicNo.5)  Re[4]: フォームを閉じる・開くのキャンセル
□投稿者/ ONnoji -(2016/09/20(Tue) 15:29:19)
    2016/09/20(Tue) 15:41:03 編集(投稿者)
    2016/09/20(Tue) 15:34:02 編集(投稿者)
    2016/09/20(Tue) 15:32:53 編集(投稿者)

    > Q1)
    > 今日分のデータを入力して、普通にフォームを閉じようとした時に、
    > 「入力漏れがないかチェックして、漏れがあれば、その旨のメッセージを出して、フォームを閉じさせない」

    老婆心ながら、再登場です。

    フォームが閉じる寸前に、多重化_フォーム編集というアイデアを試しているから、

    当然、表( .tbl )を編集しているわけですよね。

    問題は直接に表( .tbl )を編集していることではないでしょうか?

    昔から非常に不思議に思っているのですが、多くの皆さんは何故ゆえに直接に表( .tbl )を編集するのだろうか??

    実は、大切なデータであればこそ、直接に表( .tbl )を編集しないものですよ。

    データの登録は、

    ・入力フォームの変数を経由して、フォームの登録ボタンで表( .tbl )に行追加する

     または、

    ・入力作業用の別の表( .tbl )をフォームで編集して、フォームの登録ボタンで表( .tbl )に読み込みする

    というふうにするのが安全です。

    データの修正も同じ、

    ・レコードを読み出して、訂正フォームの変数を経由して、フォームの登録ボタンで表( .tbl )を行訂正する

    というふうにするのが安全です。

    今までの桐に具体的なサンプルがなかったから、直接に表( .tbl )を編集しても誰も違和感を覚えないようですが、

    私は、昔の dBASEII や dBASEIII+ の 入力フォームの変数を経由して、登録ボタンでデータファイル( .dbf )に追加というサンプルを知っていますが、これなら安全なんですよね。

    タイトルバーの[×]がクリックされたって、登録されるわけではありません。

    登録の意思を示すにはフォームの[登録]ボタンを実行する。

    つまりデータの登録・変更・削除は積極的な動作(コミット)をしなければ出来ないということ。

    とても単純ですが安全ですよ。



引用返信 [メール受信/OFF] 削除キー/
■10105 / inTopicNo.6)  Re[5]: フォームを閉じる・開くのキャンセル
□投稿者/ 通りすがり -(2016/09/20(Tue) 15:54:42)
    ああ、度々どうもです

    目的の主題は、
    入力データの検証ではなく(それは、[行挿入終了前]イベント や 行制約 で行います)、
    本日の作業が漏れなく終了しているかの検証ですから、

    桐で非連結フォームを使っても、どのみち、おんなじなんよん
引用返信 [メール受信/OFF] 削除キー/
■10106 / inTopicNo.7)  Re[6]: フォームを閉じる・開くのキャンセル
□投稿者/ 尾形 -(2016/09/20(Tue) 18:07:02)
    どうも、こんにちは

    >フォームを閉じさせない
    自分の場合、ガチガチにする時は、フォーム右上に
    [×閉じる] ボタンを設置してます

    ていうか、ブレークするには
    コレしか方法ないですよね?


    >いきなり個々のフォームを開こう
    自分の場合、フォーム起動時は
    共通配列変数でパラメータ渡ししてるので
    それで判定するかな


引用返信 [メール受信/OFF] 削除キー/
■10107 / inTopicNo.8)  Re[7]: フォームを閉じる・開くのキャンセル
□投稿者/ 通りすがり -(2016/09/20(Tue) 18:17:34)
    2016/09/20(Tue) 21:57:28 編集(投稿者)

    > >フォームを閉じさせない
    > 自分の場合、ガチガチにする時は、フォーム右上に
    > [×閉じる] ボタンを設置してます

    フォームの最大化・最小化ボタンは、自作ですかね?
    私は、上手く作れなかったw
引用返信 [メール受信/OFF] 削除キー/
■10108 / inTopicNo.9)  Re[8]: フォームを閉じる・開くのキャンセル
□投稿者/ 尾形 -(2016/09/21(Wed) 06:42:37)
    どうも、こんにちは

    __最小化 □最大化 ×閉じる


    こだわらない派なので (^^;

引用返信 [メール受信/OFF] 削除キー/
■10115 / inTopicNo.10)  Re[9]: フォームを閉じる・開くのキャンセル
□投稿者/ 通りすがり -(2016/09/21(Wed) 18:48:04)
    ONnoji さん、尾形 さん
    アドバイス、情報提供有難うございました

    フォームの開閉イベントにキャンセルがない件
    きっと皆さんも不便してるだろうなぁ
    もしかしたら、何か想定外の解決策を実行している方が居るかもしれない、との淡い期待もあって質問しました

    これにて解決済マークさせて頂きます

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



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

このトピックに書きこむ

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

Mode/  Pass/

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

- Child Tree -
- Antispam Version -