Как правильно получить значение элементов списка в Delphi

Прямо сейчас я использую следующий код, чтобы получить значение элементов ListView, и я хотел знать, был ли это правильный способ сделать это или я должен делать это по-другому.

Пример значения родительского элемента:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ListView1.Selected.Caption);
end;

Пример значения подэлемента:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ListView1.Selected.SubItems.Strings[items_index_here]);
end;

person avue    schedule 21.07.2012    source источник


Ответы (1)


Ваш первый код выглядит нормально, за исключением того, что вы должны сначала проверить, есть ли элемент Selected:

if Assigned(ListView1.Selected) then  // or ListView1.Selected <> nil
  ShowMessage(ListView1.Selected.Caption);

Ваш второй может быть упрощен (и должен включать ту же проверку, о которой я упоминал выше):

if Assigned(ListView1.Selected) then
  ShowMessage(ListView1.Selected.SubItems[Index]);

потомки TStrings (такие как TStringList и TListItem.SubItems) имеют свойства по умолчанию, что является сокращением от использования TStrings.Strings[Index]; вместо этого вы можете просто использовать TStrings[Index]. Вместо MyStringList.Strings[0] вы можете просто использовать MyStringList[0], и это также относится к таким вещам, как TMemo.Lines и TListItem.SubItems. Вам не нужен SubItems.Strings[Index], вы можете просто использовать SubItems[Index].

person Ken White    schedule 21.07.2012
comment
Приветствуется, и я выполняю проверку ошибок в своем производственном коде, я просто взбил приведенный выше код с головы до ног. - person avue; 21.07.2012