Lista do TListBox

0

Cześć, stworzyłem listę jednokierunkowa i chciałbym przenieść jej elementy do TListBox. W jaki sposób mógłbym to zrobić?

5

Iterując po węzłach listy i dodając do TListBox pozycja za pozycją, używając metody Add.

0
for i:=0 to list.count-1 do listbox.add(list.strings[i]);
3

@Windowbee: tutaj chodzi o skopiowanie zawartości listy jednokierunkowej do ListBox, czyli o iterowanie po węzłach i dodanie danych węzeł po węźle do kontrolki. Typowa konstrukcja takiej pętli wygląda tak:

var
  Node: TListNode;
begin
  ListBox.Clear();
  ListBox.Items.BeginUpdate();
  try
    Node := List.Head;

    while Node <> nil do
    begin
      ListBox.Items.Add(Node.Data);
      Node := Node.Next;
    end;
  finally
    ListBox.Items.EndUpdate();
  end;
end;

Przy założeniu, że lista jednokierunkowa o nazwie List posiada węzły hipotetycznego typu TListNode, posiada węzeł-głowę o nazwie Head oraz wskaźnik na kolejny węzeł o nazwie Next. Metody BeginUpdate i EndUpdate pozwalają efektywnie edytować zawartość komponentu w wielu krokach, nie powodując aktualizacji i odmalowania kontrolki po każdej zmianie (czyli pozwalają uniknąć migania komponentu).

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