−トップへ−

フォームの変更を保存する(その2)

 前回,「ini」ファイルを使ってフォームの位置や大きさを保存する方法を書きましたが,今回はフォームにMemoコンポーネントを貼り付け,Memoコンポーネントに書き込んだ内容も「ini」ファイルに書き込む方法を述べてみます。
 ソースは前回使ったものを応用します。
 まず,フォームにMemoコンポーネントを配置します。

 手順としては,前回と同じようにフォームの設定を変更した後,フォームを閉じるときに「hozon.ini」ファイルに位置や大きさなどの情報を書き込みます。そして,ファイルを起動するときに「hozon.ini」ファイルの情報を読み込んで,フォームを開きます。

procedure TForm1.Button1Click(Sender: TObject);
begin
 if colordialog1.Execute then begin //ボタンを押すとカラーダイアログを開く
  form1.Color:=colordialog1.Color; //カラーダイアログで選択した色を,フォームの色にする
 end;
end;

//フォームを閉じるときの手続き
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 fi:textfile; //テキスト型を宣言
begin
 assignfile(fi,getcurrentdir + '\hozon.ini'); //fiと「hozon.ini」ファイルを関連づける
 rewrite(fi); //fiを開き,書き込めるようにする
 writeln(fi,form1.Left); //フォームのX座標を,fiに書き込む
 writeln(fi,form1.Top); //フォームのY座標を,fiに書き込む
 writeln(fi,form1.Width); //フォームの横の大きさを,fiに書き込む
 writeln(fi,form1.Height); //フォームの縦の大きさを,fiに書き込む
 writeln(fi,form1.Color); //フォームの色を,fiに書き込む
 write(fi,memo1.Lines.Text); //Memo1の書き込みをfiに書き込む※1
 closefile(fi); //ファイルを閉じる。これで「hozon,ini」ファイルが作成される
end;

//フォームを起動するときの手続き
procedure TForm1.FormCreate(Sender: TObject);
 var
  fi:textfile; //テキスト型を宣言
  i::array[1..5] of string; //文字列型の配列を宣言
  j:integer; //jを整数型の変数として宣言
begin
 if FileExists(getcurrentdir + '\hozon.ini')=true then begin //もし「hozon.ini」ファイルがあれば以下のソースを実行
  assignfile(fi,getcurrentdir + '\hozon.ini'); //fiと「hozon.ini」ファイルを関連づける
  reset(fi); //ファイルを開く
  readln(fi,i[1]); //i[1]からi[5]に「hozon.ini」ファイルに書かれたものを代入する
  readln(fi,i[2]);
  readln(fi,i[3]);
  readln(fi,i[4]);
  readln(fi,i[5]);
  closefile(fi); //ファイルを閉じる

  form1.Left:=strtoint(i[1]); //フォームのX座標をi[1]にする
  form1.Top:=strtoint(i[2]); //フォームのY座標をi[2]にする
  form1.Width:=strtoint(i[3]); //フォームの横の大きさを,i[3]にする
  form1.Height:=strtoint(i[4]); //フォームの縦の大きさを,i[4]にする
  form1.Color:=strtoint(i[5]); //フォームの色を,i[5]にする
  memo1.Lines.LoadFromFile(getcurrentdir + '\hozon.ini'); //Memo1に「hozon.ini」の内容を書き込む※2
  for j:=1 to 5 do memo1.Lines.delete(0); //Memo1に書き込まれた内容から,最初の4行を削除する※3
 end;
end;

※1
 「memo1.Lines.Text」はmemo1に書かれた内容すべてを指定します。
 「memo1.Lines[0]」とすると,memo1の一行目を指定します。
 (一行目が0から始まるところが少し紛らわしいです。)
※2
 「readln」や「read」はファイルから一行しか読み取りません。そのため,memo1の内容のような複数行書き込まれている場合は適しません。そのためここでは「hozon.ini」ファイルの内容をmemo1に書き込み,そこから不要なデータを削除する方法をとりました。
※3
 「memo1.Lines.delete(0)」は,memo1から一行目を削除します。括弧内の「0」は一行目を表します。二行目を削除したいときは,括弧内の数字を「1」にします。


−トップへ−