マスタメンテナンス処理を作成したいのですが、修正する際にあるキー(検索条件)を画面から入力し、該当データを読み込み画面に表示します。そこで終了ボタンを押下した場合に、読み込んだ内容を何も変更していなければそのまま画面を閉じて、どこかの項目を変更していれば「変更されています。画面を閉じてよろしいですか?」みたいなダイアログを表示させたいのですが、読み込んだDB内容を内部的な変数に保存しておき、終了ボタン押下時に画面のフィールド内容を1つ1つチェックしていく以外に、もっと簡単な方法はないでしょうか。画面の入力項目が100項目ぐらいあるので1項目づつチェックはしたくないと考えています。
1.グローバル変数を用意してデフォルトをFalse。
2.KeyPressイベントに用意したグローバル変数をTrueにする。
(100項目のKeyPressイベントには同じイベントを設定)
3.閉じる際に変数がTrueならばメッセージ表示。
※問題点:文字比較ではないので,編集後の値が編集前の値と同じでもメッセージが表示されます。
というルーチンはどうでしょうか。
回答ありがとうございます。そうですね文字の変更
されてもされてなくてもというのが、やはり問題ですよね。
取り合えず、その方法で作成してみます。
for i := 0 to ComponentCount-1 do
begin
if (Components[i] is TControl) then
(Components[i] as TControl).Text...
このようなコードをつかってループを回して
StringListあたりに、100項目くらいを
保持しておいて、最後に文字列比較して、更新があればカキコミ。
としてもいいでしょうね。
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
ツイート | ![]() |