zrobilem to po swojemu:
procedure Tfrejestr.open_lng;
begin
lng:=tinifile.Create(extractfilepath(application.ExeName) + 'def.lng');
case flogon.jakijez of
0: begin
lng.Free;
lng:=tinifile.Create(ExtractFilePath(Application.ExeName) + 'pol.lng');
end; // case 0
3: begin
lng.Free;
lng:=tinifile.Create(ExtractFilePath(Application.ExeName) + 'eng.lng');
end; // case 3
end;
end;
procedure Tfrejestr.tlumacz;
var
i:integer;
begin
try
open_lng;
for I := 0 to controlcount - 1 do
begin
if controls[i] is tbutton then
tbutton(controls[i]).Caption:=lng.ReadString('tbutton',tbutton(controls[i]).Name,tbutton(controls[i]).Name)
else if controls[i] is tlabelededit then
tlabelededit(controls[i]).EditLabel.Caption:=lng.ReadString('tlabed',tlabelededit(controls[i]).Name,tlabelededit(controls[i]).Name)
else if controls[i] is tcheckbox then
tcheckbox(controls[i]).Caption:=lng.ReadString('tcheckbox',tcheckbox(controls[i]).Name,tcheckbox(controls[i]).Name)
else if controls[i] is tlabel then
tlabel(controls[i]).Caption:=lng.ReadString('tlabel',tlabel(controls[i]).Name,tlabel(controls[i]).Name)
end;
with podp do
begin
leimie:=lng.readstring('text','rej_himie','');
lenick:=lng.readstring('text','rej_hnick','');
leklan:=lng.readstring('text','rej_hklan','');
legg:=lng.readstring('text','rej_hgg','');
lemail:=lng.readstring('text','rej_hmail','');
minfo:=lng.readstring('text','rej_hinfo','');
gen:=lng.readstring('text','rej_hgen','');
cbhts:=lng.ReadString('text','rej_hcbhts','');
end;
finally
lng.Free;
end;
end;
taki kod mam w oncreate danej formy, a to:
for I := 0 to controlcount - 1 do
begin
if controls[i] is tbutton then
tbutton(controls[i]).Caption:=lng.ReadString('tbutton',tbutton(controls[i]).Name,tbutton(controls[i]).Name)
.....
end;
skacze po wszystkich obiektach, sprawdza typ i w przypadku odpowiedniego pobiera caption'a z pliku ini na podstawie nazwy obiektu. Ini wyglada tak:
[tbutton]
banuluj=Anuluj
bdzialaj=Rejestruj
analogicznie dla kazdego typu obiektu. A ten blok, gdzie tak troche "na chama" ładuje dane z ini, to ładowanie dłuższych opisów editów, labeli i przycisków ktore sie pojawiają po najechaniu myszką na dany obiekt.
i działa ;)