Hi,
I am writing a small application that just has multiple pages ( 8 ) under a Page Control. Each page has its own memo. The idea is to automatically load and save each memo respectively at start or end. The program works fine, but the coding is getting a bit messy, as I have to address each component individually, via a case statement.
Is there a way I can put the various components in a for loop and do away with these lengthy case statements.
The Istr() is my own function.
eg, what I want to achieve is coding similar to the following:
for I:=1 to 8 do
WriteString('TabLabel'+Istr(I,0),TabSheet.Caption);
for I:=1 to 8 do
Memo.Lines.SaveToFile('Memo'+IStr(I,0)+'.txt');
for I:=1 to 8 do
TabSheet.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo'+IStr(I,0)+'.txt');
for I:=1 to 8 do
begin
Memo.Lines.Clear;
LoadFile:='Memo'+IStr(I,0)+'.txt');
if FileExists(LoadFile) then Memo.Lines.LoadFromFile(LoadFile);
end;
Here is my existing code, with the messy case statements:
procedure TForm1.StoreFormState;
var I:integer;
begin
with XMLConfig1 do
begin
WriteInteger('NormalLeft', Left);
WriteInteger('NormalTop', Top);
WriteInteger('NormalWidth', Width);
WriteInteger('NormalHeight', Height);
WriteInteger('RestoredLeft', RestoredLeft);
WriteInteger('RestoredTop', RestoredTop);
WriteInteger('RestoredWidth', RestoredWidth);
WriteInteger('RestoredHeight', RestoredHeight);
WriteInteger('WindowState', Integer(WindowState));
for I:=1 to 8 do
case I of
1: WriteString('TabLabel'+Istr(I,0),TabSheet1.Caption);
2: WriteString('TabLabel'+Istr(I,0),TabSheet2.Caption);
3: WriteString('TabLabel'+Istr(I,0),TabSheet3.Caption);
4: WriteString('TabLabel'+Istr(I,0),TabSheet4.Caption);
5: WriteString('TabLabel'+Istr(I,0),TabSheet5.Caption);
6: WriteString('TabLabel'+Istr(I,0),TabSheet6.Caption);
7: WriteString('TabLabel'+Istr(I,0),TabSheet7.Caption);
8: WriteString('TabLabel'+Istr(I,0),TabSheet8.Caption);
end;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var I:integer;
begin
StoreFormState;
for I:=1 to 8 do
begin
case I of
1: Memo1.Lines.SaveToFile('Memo1.txt');
2: Memo2.Lines.SaveToFile('Memo2.txt');
3: Memo3.Lines.SaveToFile('Memo3.txt');
4: Memo4.Lines.SaveToFile('Memo4.txt');
5: Memo5.Lines.SaveToFile('Memo5.txt');
6: Memo6.Lines.SaveToFile('Memo6.txt');
7: Memo7.Lines.SaveToFile('Memo7.txt');
8: Memo8.Lines.SaveToFile('Memo8.txt');
end;
end;
CloseAction:=caFree;
end;
procedure TForm1.RestoreFormState;
var I:integer; LastWindowState:TWindowState;
begin
with XMLConfig1 do begin
LastWindowState := TWindowState(ReadInteger('WindowState', Integer(WindowState)));
if LastWindowState = wsMaximized then begin
WindowState := wsNormal;
BoundsRect := Bounds(
ReadInteger('RestoredLeft', RestoredLeft),
ReadInteger('RestoredTop', RestoredTop),
ReadInteger('RestoredWidth', RestoredWidth),
ReadInteger('RestoredHeight', RestoredHeight));
WindowState := wsMaximized;
end else begin
WindowState := wsNormal;
BoundsRect := Bounds(
ReadInteger('NormalLeft', Left),
ReadInteger('NormalTop', Top),
ReadInteger('NormalWidth', Width),
ReadInteger('NormalHeight', Height));
end;
for I:=1 to 8 do
case I of
1: TabSheet1.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo1');
2: TabSheet2.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo2');
3: TabSheet3.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo3');
4: TabSheet4.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo4');
5: TabSheet5.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo5');
6: TabSheet6.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo6');
7: TabSheet7.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo7');
8: TabSheet8.Caption:=ReadString('TabLabel'+Istr(I,0),'Memo8');
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var I:integer;
begin
RestoreFormState;
Memo1.Lines.Clear;
Memo2.Lines.Clear;
Memo3.Lines.Clear;
Memo4.Lines.Clear;
Memo5.Lines.Clear;
Memo6.Lines.Clear;
Memo7.Lines.Clear;
Memo8.Lines.Clear;
for I:=1 to 8 do
begin
case I of
1: if FileExists('Memo1.txt') then Memo1.Lines.LoadFromFile('Memo1.txt');
2: if FileExists('Memo2.txt') then Memo2.Lines.LoadFromFile('Memo2.txt');
3: if FileExists('Memo3.txt') then Memo3.Lines.LoadFromFile('Memo3.txt');
4: if FileExists('Memo4.txt') then Memo4.Lines.LoadFromFile('Memo4.txt');
5: if FileExists('Memo5.txt') then Memo5.Lines.LoadFromFile('Memo5.txt');
6: if FileExists('Memo6.txt') then Memo6.Lines.LoadFromFile('Memo6.txt');
7: if FileExists('Memo7.txt') then Memo7.Lines.LoadFromFile('Memo7.txt');
8: if FileExists('Memo8.txt') then Memo8.Lines.LoadFromFile('Memo8.txt');
end;
end;
PageControl1.ActivePage:=TabSheet1;
PageControl1.TabIndex:=0;
end;
Thanks