フォームの変更を保存する
ソフトを実行し,そのフォームの位置や大きさを変更しても,再起動すると最初の設定に戻ってしまします。ここでは終了した状態を「ini」ファイルに保存し,ソフトを起動するときにファイルを読み込んで,前回と同じ設定で開く方法を述べてみます。
なお,ここで保存に使うファイルはテキストファイルです。
まず,フォームにButtonコンポーネントと,ColorDialogを配置します。これは本当はなくても良いのですが,わかりやすいようにフォームの色を変えるために配置します。
そして,
Button1.Click
FormClose
FormCreate
の,3つのイベントハンドラを作成します。
フォームの変更を保存する手順としては,フォームの設定を変更した後,フォームを閉じるときに「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」ファイルを関連づける※1
rewrite(fi); //fiを開き,書き込めるようにする
writeln(fi,form1.Left); //フォームのX座標を,fiに書き込む※2
writeln(fi,form1.Top); //フォームのY座標を,fiに書き込む
writeln(fi,form1.Width); //フォームの横の大きさを,fiに書き込む
writeln(fi,form1.Height); //フォームの縦の大きさを,fiに書き込む
writeln(fi,form1.Color); //フォームの色を,fiに書き込む
closefile(fi); //ファイルを閉じる。これで「hozon,ini」ファイルが作成される
end;
//フォームを起動するときの手続き
procedure TForm1.FormCreate(Sender: TObject);
var
fi:textfile; //テキスト型を宣言
i::array[1..5] of string; //文字列型の配列を宣言
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」ファイルに書かれたものを代入する※3
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]にする
end;
end;
※1
「hozon.ini」ファイルの前にある「getcurrentdir」はEXEファイルが存在するフォルダを表します。ですから「getcurrentdir + '\hozon.ini'」とすることで,EXEファイルと同じフォルダにある「hozon.ini」ファイルを表します。これを「C:\Windows\hozon.ini」とすると,Cドライブの「Windows」のフォルダの中に「hozon.ini」ファイルを作成します。
(ただしこれをすると,Windowsフォルダに不要ファイルが溜まることになります。)
※2
「writeln」はファイルに書き込んだ後,改行をします。同じような働きをするものに「write」がありますが,こちらは書き込んだ後改行をしないので,複数個書き込むと一行にすべて書き込まれてしまいます。
※3
「readln」はファイルから一行(改行マークまで)読み込んだ後,セルが一行下に移動します。同じような働きをするものに「read」がありますが,こちらは読み込んだ後セルは移動しません。ですから,「read」で読み込みを複数回行うと,セルが移動しませんので同じ行のデータを読み込んでしまいます。