[ SFilip @ 03.02.2005. 12:38 ] @
postoji li nacin da odjednom koristim vise komponenti istog tipa u delphiju 7? primer:
imam 10 komponenti natpisa (Label) i svima bi hteo da im dam broj od 1 do 10 kao natpis. znaci ako su im na pocetku natpisi izgledali ovako:
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
pritiskom na jedno dugme treba da postanu ovakvi:
1
2
3
4
5
6
7
8
9
10
(ovo mi je u stvari potrebno za mnogo veci broj komponenti (nekoliko stotina, a mozda cak i hiljada), ali sam dao ovakav primer da ne bi morao da kucam 1000 natpisa...
da li je ovo moguce i kako to da potignem?
[ sasas @ 03.02.2005. 13:28 ] @
Ovaj primer ce uraditi tacno to sto si napisao. Sad ne znam koliko ce ti ovo pomoci, ali mislim da je priblizno tome sto trazis.

Code:

procedure TForm1.Button1Click(Sender: TObject);
var
  i, cnt: integer;
begin
  cnt := 0;
  for i := 0 to self.ComponentCount - 1 do
  begin
    if self.Components[i] is TLabel then TLabel(self.Components[i]).Caption := inttostr(cnt);
    Inc(cnt);
  end;
end;


ss.
[ SFilip @ 03.02.2005. 13:45 ] @
hvala brate
mozes li molim te da napises sta znace ove funkcije (nije toliko vazno, ali jos uvek proucavam delphi i pascal pa me zanima):
self.ComponentCount
self.Components
Inc()
[ broker @ 03.02.2005. 13:58 ] @
Univerzalno uputstvo:

- otvoris Delphi
- otvoris novi dokument ili ako vec radis na nekom udjes u njega
- u editoru napises ime funkcije, objekta, metoda ili sta god zelis
- kliknes misem na to tako da ostane kursor na otkucanom pojmu
- pritisnes F1

... i sve ti bude kazato.
[ sasas @ 03.02.2005. 14:08 ] @
Citat:

self.ComponentCount


ovo je iz helpa na tu temu:

Citat:
Within the implementation of a method, the identifier Self references the object in which the method is called.


U ovom konkretnom slucaju, self predstavlja formu na kojoj si. Recimo kad napises negde u formi Form1:

label1.caption := 'sasa';

mozes isto tako napisati

form1.label1.caption := 'sasa';

sto je isto kao

self.label1.caption := 'sasa';

Citat:

self.ComponentCount
self.Components


Dakle, dve osobine forme: prva govori koliko se na formi nalazi komponenti, a druga je lista komponenti. Tako sa self.components[0] dobijas prvu komponentu na formi.
Mogao sam napisati i

Form1.ComponentCount
Form1.Components

ali self je tako fensi ;) (a i korisna je stvar).

Citat:
Inc()


Inc(cnt); ti je isto sto i cnt := cnt + 1;

Inc je inace skracenica od 'Increment'.

ss.
[ bancika @ 03.02.2005. 14:18 ] @
mozda nisi znao i za TLabel(self.Components).Caption:
TLabel nije funkcija nego typecast, on govori da se prromenljiva (pokazivac) posmatra kao objekat tipa TLabel.
[ sasas @ 03.02.2005. 14:28 ] @
Citat:
mozda nisi znao i za TLabel(self.Components).Caption:


Do vraga, sta sam ja napisao drugacije? :)

Ako si mislio da se izbaci provera (is TLabel), to je dovelo do meni cudnog rezultata:

Code:

  for i := 0 to self.ComponentCount - 1 do
  begin
    TLabel(self.Components[i]).Caption := inttostr(cnt);
    Inc(cnt);
  end;


Kod je radio i kad su na formi bile i TEdit kontrole, iako one nemaju caption?! Lepo im se podesila Text osobina? Naravno, stvar se raspala (ocekivano) kad sam u igru ubacio i ListBox, ComboBox, menu i jos ponesto...


ss.

[ bancika @ 03.02.2005. 15:31 ] @
ne, reko sam njemu, jer nisam video da je objasnjen kast