Smart måde at sætte flere properties i en klasse med et enkelt kald?
Hej,jeg har en klasse, som bl.a. består af mange labels, som jeg vil sætte Caption på i runtime (sprogomskiftningsfunktion).
Da alle sprogafhængige tekster kommer fra en separat form (frmLanguage), og jeg i OOP's hellige navn ikke vil tilgå denne form direkte fra min klasse, har jeg brug for at sætte de forskellige tekster via procedure i klassen (f.eks. SetLabel1Caption(AValue: string)).
Fra min frmMain ser det så sådan her ud:
klasse.SetLabel1Caption(frmLanguage.GetText(Label1Text)).
Nu er mit spørgsmål så, hvordan jeg kan sætte alle labels på en gang, uden at lave en procedure for hver label, så min frmMain ikke skal se sådan ud:
klasse.SetLabel1Caption(frmLanguage.GetText(Label1Text));
klasse.SetLabel2Caption(frmLanguage.GetText(Label2Text));
klasse.SetLabel3Caption(frmLanguage.GetText(Label3Text));
...
Jeg kunne selvfølgelig lave en procedure, hvor jeg overgiver alle teksterne på en gang:
klasse.SetLabelsCaption(frmLanguage.GetText(Label1Text), frmLanguage.GetText(Label2Text), ...);
Det er bare ikke særlig elegant med så mange parametre.
Eller med et loop:
for i := 1 to 20 do
klasse.SetLabelsCaption(i, frmLanguage.GetText(i));
Synes bare det er svært at vedligeholde, når der arbejdes med relative indexer, da jeg i min klasse så skal holde styr på, at i=12 f.eks. er lblUserName osv.
Har nogen bedre forslag til en elegant løsning?
Venligst ikke foreslå færdige komponenter til sprogomskiftning osv., da jeg faktisk er ret godt tilfreds med min overordnede løsning :)
Takker på forhånd!