[ Nikola Radojicic @ 17.11.2005. 12:57 ] @
Imam u programu ovako nesto:

Infosistem.Visible := False;

To nije sporno, ali zelim da iz koda aplikacije eliminisem eksplicitno navodjenje naziva objekta, nego da ga aplikacija uzima iz tabele sa nekim parametrima. To bih zeleo da uradim radi dobijanja na fleksibilnosti i univerzalnosti koda aplikacije, da ne bih morao uvek da menjam kod u programu, nego da u nekoj tabeli parametara samo izmenim podatke.

Dakle, necu da navodim ime objekta Infosistem, jer ga mogu dobiti iz tabele parametara, npr.

NazivObjekta := DM.SetupTable.FieldValues['meni10'];

Kako sad u onom Infosistem.Visible da zamenim Infosistem sa NazivObjekta, a da to radi.

Probao sam nekom analogijom sa npr:
&NazivObjekta.Visible := False;
zatim
(NazivObjekta).Visible := False;
ali naravno od toga nista ne prolazi.

Da li ima resenje za ovako nesto?


[ Srki_82 @ 17.11.2005. 13:38 ] @
Vec je nekoliko put bilo reci o ovome na forumu... nemoj da te mrzi da malo potrazis pre nego sto ponovo pitas pitanje koje je vec postavljeno.

Code:
TControl(FindComponent(NazivKomponente)).Visible := False;


[Ovu poruku je menjao Srki_82 dana 17.11.2005. u 14:40 GMT+1]
[ Nikola Radojicic @ 17.11.2005. 14:30 ] @
Citati - naravno. Zbog toga sam u naslovu teme dodao (2) jer je nesto slicno imalo.
Morao sam malo da modifikujem ono sto je predlozeno, opet nakon dodatnog citanja poruka sa sadrzajem FindComponent, tako da je dole resenje:

var
Komponenta : TComponent;

i na kraju:

Komponenta := FindComponent(Trim(DM.SetupTable.FieldValues['meni10']));

with (Komponenta as TMenuItem) do
begin
Visible := False;
end;

Neka jednostavniji ili drugaciji pokusaji nisu prolazili. Ovo je bilo uspesno.

MNOGO hvala za Srki_82.
[ Srki_82 @ 17.11.2005. 17:05 ] @
TMenuItem ne nasledjuje TControl pa ne mozes onako kako sam pokazao... za sve kontrole koje nasledjuju TControl koristi kod koji sam ti dao (nije ti bitno da li je kontrola TEdit, TButton, TList...), a za kontrole koje nasledjuju direktno TComponent moraces da ih kastujes po potrebi kao sto si radio za TMenuItem.
[ Nikola Radojicic @ 18.11.2005. 07:08 ] @
Srki_82, u pravu si.

Aplikacija radi i sa kodom:

with Komponenta do
begin
Visible := False;
end;

umesto:

with (Komponenta as TMenuItem) do
begin
Visible := False;
end;