프로그램을 짜던중에 기존에 돌아가던 프로그램의 일부분을 공통모듈에 함수로 만들어 다른 창에서도 불러와서 사용하려고 하는데 잘 안되네요. 원래 돌아가던 소스코드는 아래와 같습니다. 많은 도움 부탁드립니다.
--------------------------------------------------------------------------------------------------------
procedure TfCharge.FormCreate(Sender: TObject);
begin
try
Ini := TIniFile.Create('.\feeset.ini');
With Ini do begin
CheckBox1.Checked := ReadBool('기본요금','USE1',CheckBox1.Checked);
CheckBox2.Checked := ReadBool('기본요금','USE2',CheckBox2.Checked);
CheckBox3.Checked := ReadBool('상세요금','USE1',CheckBox3.Checked);
CheckBox4.Checked := ReadBool('상세요금','USE2',CheckBox4.Checked);
CheckBox5.Checked := ReadBool('상세요금','USE3',CheckBox5.Checked);
Edit1.Text := ReadString('기본요금','최초 무료적용 시간(분)','');
Edit2.Text := ReadString('기본요금','기준 시간(분)','');
Edit3.Text := ReadString('기본요금','기준 요금(원)','');
Edit4.Text := ReadString('상세요금','주말 및 공휴일 기준 시간(분)','');
Edit5.Text := ReadString('상세요금','주말 및 공휴일 기준 요금(원)','');
Edit6.Text := ReadString('상세요금','일일 최대 요금(원)','');
Edit7.Text := ReadString('상세요금','최대 요금(원)','');
end;
finally
Ini.Free;
end;//try
end;
procedure TfCharge.SpeedButton1Click(Sender: TObject);
var
Ini :TIniFile;
begin
try
Ini := TIniFile.Create('.\feeset.ini');
With Ini do begin
if CheckBox1.Checked = True then begin
WriteBool('기본요금','USE1',CheckBox1.Checked);
WriteString('기본요금','최초 무료적용 시간(분)',Edit1.Text);
end else begin
WriteBool('기본시간','USE1',CheckBox1.Checked);
WriteString('기본요금','최초 무료적용 시간(분)','');
end;
if CheckBox2.Checked = True then begin
WriteBool('기본요금','USE2',CheckBox2.Checked);
WriteString('기본요금','기준 시간(분)',Edit2.Text);
WriteString('기본요금','기준 요금(원)',Edit3.Text);
end else begin
WriteBool('기본요금','USE2',CheckBox2.Checked);
WriteString('기본요금','기준 시간(분)','');
WriteString('기본요금','기준 요금(원)','');
end;
if CheckBox3.Checked = True then begin
WriteBool('상세요금','USE1',CheckBox3.Checked);
WriteString('상세요금','주말 및 공휴일 기준 시간(분)',Edit4.Text);
WriteString('상세요금','주말 및 공휴일 기준 요금(원)',Edit5.Text);
end else begin
WriteBool('상세요금','USE1',CheckBox3.Checked);
WriteString('상세요금','주말 및 공휴일 기준 시간(분)','');
WriteString('상세요금','주말 및 공휴일 기준 요금(원)','');
end;
if CheckBox4.Checked = True then begin
WriteBool('상세요금','USE2',CheckBox4.Checked);
WriteString('상세요금','일일 최대 요금(원)',Edit6.Text);
end else begin
WriteBool('상세요금','USE2',CheckBox4.Checked);
WriteString('상세요금','일일 최대 요금(원)','');
end;
if CheckBox5.Checked = True then begin
WriteBool('상세요금','USE3',CheckBox5.Checked);
WriteString('상세요금','최대 요금(원)',Edit7.Text);
end else begin
WriteBool('상세요금','USE3',CheckBox5.Checked);
WriteString('상세요금','최대 요금(원)','');
end;
end;// With Ini do begin
finally
Ini.Free;
end;//try
Self.Close;
end;
----------------------------------------------------------------------------------------------------------------------
만약 그렇다면 위 이벤트 함수 내의 객체들도 받아서 처리하게 하던지..
아니면 위의 함수가 포함된 폼을 상속받아서 그 폼으로 개발 하시면 됩니다.
전자의 경우, 각 폼의 객체 이름들이 같다고 가정하면..
procedure CommonFormCreate(mForm: TForm);
begin
try
Ini := TIniFile.Create('.\feeset.ini');
With mForm do
With Ini do begin
CheckBox1.Checked := ReadBool('기본요금','USE1',CheckBox1.Checked);
CheckBox2.Checked := ReadBool('기본요금','USE2',CheckBox2.Checked);
CheckBox3.Checked := ReadBool('상세요금','USE1',CheckBox3.Checked);
CheckBox4.Checked := ReadBool('상세요금','USE2',CheckBox4.Checked);
CheckBox5.Checked := ReadBool('상세요금','USE3',CheckBox5.Checked);
Edit1.Text := ReadString('기본요금','최초 무료적용 시간(분)','');
Edit2.Text := ReadString('기본요금','기준 시간(분)','');
Edit3.Text := ReadString('기본요금','기준 요금(원)','');
Edit4.Text := ReadString('상세요금','주말 및 공휴일 기준 시간(분)','');
Edit5.Text := ReadString('상세요금','주말 및 공휴일 기준 요금(원)','');
Edit6.Text := ReadString('상세요금','일일 최대 요금(원)','');
Edit7.Text := ReadString('상세요금','최대 요금(원)','');
end;
finally
Ini.Free;
end;//try
end;
위 처럼 하신 후, 각 폼의 OnCreate 이벤트에서
CommonFormCreate(Self);
로 호출 하시면 될것 같습니다..
물론 아래의 함수도 마찬가지가 되겠죠.