Alistair

Firstly, why use INI files?, and why use Windows INI File functions? (god
these date back to WIN.INI)
where sychronisation of the INI Files was necesarry

I use XML to store config info (using OpenXML), stores anything in a
structured manner and is
simple to eunderstand and easy to edit

IMHO

Neven

----- Original Message ----- 
From: "Alistair George" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, March 26, 2004 9:16 AM
Subject: [DUG] A bit of coding for OOP experts.


> Hi all.
> My preference has always been INI files over registry entries. Here is a
very useful component.
> Unfortunately, it cant save checklistbox information.
> I tried unsuccessfully to save these items by using a GetPropInfo search
value of 'Items'
> which brings up the component, but not the internal values eg
Checklistbox1.checked[0].
> Cant seem to work my way through this one, anyone got any ideas?
>
> Here is what I have been playing with:
> var   prop: PPropInfo;
> Tstring:string;
>
>       prop := GetPropInfo(Owner.Components[i].ClassInfo, 'Items'); //Get
all Strings Items
>       Tstring:= lowercase(Owner.Components[i].ClassName);          //Get
the base class name
>       if (prop <> nil) and (pos('checklistbox',Tstring)>0) then
//Ascertain its a checklistbox
>
> Then here is the problem area:
>
>       with Owner.Components[i].Name as Tchecklistbox do //Throws a compile
error
>       begin
>       J:= Items.Count-1;
>
> Due to the component not knowing about the Owner, it may not be possible?
>
>
>
> Then I would iterate through the checked items, and save the INI, which
would be used in below:
>
>
>
> > INIVAL : Save and Load fields values from INI file.
> >
> >   This small component when placed in a form Save and Load automatically
the
> >   properties Text, Value and Checked of every the components of the
form.
> >   I use it for remember configuration items.
> If you want the source give me a yell.
>
>
> procedure TIniVal.Save;
> var ini: TIniFile;
>     prop : PPropInfo;
>     i: Integer;
> begin
>   ini := TIniFile.Create(GetName);
>   try
>     for i := 0 to Owner.ComponentCount -1 do begin
>       prop := GetPropInfo(Owner.Components[i].ClassInfo, 'Text');
>       if (prop <> nil) and (prop^.PropType^.Kind in
[tkString,tkLString,tkWString]) then
>
ini.WriteString(Owner.Name,Owner.Components[i].Name,GetStrProp(Owner.Compone
nts[i], prop));
>
>       prop := GetPropInfo(Owner.Components[i].ClassInfo, 'Value');
>       if (prop <> nil) and (prop^.PropType^.Kind in
[tkString,tkLString,tkWString]) then
>
ini.WriteString(Owner.Name,Owner.Components[i].Name,GetStrProp(Owner.Compone
nts[i], prop));
>       if (prop <> nil) and (prop^.PropType^.Kind = tkInteger) then
>
ini.WriteInteger(Owner.Name,Owner.Components[i].Name,GetOrdProp(Owner.Compon
ents[i], prop));
>
>       prop := GetPropInfo(Owner.Components[i].ClassInfo, 'Checked');
>       if (prop <> nil) then
>
ini.WriteBool(Owner.Name,Owner.Components[i].Name,Boolean(GetOrdProp(Owner.C
omponents[i], prop)));
>     end;
>   finally
>     ini.Free;
>   end;
>
> end;
>
>
>
>
>
> _______________________________________________
> Delphi mailing list
> [EMAIL PROTECTED]
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
>

_______________________________________________
Delphi mailing list
[EMAIL PROTECTED]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to