[ xcsdsgn @ 11.08.2013. 16:25 ] @
Imam osam komponenti Tlabel kreiranih dinamicki.
Problem je u tome sto zelim da ih prikazem od najvece do najmanje vrednosti u svojstvu CAPTION 8,7,6,5,4,3,2,1 medjutim uvek bude od 1,2,3,4,5,6,7,8?

Code:
 

procedure TForm1.FormCreate(Sender: TObject);
var
  l: Integer;
begin
 for l := 8 downto 1 do
    begin
      with TLabel.Create(self) do
      begin
        Name := 'lbl' + IntToStr(l);
        Parent := Self;
        Caption :=  IntToStr(l);
        Top := 8;
        Left := l * 42;
      end;
    end;
  end;
end.



Na koji nacin mogu resiti problem i da dobijem : 8,7,6,5,4,3,2,1.
[ ((BugA)) @ 11.08.2013. 19:16 ] @
Rekao bih da ti je problem u ovoj liniji:
Code:
Left := l * 42;
Razlog je taj sto je 8*42 uvek 336, dok je npr. 7*42 = 294, tako da ce labela 8 uvek da bude desno (tj. "vise levo") od labele 7, bez obzira sto ti labele kreiras od 8 do 1. Kako je 1*42 = 42, labela "1" ce uvek biti prva (najmanje levo).

Resenja ima mnogo, jedno bi bilo da promenis tu liniju u:
Code:
Left := (9-l) * 42;

Onda bi imao da je (9-8)*42 = 42, dok bi (9-1)*42 bilo 336, pa bi labele bile poredjane od 8 do 1. Ovo nije najelegantnije, ali vrsi posao i moze ti dati ideju za neko malo lepse resenje :)
[ xcsdsgn @ 11.08.2013. 19:28 ] @
To je to.

Hvala :)