Cześć, stworzyłem listę jednokierunkowa i chciałbym przenieść jej elementy do TListBox. W jaki sposób mógłbym to zrobić?
0
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).