更新有無のチェック


パーマ  2007-06-22 22:30:33  No: 26797

マスタメンテナンス処理を作成したいのですが、修正する際にあるキー(検索条件)を画面から入力し、該当データを読み込み画面に表示します。そこで終了ボタンを押下した場合に、読み込んだ内容を何も変更していなければそのまま画面を閉じて、どこかの項目を変更していれば「変更されています。画面を閉じてよろしいですか?」みたいなダイアログを表示させたいのですが、読み込んだDB内容を内部的な変数に保存しておき、終了ボタン押下時に画面のフィールド内容を1つ1つチェックしていく以外に、もっと簡単な方法はないでしょうか。画面の入力項目が100項目ぐらいあるので1項目づつチェックはしたくないと考えています。


Ru  2007-06-22 22:55:47  No: 26798

1.グローバル変数を用意してデフォルトをFalse。
2.KeyPressイベントに用意したグローバル変数をTrueにする。
    (100項目のKeyPressイベントには同じイベントを設定)
3.閉じる際に変数がTrueならばメッセージ表示。
※問題点:文字比較ではないので,編集後の値が編集前の値と同じでもメッセージが表示されます。

というルーチンはどうでしょうか。


パーマ  2007-06-23 02:32:40  No: 26799

回答ありがとうございます。そうですね文字の変更
されてもされてなくてもというのが、やはり問題ですよね。
取り合えず、その方法で作成してみます。


Fusa  2007-06-23 09:53:22  No: 26800

for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TControl) then
      (Components[i] as TControl).Text...

このようなコードをつかってループを回して
StringListあたりに、100項目くらいを
保持しておいて、最後に文字列比較して、更新があればカキコミ。

としてもいいでしょうね。


印刷屋  2007-06-23 10:31:34  No: 26801

DataSetでは使ったことはないんですけど、Modifiedプロパティとかはどうですか?
僕はDBコンポを使わずに普通のEditとか使っているので、更新監視にModifiedを使ってます。
ただ、ComboBoxとかにはModifiedが無いので、ちょっと面倒ですが。
for i := 0 to ComponentCount-1 do
begin
  if (Components[i] is TEdit) then
    if (Components[i] as TEdit).Modified then


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加