[ sojic @ 31.10.2005. 14:13 ] @
Imam recimo Edit boksove:

Trajko
Muso
Djuro

Imam Podatke array od TStrings gde
Strings[1] ="Trajko"
Strings[2]="Ovo je tekst koji treba da stoi u Trajko.text"

Kako da napravim nesto u stilu:

TEdit.(Podatke.Strings[1]).Text = Podatke.Strings[2];

Znaci kako da vrednost nekog stringa pretvorim u Name nekog objekta?
[ reiser @ 31.10.2005. 14:26 ] @
Ako sam dobro razumeo :


Code:

var
  EditBox : TEdit;
begin
  EditBox := TEdit(FindComponent(Strings[1]));
  If Assigned(EditBox) Then
    EditBox.Text := Strings[2];


Mozes i krace, bez provere da li taj EditBox postoji :

Code:
TEdit(FindComponent(Strings[1])).Text := Strings[2];


poz
[ sojic @ 31.10.2005. 15:12 ] @
Danke bite. Najverovatno to je to. Proveriću kasnije. Sad me delphi zeza (zajebo sam neku komponentu)

A dali ovo može da se koristi i za obične stringove. Primer:

Code:

var
    Ime: string;

begin
   Strings[1]:='Ime';
   FindComponent(Strings[1]) := Strings[2];
end;


[Ovu poruku je menjao sojic dana 31.10.2005. u 16:15 GMT+1]
[ reiser @ 31.10.2005. 17:38 ] @
Ne kontam te...
Ako mislis da stavis FindComponent('string'), sto ne bi moglo, i Strings[n] je tipa String :)
[ sojic @ 01.11.2005. 10:31 ] @
Nisi shvatio (ili nisam dobro objasnio).

Znači dali mogu FindComponent (ili sličnu funkciju) koristiti za pristup String promenljive, a ne komponente?

[ marcha @ 01.11.2005. 11:55 ] @
Ako sam te dobro razumeo trbalo bi da ti ovo resi problem, ako na formi imas kreirane TEdit-e edTrajko i edMuso.

Code:

procedure TForm1.FillEditBox;
var Objlist:TStrings;
    i:Integer;
begin
 Objlist:=TStringList.Create;
 try
  Objlist.AddObject('Trajkov text',edTrajko);
  Objlist.AddObject('Musov text',edMuso);
  for i:= 0 to Objlist.count-1 do
    TEdit(ObjList.Objects[i]).Text :=ObjList[i];
  finally
   ObjList.Free;
  end;
end;
[ sojic @ 01.11.2005. 12:11 ] @
Uf, nije to. Evo opširnije:

Nemam objekte. Imam string promenljive. I tom string promenljive da dodelim vrednost.

Umesto da imam dva TEdita:

Code:

TEdit(FindComponent('Ime')).Text = 'Neko ime';
TEdit(FindComponent('Prezime')).Text = 'Neko prezime';


hoću da imam dva stringa:
Code:

Ime:='Neko ime';
Prezime:='Neko prezime';


E sad... Kako da string promenljive "Ime" i "Prezime" pristupim na slični način ko u prvom primeru.

Code:

FindComponent('Ime'):='Neko ime';


ili

Code:

FindVariable('Ime'):='Neko ime';


A ovo rešenje mi se sviđa, ali za objekte.

[Ovu poruku je menjao sojic dana 01.11.2005. u 13:13 GMT+1]
[ marcha @ 01.11.2005. 13:31 ] @
Brate, malo si konfuzan :) , cas hoces objekte cas neces..
Code:

var Objlist:TStrings;
    i:Integer;
begin
 Objlist:=TStringList.Create;
 try
  ObjList.Values['Ime']:='Nikola';
  ObjList.Values['Prezime']:='Marcic';
  ShowMessage(ObjList.Text);//Sadrzaj liste
  ShowMessage(ObjList.ValueFromIndex[0]);//Vraca vrednost za Ime
  ShowMessage(ObjList.Values['Prezime'])//Vraca vrednost za Prezime;
  finally
   ObjList.Free;
  end;
end;
[ reiser @ 01.11.2005. 14:10 ] @
Ne moze to sa stringovima.
[ sojic @ 01.11.2005. 15:05 ] @
U principu trebaju mi objekte, ali kasnije palo mi na pamet šta ako promenljiva nije objekat nego običan string.

Hvala u svakom slučaju.