[ sojic @ 20.09.2008. 19:02 ] @
Imam panel sa nekoliko SpinEdita. SpinEdit name idu: a34, a35, a36.... i tako dalje.

Kako da sa for ciklusu pristupim do svaki?

Pokusavao sam u stilu:

Code:

for i:=x to y do
   FindComponent('a'+inttostr(i) as TSpinEdit).Value = 2323;


I svakojake kombinacije sa FindComponent, ali ne radi.

Pomoc ako moze :(
[ 0rc @ 20.09.2008. 19:26 ] @
Verovatno treba
Code:

(FindComponent('a'+inttostr(i)) as TSpinEdit).Value := 2323;


Sta znaci da "ne radi"? Da li dobijes neki exception?
Takodje, vrednost ce automatski biti ogranicena [MinValue, MaxValue] opsegom. Proveri da te to ne ometa.
[ sojic @ 20.09.2008. 19:36 ] @
Ma pokusavao sam ShowMessage(IntToStr((FindComponent('a'+inttostr(i)) as TSpinEdit).Value)); i dobijem:

Project xxx raised exception class EConvertError with message ''' is not valid integer value'

Inace, sve SpinEdite imaju default vrednost 0.
[ savkic @ 20.09.2008. 20:20 ] @
> FindComponent('a'+inttostr(i) as TSpinEdit).Value = 2323;

Ne može tako.

TSpinEdit(FindComponent('a'+inttostr(i)).Value = 2323 ili
(FindComponent('a'+inttostr(i)) as TSpinEdit).Value = 2323.

> Ma pokusavao sam ShowMessage(IntToStr((FindComponent('a'+inttostr(i)) as TSpinEdit).Value)); i dobijem:
> Project xxx raised exception class EConvertError with message ''' is not valid integer value'

To znači da je pokušana konverzija stringa u Integer, npr. preko StrToInt, kako je ti ne pozivaš onda jedino da je poziva ta kontrola. Za početak proveri da li uopšte dobijaš nešto sa FindComponent.

Code:

var
  Temp: TSpinEdit;
begin
  Temp := TSpinEdit(FindComponent('a4'));
  if Assigned(Temp) then
   ...
end;

[ sojic @ 20.09.2008. 20:30 ] @
E sad se nista ne desava. Ne dobijem Showmessage.
[ savkic @ 20.09.2008. 21:17 ] @
> E sad se nista ne desava. Ne dobijem Showmessage.

Šta hoćeš da kažeš da uslov Assigned(Temp) nije ispunjen? To znači da FindComponent nije našla tu komponentu, verovatno pogrešan naziv ili forma nije njen Owner.
[ 0rc @ 20.09.2008. 21:20 ] @
Ok, to znaci da 1) ime nije dobro, 2) forma sa koje pozivas FindComponent nije Owner tih SpinEdit kontrola ili 3) greskom pozivas FindComponent metod neke druge komponente (a ne forme), sto je moguce ako si npr. u nekom with bloku.

[ sojic @ 22.09.2008. 17:56 ] @
SpinEdit se nalaze u panelu. Dali mozda treba da pozovem FindComponent od panela?
[ Rapaic Rajko @ 22.09.2008. 22:10 ] @
sojic, daj naziv metode iz koje pozivas gornji kod...

Rajko
[ 0rc @ 23.09.2008. 08:14 ] @
Citat:
sojic: SpinEdit se nalaze u panelu. Dali mozda treba da pozovem FindComponent od panela?


Ne, osim ako nisi u kodu rucno podesio da Owner za SpinEdit kontrole bude panel.. Ako se ne varam, podrazumevano ponasanje za komponente koje se postavljaju u form designer-u je da im je forma Owner, bez obzira na panele, box-ove i slicno.