過去の桐井戸端BBS (桐ver.9)
26706 イベントで"ESC"キーのキャンセル機能を実行したい。 しぼうかん 2004/06/17-13:53
[ア],[イ],[ウ]という項目を持つ"あいう.tbl"が有り[ウ]の行制約式には[]><""と書いてあります。

このテーブルを編集表とする"あいう.wfm"に下記の様な記述をした
コマンドボタン"ほにゃー"を作りました。

機能名=表示
機能パラメータ=破棄する

そうしておいて[ア]を入力後(編集状態のまま)"ほにゃー"を押すと
データが破棄されて表示状態に戻ります。

ここからが質問です。

これと同様の処理をイベントで実行出来るでしょうか?

一応、行挿入終了イベントや行挿入終了前イベントに

メソッド呼び出し @ほにゃー.実行()

と書いて試して見ましたが行制約のエラーメッセージが出てしまい、
同様の動きはしてくれませんでした。
26707 Re:イベントで"ESC"キーのキャンセル機能を実行したい。 うにん 2004/06/17-15:40
記事番号26706へのコメント
>機能名=表示
>機能パラメータ=破棄する

>これと同様の処理をイベントで実行出来るでしょうか?

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

でいいはずですが。

26708 イベントで"コマンドボタンの"表示→破棄する"の機能を実行したい。 しぼうかん 2004/06/18-10:42
記事番号26707へのコメント
うにんさん早速の返答ありがとうございます。

そしてすいません。本文とタイトルに間違いがありました。

ESCキーのキャンセル機能=機能名=表示,機能パラメータ=破棄する
と思い込んでいましたが、違っていました。

実行したいのはタイトルと違って本文に有るとおりESCキーと同じ機能では
無くて、機能名=表示,機能パラメータ=破棄する,のコマンドボタンの
機能をイベントで実行したいのです。

さらに調べてみると他のイベントが悪さをしていて行挿入終了イベント以外の
全てのイベントのチェックを外してみると行制約のエラーは出なくなりました。
しかし、替わりに「主キー項目値は未定義に出来ません。」というエラーが出る様になりました。
また他に[エ]という項目が有りこれに主キーが設定してありました。
説明間違いすいませんでした。

現在試して見ている方法はまず最初に[ア]に入力後(編集状態のまま)
機能名=表示,パラメータ=破棄すると設定したボタン(名=ESC2)を押した
場合ではすぐにデータがキャンセルされて表示状態に戻ります。
別のコマンドボタンのイベントでこのボタンを実行しても表示状態に戻ります。
また、うにんさんのコマンドを左クリックイベントに設定する方法でも
表示状態に戻ります。

※この操作をイベントでしたいのです。

しかしコマンドボタンを押す替わりにF4キーを押して行挿入終了イベントを
発生させた場合は「主キー項目値は未定義に出来ません。」とエラーメッセージが表示されます。

行挿入終了イベントの内容は以下の通りです。

手続き定義開始 フォーム::行挿入終了(長整数 &明細番号,長整数 &モード)
if([イ]="")
メソッド呼び出し @フォーム.更新モード設定(-1)
end
手続き定義終了

このイベントの意味は[ア],[イ],[ウ],[エ]と入力する際に[ア]を入力直後に
入力の必要がない事に気がつきデータ破棄→キャンセルしようとしている、という事です。
ただし、入力完了後に表示状態に戻す場合との区別の為入力必須項目である
[イ]の項目が未定義かどうかでデータ破棄→キャンセルか又はデータ保存→
表示状態にする、の区別を分けようとしています。
26710 Re:イベントで"コマンドボタンの"表示→破棄する"の機能を実行したい。 うにん 2004/06/18-11:54
記事番号26708へのコメント

>※この操作をイベントでしたいのです。
>
>しかしコマンドボタンを押す替わりにF4キーを押して行挿入終了イベントを
>発生させた場合は「主キー項目値は未定義に出来ません。」とエラーメッセージ
>が表示されます。

「[行挿入終了]イベントは、行挿入または行追加が終了したあとに発生する」ので
F4を押せば行制約が機能してしまいます。

>ただし、入力完了後に表示状態に戻す場合との区別の為入力必須項目である
>[イ]の項目が未定義かどうかでデータ破棄→キャンセルか又はデータ保存→
>表示状態にする、の区別を分けようとしています。

F4でもキャンセルしたいなら、F4の機能自体を無効にしないと不可能では?
(キー入力イベントで)

26713 Re:イベントで"コマンドボタンの"表示→破棄する"の機能を実行したい。 しぼうかん 2004/06/18-19:22
記事番号26710へのコメント
>「[行挿入終了]イベントは、行挿入または行追加が終了したあとに発生する」ので
>F4を押せば行制約が機能してしまいます。

そうだったんですか。
と言うことは行挿入終了イベントではダメみたいですね。
行挿入終了前イベントでは更新モードの設定は出来ないし、
F4の機能を無効にするのはちょっと問題がありそうなので
キーダウンイベントを使ってやる方法を考えてみます。

うにんさん、おかげで無駄な努力を続けずにすみました。

戻る