Lista do TListBox

Rysiek Flak
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
5

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

WI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
0
Kopiuj
for i:=0 to list.count-1 do listbox.add(list.strings[i]);
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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:

Kopiuj
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).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.