TWindowState型をINIファイルに書き込み、読込みをするには?

解決


Kawagoe  2004-03-04 17:26:58  No: 7573  IP: 192.*.*.*

こんにちは。
川越と申します。

フォームを閉じる時に、フォームのサイズや位置情報をINIファイルに
書き込もうとしているのですが、フォームの表示のしかた(通常の状態、
最大化、最小化)の書き込み方が分かりません。
TWindowState型をINIファイルに書き込む際はどのようにすればよろし
いのでしょうか。

通常の状態=0、最大化=1、最小化=2に置き換えて、WriteIntegerでINI
ファイルに書き込み、読み込みを行うようにはしているのですが、できれ
ば直接INIファイルにTWindowState型で書き込めないものかと思っており
ます。

ご存知の方がいらっしゃいましたら、アドバイスいただけないでしょうか。
よろしくお願いします。

編集 削除
通りすがり  2004-03-04 17:38:32  No: 7574  IP: 192.*.*.*

WriteInteger('Win','State',Integer(WindowState));
WindowState := TWindowState(ReadInteger('Win','State',0));
ではだめでしょうか?

編集 削除
SOD  2004-03-04 18:13:00  No: 7575  IP: 192.*.*.*

こんな方法があります。

usesにTypInfoを追加します。

○TWindowState型の値を文字列へ変換する

  var
    Str : String ; //変換後の文字列
  Str := GetEnumName(TypeInfo(TWindowState),Ord(WindowState)) ;


○文字列をTWindowState型の値へ変換する

  var
    dummyWindowState : TWindowState ; //変換後のWindowState値
  として、
  dummyWindowState := TWindowState(GetEnumValue(TypeInfo(TWindowState)
                                  ,'ここに変換させる文字列をセット')) ;


ヘルプに載っているかは定かではありません。
ソースを見てみるのが確実でしょう。
上記は一例ですが、これはTWindowStateに限らずあらゆる列挙型に使用できます。

いかがでしょうか?

編集 削除
kawagoe  2004-03-05 09:39:46  No: 7576  IP: 192.*.*.*

通りすがりさん
SODさん

アドバイスを頂きありがとうございます。

お二人の方法で、INIファイルに書き込んでみたところ、見事INIファイル
に書き込むことができました。

>通りすがりさん
置き換え用のソースがなくなり、一行のソースでINIファイルに書き込める
ため、ソースがすっきりしました。

>SODさん
確かに、これは便利ですね。
これからも、この方法のお世話になることが多々ありそうです。

お二人とも、ありがとうございました。m(_)m

編集 削除