フォーム上にエディットを用意し、デフォルトテキストとしてtestと入れて
おくとします。
特になにもイベントが発生することなく、このデフォルト値を保存しておく
ことができますか?
やりたいことは、更新ボタンとキャンセルボタンを作っておいて、キャンセ
ルしたときはデフォルト値がそのまま残っていてほしいというようなことで
す。
よろしくお願いします。
設計時に設定したデフォルト値は、実行中に変更しなければそのままですけど。
質問の意味がよく理解できないのですが。
ようわからんけど、デフォルト値をグローバル変数に代入か宣言すればええんじゃないん?
設定変更ダイアログか何かなら、ModalResultにより[更新]クリック時のみ変更処理を行えば良いわけですが
全然違うかもしれませんが、こんなんでいいんだろうか。
あんまりプログラム得意じゃないけど。
フォーム上にEdit3つとButton2つあります。
キャンセルボタン押すと、Editの中身を変更しても更新ボタン押した直後
に戻ります。
これだと、exeのあるフォルダに'Edits.edi'がないときに
キャンセルボタンを押すとエラーになりますけど。
初めて起動するときだけ1回だけ更新ボタン押して'Edits.edi'を作成してくだされ。マンドクセ('A`)んで察しください。
配列の要素が文字列なのになぜバイナリで保存したかというのも、
マンドクセ('A`)んで無視してください。
プログラムに問題があればフォローしてください。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TEdits = record
a : string[100];
b : string[100];
c : string[100];
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BinarySave;
private
{ Private 宣言 }
Edits : TEdits;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BinarySave;
var
fs : TFileStream;
fn : String;
begin
Edits.a := Edit1.Text;
Edits.b := Edit2.Text;
Edits.c := Edit3.Text;
fn := ExtractFilePath(Application.ExeName) + 'Edits.edi' ;
fs := TFileStream.Create(fn , fmCreate);
try
fs.WriteBuffer(Edits, SizeOf(TEdits));
finally
fs.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
BinarySave;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fs : TFileStream;
fn : String;
begin
fn := ExtractFilePath(Application.ExeName) + 'Edits.edi' ;
fs := TFileStream.Create(fn , fmOpenRead);
try
fs.ReadBuffer(Edits, SizeOf(TEdits));
Edit1.Text := Edits.a;
Edit2.Text := Edits.b;
Edit3.Text := Edits.c;
finally
fs.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BinarySave;
end;
end.
ツイート | ![]() |