Hoi,
Ik heb uiteindelijk het volgende gemaakt dat gebruik maakt van de 'Modified' property en enkel een aanroep in "OnCreate" en "OnDestroy" vereist (zie suggestie SvG).
De namen van de inifile section die gebruikt gaat worden geef je als parameter mee, de naam van de key is altijd de naam van het object.
Voorbeeld van gebruik:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
ReadObjectFromIniFile('FileNames', DataFileEdit);
ReadObjectFromIniFile('FileNames', DefinitionFileEdit);
ReadObjectFromIniFile('FileNames', OutputFileEdit);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WriteObjectToIniFile('FileNames', DataFileEdit);
WriteObjectToIniFile('FileNames', DefinitionFileEdit);
WriteObjectToIniFile('FileNames', OutputFileEdit);
end;
De code zelf:
(Voor de allerlaatste versie van de routines, zie: http://www.nldelphi.com/forum/showth...491#post120491 :unit "NLDSimpleIniFile".)
Code:
procedure TSimpleIniFile.WriteObject(Section: string; Obj: TObject);
begin
if Obj is TCheckBox then
begin
with Obj as TCheckBox do
begin
WriteBool(Section, Name, Checked);
end;
end;
if Obj is TEdit then
begin
with Obj as TEdit do
begin
if Modified
then WriteString(Section, Name, Text);
Modified := false;
end;
end;
if Obj is TLabeledEdit then
begin
with Obj as TLabeledEdit do
begin
if Modified
then WriteString(Section, Name, Text);
Modified := false;
end;
end;
end;
procedure TSimpleIniFile.ReadObject(Section: string; Obj: TObject);
begin
if Obj is TCheckBox then
begin
with Obj as TCheckBox do
begin
Checked := ReadBool(Section, Name, false);
end;
end;
if Obj is TEdit then
begin
with Obj as TEdit do
begin
Text := ReadString(Section, Name, '');
Modified := false;
end;
end;
if Obj is TLabeledEdit then
begin
with Obj as TLabeledEdit do
begin
Text := ReadString(Section, Name, '');
Modified := false;
end;
end;
end;
Momenteel zijn maar een beperkt aantal objecten ondersteund (die waar ik problemen mee had...)
Merk op: de routines lezen en schrijven niet alle properties van het object, enkel de property die de user input of selectie bevat (bv het 'Text' veld voor TEdits).
Bookmarks