Pętla: z listboxa do Edit

0

Witam
Napisałem taką procedurkę, która ma za zadanie wrzucić wszystkie itemy z Listbox do Edit, oddzielając średnikiem, ale podaje mi w Edit tylko ostatni item. Dlaczego?

procedure TForm1.Button2Click(Sender: TObject);
 var
    i: integer;
begin
     for i:=0 to Listbox1.Items.Count -1 do
     Edit2.Text:=Listbox1.Items.Strings[i]+' ; ';
end;
0

Edit2.Text:=Edit2.Text + Listbox1.Items.Strings[i]+' ; ';

0

Oj taki drobny szczegół. Dziękuję.

0

Drobna uwaga jeżeli w ListBox jest dużo pozycji to u mnie przy 1000 kod:

var
  i: Integer;
  txt: string;
  t: Cardinal;
begin
  for i:=1 to 1000 do
  begin
    txt:= IntToStr(i);
    ListBox1.Items.Add(txt);
  end;

  t:= GetTickCount; //początek mierzonego czasu

  for i:=0 to ListBox1.Items.Count -1 do
    Edit1.Text:=Edit1.Text + ListBox1.Items.Strings[i]+';';

  t:= GetTickCount - t; //koniec mierzonego czasu

  ShowMessage(IntToStr(t));
end;

wykonuje się ok 15ms natomiast w takiej postaci:

var
  i: Integer;
  txt: string;
  t: Cardinal;
begin
  for i:=1 to 1000 do
  begin
    txt:= IntToStr(i);
    ListBox1.Items.Add(txt);
  end;

  t:= GetTickCount;  //początek mierzonego czasu

  txt:='';
  for i:=0 to ListBox1.Items.Count -1 do
    txt:= txt + ListBox1.Items.Strings[i]+';';
  Edit1.Text:= txt;

  t:= GetTickCount - t; //koniec mierzonego czasu
  ShowMessage(IntToStr(t));
end;

poniżej 1ms więc lepiej niepotrzebnie nie modyfikować co chwilę tekstu kontrolki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1