FormPositionをいじってみるテンミニッツサイトストラテジーサンデーアマグラマーNorimakiの開発日誌。その他Tipsども、Norimakiです。手を加えて使わせていただいています。複数のフォームでFormPositionを使用するその厄介なことというのは、フォーム位置の保存先がiniファイルあるいはレジストリだということ。僕個人としては、できるだけレジストリはいじりたくない。いって、僕はiniファイルは使っていない。(一般的なini形式の設定ファイルという意味で)ということで、どうしたものか?ということが問題になります。文字列型でデータのやり取りを行うという方法に落ち着きました。TFormPosition.LoadWindowState(FormPos:string);こんな感じで。アプリケーション開始時にフォーム位置を設定する場合、オリジナルであれば、iniファイルなどから直接データを読み取りフォーム位置を設定しています。アプリケーション終了時にフォーム位置を保存する場合は、オリジナルはファイル等に直接データを書き込んでいます。それらを、一旦、変数を噛ませることで、そのデータを使って別のファイルに保存します。僕の場合は設定ファイルはあるものの、ini形式ではないので、こんな方法をとらざるを得ませんでした。具体的には、TSTringListを各FormPositionコンポーネントに持たせてフォーム位置サイズ保存・復帰の際には、一旦そのTStringListを経由します。Valueという感じ。フォーム位置保存の場合、SaveWindowStateを呼ぶんですが、その戻り値が、先ほどのTStringList.Textになります。アプリケーション終了時には各フォームのFormPosition.SaveWindowStateを順番に読んで戻り値を全部くっつけて保存すると。アプリケーション開始時は、今保存したデータを引数に与えてLoadWindowStateを呼び出します。そんな感じでフォーム位置の保存・読み出しを行います。最初に挙げた参考リンクとともに使うことで、コンポーネントをインストールしなくても動的に生成することで全フォームの位置・サイズを保存・復帰できるようになりました。