TabControlのあるフォームで変更があった事を知るには?

解決


はまっこ  2005-10-26 11:58:04  No: 18255  IP: 192.*.*.*

いつもお世話になっております。
Delphi5Proを使用しています。

一般的なアプリのように、フォームに「適用」ボタンを配置し、
そのフォーム内の設定が変更された場合のみクリック可能で、
変更されていない間はグレーアウトしているようなものを作り
たいのですが、何か良い方法はないでしょうか?

現状は、1つのフォーム内にTPageControlが1つあって、その
中にTabSheetが複数存在し、中にはボタンやチェックボックス、
エディットボックスなどがあります。

すみませんが、どなたかご教授ください。
宜しくお願い致します。

編集 削除
えーと  2005-10-26 12:44:31  No: 18256  IP: 192.*.*.*

> 設定が変更された場合のみクリック可能

どの設定が変更されたかを知るには各コントロールの OnChange イベントなどを
使えばよいのでは? なにが疑問なのでしょうか?

編集 削除
厳密には  2005-10-26 13:00:12  No: 18257  IP: 192.*.*.*

一度変更した設定を、そのフォーム(ダイアログ)を閉じる前に結局 元の値に戻したということもありますね。
そのような時には「適用」ボタンも無効に戻したいということであれば、事前に設定値を保存しておいて、値が変更されたかをチェックする必要がありますね。

編集 削除
はまっこ  2005-10-26 14:27:15  No: 18258  IP: 192.*.*.*

なにが疑問。。。という部分が自分でよく分かってない事もあるのですが、直接言えば、理想通りにするのに最善な方法がわからなかったという事なんですが、レス頂いた内容でなんとなくつかめてきたような気がします。

とりあえず、設定値はiniなどに保存しておき、フォームを開いた時にロードして、変更有無のフラグで適用ボタンの有効/無効を変更し、キャンセルした場合は変更前のiniでロードして閉じ、OKの場合は変更した値をiniにセーブするようにしようと思います。

有難う御座いました。

編集 削除